That would be wonderful!  I tried to make the same change, and got totally
lost.  For me, 2 things would make Torque close to perfect:  caching (which
I know is being looked at) and no primitive data types!

Would this type of change be rolled into the new decoupled Torque or would
it wait until T3?

For me, the sooner it is part of a "standard" distribution the better.

Eric

-----Original Message-----
From: John McNally [mailto:[EMAIL PROTECTED]]
Sent: Thursday, November 29, 2001 11:35 AM
To: Turbine Developers List
Subject: Re: NULL values with Torque and Village


Please supply diff's of the form given by cvs diff -u

john mcnally

Patrick Tonidandel wrote:
> 
> Dear Gentlemen,
> 
> some Days ago I tried to contact you regarding a problem with Village.
> I am speaking about the case if a column of my database contains a native
> value like
> int, short, byte, float or double that is NULL.
> 
> In this special case the Peers-classes generated with Torque return 0
> (zero).
> 
> This was not correct enough for my application, so I asked how to modify
the
> different
> layers.
> 
> In the meantime i made following modifications to village-1.5.3-dev.jar
> and torque-1.0.jar. I send you the modified files as attachment and in the
> following lines
> i try to describe you briefly what i made:
> 
> IMPORTANT !
> Following modifications where made not only to the int-nativetype but to
all
> other native types
> (short, long, byte, float double) as well. Now i mention just the
> modifications to 'int' for simplicity.
> 
> -       (Project Village) Class Value was altered to contain a new method
called
> Value.asIntegerObj();
> 
>     public Integer asIntegerObj() throws DataSetException
>     {
>         try
>         {
>             if (isNull())
>                 return null;
>             else if (isInt())
>                 return ((Integer) valueObject);
>             else if (isString() || isDouble() || isFloat() ||
isBigDecimal()
> ||
>                     isLong() || isShort() || isByte() )
>                 return new Integer (asString());
>             else
>                 return null;
>         }
>         catch (Exception e)
>         {
>             throw new DataSetException("Illegal conversion: " +
>                     e.toString());
>         }
>     }
> 
> -       (Project Torque) Torque uses the new created
village-1.5.3-devModified.jar
> .
> 
>         TypeMap.java has to be modified so that the new "asIntegerObj()"
method
> will be used in the
>         generation:
> 
>             public static final String INTEGER_VILLAGE_METHOD =
"asIntegerObj()";
> 
>         The Hashtable jdbcToJavaNativeMap in TypeMap.java now is mapping
> Object-types instead of         native-types.
> 
>             public static final String INTEGER_NATIVE_TYPE = "Integer";
> 
>         Column.java has to be modified like follows:
>         -       The method getJavaNative() should map objecttype Integer
to Numberkey.
>         -       The method getVillageMethod has been modified also.
> 
>         Column.java ---------------------------------------- > code
> 
>     public String getJavaNative()
>     {
>         String jtype = TypeMap.getJavaNative(torqueType);
>         if ( isPrimaryKey() || isForeignKey() )
>         {
>             if ( jtype.equals("String") )
>             {
>                 jtype = "StringKey";
>             }
>             else if ( jtype.equals("Date") )
>             {
>                 jtype = "DateKey";
>             }
>             else if ( jtype.equals("short")
>                       || jtype.equals("int")
>                       || jtype.equals("long")
>                       || jtype.equals("BigDecimal")
>                       || jtype.equals("byte")
>                       || jtype.equals("float")
>                       || jtype.equals("double")
>                       || jtype.equals("Short")
>                       || jtype.equals("Integer")
>                       || jtype.equals("Long")
>                       || jtype.equals("Byte")
>                       || jtype.equals("Float")
>                       || jtype.equals("Double") )
>             {
>                 jtype = "NumberKey";
>             }
> 
>         }
> 
>         return jtype;
>     }
> 
>     public String getVillageMethod()
>     {
>         String vmethod = TypeMap.getVillageMethod(torqueType);
>         String jtype = TypeMap.getJavaNative(torqueType);
>         if ( isPrimaryKey() || isForeignKey() )
>         {
>             if ( jtype.equals("short")
>                  || jtype.equals("int")
>                  || jtype.equals("long")
>                  || jtype.equals("byte")
>                  || jtype.equals("float")
>                  || jtype.equals("double")
>                  || jtype.equals("Short")
>                  || jtype.equals("Integer")
>                  || jtype.equals("Long")
>                  || jtype.equals("Byte")
>                  || jtype.equals("Float")
>                  || jtype.equals("Double") )
>             {
>                 vmethod = "asBigDecimal()";
>             }
>         }
>         return vmethod;
>     }
>         Column.java     ----------------------------------------------- <
code
> 
> -       Now we can generate the jar file of Torque and include it in our
projects
> and generate the new
>         Peer-Classes. The get- and set-Methods now will deal with
Object-datatypes
> instead of native-      datatypes.
> 
> I hope that this information can be usefull for a patch.
> 
> Regards
> Patrick Tonidandel
> 
>   ------------------------------------------------------------------------
>                   Name: Column.java
>    Column.java    Type: JavaScript Program (application/x-javascript)
>               Encoding: quoted-printable
> 
>                  Name: Value.java
>    Value.java    Type: JavaScript Program (application/x-javascript)
>              Encoding: quoted-printable
> 
>                    Name: TypeMap.java
>    TypeMap.java    Type: JavaScript Program (application/x-javascript)
>                Encoding: quoted-printable
> 
>   ------------------------------------------------------------------------
> --
> To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
> For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>

--
To unsubscribe, e-mail:
<mailto:[EMAIL PROTECTED]>
For additional commands, e-mail:
<mailto:[EMAIL PROTECTED]>

--
To unsubscribe, e-mail:   <mailto:[EMAIL PROTECTED]>
For additional commands, e-mail: <mailto:[EMAIL PROTECTED]>

Reply via email to