You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@turbine.apache.org by jm...@apache.org on 2001/12/27 19:28:59 UTC

cvs commit: jakarta-turbine-torque/src/templates/om Object.vm Peer.vm

jmcnally    01/12/27 10:28:59

  Modified:    src/dtd  database.dtd
               src/java/org/apache/torque/engine/database/model Column.java
                        Database.java TypeMap.java
               src/templates/om Object.vm Peer.vm
  Log:
  changes to allow non-primitive java types to be used.  the default can be given
  on the database and it can be overridden on a per column basis.
  
  Revision  Changes    Path
  1.9       +3 -1      jakarta-turbine-torque/src/dtd/database.dtd
  
  Index: database.dtd
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-torque/src/dtd/database.dtd,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- database.dtd	2001/12/18 23:25:06	1.8
  +++ database.dtd	2001/12/27 18:28:59	1.9
  @@ -1,6 +1,6 @@
   <!--
       Torque XML database schema DTD
  -    $Id: database.dtd,v 1.8 2001/12/18 23:25:06 mpoeschl Exp $
  +    $Id: database.dtd,v 1.9 2001/12/27 18:28:59 jmcnally Exp $
   -->
   
   <!--
  @@ -35,6 +35,7 @@
   <!ATTLIST database
     name CDATA #IMPLIED
     defaultIdMethod (idbroker|native|autoincrement|sequence|none) "none"
  +  defaultJavaType (object|primitive) "primitive"
     package CDATA #IMPLIED
     baseClass CDATA #IMPLIED
     basePeer CDATA #IMPLIED
  @@ -78,6 +79,7 @@
           | BLOB | CLOB    | REF         | BOOLEANINT | BOOLEANCHAR
           | DOUBLE
       ) "VARCHAR"
  +  javaType (object|primitive) #IMPLIED
     size CDATA #IMPLIED
     default CDATA #IMPLIED
     autoIncrement (true|false) "false"
  
  
  
  1.17      +41 -5     jakarta-turbine-torque/src/java/org/apache/torque/engine/database/model/Column.java
  
  Index: Column.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-torque/src/java/org/apache/torque/engine/database/model/Column.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- Column.java	2001/12/18 23:25:06	1.16
  +++ Column.java	2001/12/27 18:28:59	1.17
  @@ -71,7 +71,7 @@
    * @author <a href="mailto:jon@latchkey.com">Jon S. Stevens</a>
    * @author <a href="mailto:dlr@finemaltcoding.com">Daniel Rall</a>
    * @author <a href="mailto:byron_foster@byron_foster@yahoo.com>Byron Foster</a>
  - * @version $Id: Column.java,v 1.16 2001/12/18 23:25:06 mpoeschl Exp $
  + * @version $Id: Column.java,v 1.17 2001/12/27 18:28:59 jmcnally Exp $
    */
   public class Column
   {
  @@ -82,6 +82,7 @@
       private boolean isNotNull = false;
       private String size;
       private String torqueType;
  +    private String javaType;
       private Object columnType;
       private Table parentTable;
       private int position;
  @@ -155,6 +156,11 @@
           name = attrib.getValue("name");
   
           javaName = attrib.getValue("javaName");
  +        javaType = attrib.getValue("javaType");
  +        if ( javaType != null && javaType.length() == 0 ) 
  +        {
  +            javaType = null;
  +        }        
   
           // retrieves the method for converting from specified name to
           // a java name.
  @@ -273,6 +279,13 @@
           this.javaName = javaName;
       }
   
  +    /**
  +     * Get type to use in Java sources
  +     */
  +    public String getJavaType()
  +    {
  +        return javaType;
  +    }
   
       /**
        * Get the location of this column within the table (one-based).
  @@ -768,7 +781,12 @@
        */
       public String getJavaNative()
       {
  -        String jtype = TypeMap.getJavaNative(torqueType);
  +        String jtype = TypeMap.getJavaNativeObject(torqueType);
  +        if ( isUsePrimitive() ) 
  +        {
  +            jtype = TypeMap.getJavaNative(torqueType);
  +        }
  +        
           if ( isPrimaryKey() || isForeignKey() )
           {
               if ( jtype.equals("String") )
  @@ -785,11 +803,16 @@
                         || jtype.equals("BigDecimal")
                         || jtype.equals("byte")
                         || jtype.equals("float")
  -                      || jtype.equals("double") )
  +                      || 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;
  @@ -801,7 +824,12 @@
        */
       public String getVillageMethod()
       {
  -        String vmethod = TypeMap.getVillageMethod(torqueType);
  +        String vmethod = TypeMap.getVillageObjectMethod(torqueType);
  +        if ( isUsePrimitive() ) 
  +        {
  +            vmethod = TypeMap.getVillageMethod(torqueType);
  +        }
  +
           String jtype = TypeMap.getJavaNative(torqueType);
           if ( isPrimaryKey() || isForeignKey() )
           {
  @@ -860,5 +888,13 @@
               || "float".equals(t)
               || "double".equals(t)
               || "char".equals(t);
  +    }
  +
  +    public boolean isUsePrimitive()
  +    {
  +        String s = getJavaType();
  +        return (s != null && s.equals("primitive")) 
  +            || (s == null && !"object".equals(
  +               getTable().getDatabase().getDefaultJavaType())); 
       }
   }
  
  
  
  1.10      +11 -1     jakarta-turbine-torque/src/java/org/apache/torque/engine/database/model/Database.java
  
  Index: Database.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-torque/src/java/org/apache/torque/engine/database/model/Database.java,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- Database.java	2001/12/26 22:24:43	1.9
  +++ Database.java	2001/12/27 18:28:59	1.10
  @@ -78,7 +78,7 @@
    * @author <a href="mailto:mpoeschl@marmot.at>Martin Poeschl</a>
    * @author <a href="mailto:dlr@collab.net>Daniel Rall</a>
    * @author <a href="mailto:byron_foster@byron_foster@yahoo.com>Byron Foster</a>
  - * @version $Id: Database.java,v 1.9 2001/12/26 22:24:43 jmcnally Exp $
  + * @version $Id: Database.java,v 1.10 2001/12/27 18:28:59 jmcnally Exp $
    */
   public class Database
   {
  @@ -90,6 +90,7 @@
       private String baseClass;
       private String basePeer;
       private String defaultIdMethod;
  +    private String defaultJavaType;
       private String defaultJavaNamingMethod;
       private AppData dbParent;
       private Hashtable tablesByName = new Hashtable();
  @@ -112,6 +113,7 @@
           pkg = attrib.getValue("package");
           baseClass = attrib.getValue("baseClass");
           basePeer = attrib.getValue("basePeer");
  +        defaultJavaType = attrib.getValue("defaultJavaType");
           defaultIdMethod = attrib.getValue("defaultIdMethod");
           defaultJavaNamingMethod = attrib.getValue("defaultJavaNamingMethod");
           if (defaultJavaNamingMethod == null)
  @@ -216,6 +218,14 @@
       public void setDefaultIdMethod(String  v)
       {
           this.defaultIdMethod = v;
  +    }
  +
  +    /**
  +     * Get type to use in Java sources (primitive || object)
  +     */
  +    public String getDefaultJavaType()
  +    {
  +        return defaultJavaType;
       }
   
       /**
  
  
  
  1.4       +103 -11   jakarta-turbine-torque/src/java/org/apache/torque/engine/database/model/TypeMap.java
  
  Index: TypeMap.java
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-torque/src/java/org/apache/torque/engine/database/model/TypeMap.java,v
  retrieving revision 1.3
  retrieving revision 1.4
  diff -u -r1.3 -r1.4
  --- TypeMap.java	2001/11/24 17:53:09	1.3
  +++ TypeMap.java	2001/12/27 18:28:59	1.4
  @@ -84,14 +84,14 @@
    * LONGVARCHAR   | String               | String
    * NUMERIC       | java.math.BigDecimal | java.math.BigDecimal
    * DECIMAL       | java.math.BigDecimal | java.math.BigDecimal
  - * BIT           | boolean              | Boolean
  - * TINYINT       | byte                 | Byte
  - * SMALLINT      | short                | Short
  - * INTEGER       | int                  | Integer
  - * BIGINT        | long                 | Long
  - * REAL          | float                | Float
  - * FLOAT         | double               | Double
  - * DOUBLE        | double               | Double
  + * BIT           | boolean OR Boolean   | Boolean
  + * TINYINT       | byte OR Byte         | Byte
  + * SMALLINT      | short OR Short       | Short
  + * INTEGER       | int OR Integer       | Integer
  + * BIGINT        | long OR Long         | Long
  + * REAL          | float OR Float       | Float
  + * FLOAT         | double OR Double     | Double
  + * DOUBLE        | double OR Double     | Double
    * BINARY        | byte[]               | ?
    * VARBINARY     | byte[]               | ?
    * LONGVARBINARY | byte[]               | ?
  @@ -102,12 +102,12 @@
    * -------------------------------------------------------
    * A couple variations have been introduced to cover cases
    * that may arise, but are not covered above
  - * BOOLEANCHAR   | boolean              | String
  - * BOOLEANINT    | boolean              | Integer
  + * BOOLEANCHAR   | boolean OR Boolean   | String
  + * BOOLEANINT    | boolean OR Boolean   | Integer
    * </pre>
    *
    * @author <a href="mailto:jvanzyl@apache.org">Jason van Zyl</a>
  - * @version $Id: TypeMap.java,v 1.3 2001/11/24 17:53:09 mpoeschl Exp $
  + * @version $Id: TypeMap.java,v 1.4 2001/12/27 18:28:59 jmcnally Exp $
    */
   public class TypeMap
   {
  @@ -188,6 +188,17 @@
       public static final String BOOLEANCHAR_NATIVE_TYPE = "boolean";
       public static final String BOOLEANINT_NATIVE_TYPE = "boolean";
   
  +    public static final String BIT_NATIVE_OBJECT_TYPE = "Boolean";
  +    public static final String TINYINT_NATIVE_OBJECT_TYPE = "Byte";
  +    public static final String SMALLINT_NATIVE_OBJECT_TYPE = "Short";
  +    public static final String INTEGER_NATIVE_OBJECT_TYPE = "Integer";
  +    public static final String BIGINT_NATIVE_OBJECT_TYPE = "Long";
  +    public static final String REAL_NATIVE_OBJECT_TYPE = "Float";
  +    public static final String FLOAT_NATIVE_OBJECT_TYPE = "Double";
  +    public static final String DOUBLE_NATIVE_OBJECT_TYPE = "Double";
  +    public static final String BOOLEANCHAR_NATIVE_OBJECT_TYPE = "Boolean";
  +    public static final String BOOLEANINT_NATIVE_OBJECT_TYPE = "Boolean";
  +
       public static final String CHAR_VILLAGE_METHOD = "asString()";
       public static final String VARCHAR_VILLAGE_METHOD = "asString()";
       public static final String LONGVARCHAR_VILLAGE_METHOD = "asString()";
  @@ -212,6 +223,17 @@
       public static final String BOOLEANCHAR_VILLAGE_METHOD = "asString()";
       public static final String BOOLEANINT_VILLAGE_METHOD = "asInt()";
   
  +    public static final String BIT_VILLAGE_OBJECT_METHOD = "asBooleanObj()";
  +    public static final String TINYINT_VILLAGE_OBJECT_METHOD = "asByteObj()";
  +    public static final String SMALLINT_VILLAGE_OBJECT_METHOD = "asShortObj()";
  +    public static final String INTEGER_VILLAGE_OBJECT_METHOD = "asIntegerObj()";
  +    public static final String BIGINT_VILLAGE_OBJECT_METHOD = "asLongObj()";
  +    public static final String REAL_VILLAGE_OBJECT_METHOD = "asFloatObj()";
  +    public static final String FLOAT_VILLAGE_OBJECT_METHOD = "asDoubleObj()";
  +    public static final String DOUBLE_VILLAGE_OBJECT_METHOD = "asDoubleObj()";
  +    public static final String BOOLEANINT_VILLAGE_OBJECT_METHOD = 
  +        "asIntegerObj()";
  +
       public static final String CHAR_PP_METHOD = "getString(ppKey)";
       public static final String VARCHAR_PP_METHOD = "getString(ppKey)";
       public static final String LONGVARCHAR_PP_METHOD = "getString(ppKey)";
  @@ -236,7 +258,9 @@
   
       private static Hashtable jdbcToJavaObjectMap = null;
       private static Hashtable jdbcToJavaNativeMap = null;
  +    private static Hashtable jdbcToJavaNativeObjectMap = null;
       private static Hashtable jdbcToVillageMethodMap = null;
  +    private static Hashtable jdbcToVillageObjectMethodMap = null;
       private static Hashtable jdbcToPPMethodMap = null;
       private static Hashtable torqueTypeToJdbcTypeMap = null;
       private static Hashtable jdbcToTorqueTypeMap = null;
  @@ -310,6 +334,20 @@
               jdbcToJavaNativeMap.put(BOOLEANCHAR, BOOLEANCHAR_NATIVE_TYPE);
               jdbcToJavaNativeMap.put(BOOLEANINT, BOOLEANINT_NATIVE_TYPE);
   
  +            jdbcToJavaNativeObjectMap = new Hashtable();
  +            jdbcToJavaNativeObjectMap.put(BIT, BIT_NATIVE_OBJECT_TYPE);
  +            jdbcToJavaNativeObjectMap.put(TINYINT, TINYINT_NATIVE_OBJECT_TYPE);
  +            jdbcToJavaNativeObjectMap.put(SMALLINT, SMALLINT_NATIVE_OBJECT_TYPE);
  +            jdbcToJavaNativeObjectMap.put(INTEGER, INTEGER_NATIVE_OBJECT_TYPE);
  +            jdbcToJavaNativeObjectMap.put(BIGINT, BIGINT_NATIVE_OBJECT_TYPE);
  +            jdbcToJavaNativeObjectMap.put(REAL, REAL_NATIVE_OBJECT_TYPE);
  +            jdbcToJavaNativeObjectMap.put(FLOAT, FLOAT_NATIVE_OBJECT_TYPE);
  +            jdbcToJavaNativeObjectMap.put(DOUBLE, DOUBLE_NATIVE_OBJECT_TYPE);
  +            jdbcToJavaNativeObjectMap.put(BOOLEANCHAR, 
  +                                          BOOLEANCHAR_NATIVE_OBJECT_TYPE);
  +            jdbcToJavaNativeObjectMap.put(BOOLEANINT, 
  +                                          BOOLEANINT_NATIVE_OBJECT_TYPE);
  +
               /*
                * Create JDBC -> Village asX() mappings.
                */
  @@ -340,6 +378,24 @@
               jdbcToVillageMethodMap.put(BOOLEANCHAR, BOOLEANCHAR_VILLAGE_METHOD);
               jdbcToVillageMethodMap.put(BOOLEANINT, BOOLEANINT_VILLAGE_METHOD);
   
  +
  +            jdbcToVillageObjectMethodMap = new Hashtable();
  +            jdbcToVillageObjectMethodMap.put(BIT, BIT_VILLAGE_OBJECT_METHOD);
  +            jdbcToVillageObjectMethodMap.put(TINYINT, 
  +                                             TINYINT_VILLAGE_OBJECT_METHOD);
  +            jdbcToVillageObjectMethodMap.put(SMALLINT, 
  +                                             SMALLINT_VILLAGE_OBJECT_METHOD);
  +            jdbcToVillageObjectMethodMap.put(INTEGER, 
  +                                             INTEGER_VILLAGE_OBJECT_METHOD);
  +            jdbcToVillageObjectMethodMap.put(BIGINT, 
  +                                             BIGINT_VILLAGE_OBJECT_METHOD);
  +            jdbcToVillageObjectMethodMap.put(REAL, REAL_VILLAGE_OBJECT_METHOD);
  +            jdbcToVillageObjectMethodMap.put(FLOAT, FLOAT_VILLAGE_OBJECT_METHOD);
  +            jdbcToVillageObjectMethodMap.put(DOUBLE, 
  +                                             DOUBLE_VILLAGE_OBJECT_METHOD);
  +            jdbcToVillageObjectMethodMap.put(BOOLEANINT, 
  +                                             BOOLEANINT_VILLAGE_OBJECT_METHOD);
  +
               /*
                * Create JDBC -> ParameterParser getX() mappings.
                */
  @@ -464,6 +520,24 @@
       }
   
       /**
  +     * Return native java type which corresponds to the
  +     * JDBC type provided. Use in the base object class generation.
  +     */
  +    public static String getJavaNativeObject(String jdbcType)
  +    {
  +        // Make sure the we are initialized.
  +        if (isInitialized == false)
  +            initialize();
  +        
  +        String s = (String)jdbcToJavaNativeObjectMap.get(jdbcType);
  +        if ( s == null ) 
  +        {
  +            s = (String)jdbcToJavaNativeMap.get(jdbcType); 
  +        }
  +        return s;
  +    }
  +
  +    /**
        * Return Village asX() method which corresponds to the
        * JDBC type provided. Use in the Peer class generation.
        */
  @@ -474,6 +548,24 @@
               initialize();
   
           return (String) jdbcToVillageMethodMap.get(jdbcType);
  +    }
  +
  +    /**
  +     * Return Village asX() method which corresponds to the
  +     * JDBC type provided. Use in the Peer class generation.
  +     */
  +    public static String getVillageObjectMethod(String jdbcType)
  +    {
  +        // Make sure the we are initialized.
  +        if (isInitialized == false)
  +            initialize();
  +
  +        String s = (String)jdbcToVillageObjectMethodMap.get(jdbcType);
  +        if ( s == null ) 
  +        {
  +            s = (String)jdbcToVillageMethodMap.get(jdbcType); 
  +        }
  +        return s;
       }
   
       /**
  
  
  
  1.18      +4 -1      jakarta-turbine-torque/src/templates/om/Object.vm
  
  Index: Object.vm
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-torque/src/templates/om/Object.vm,v
  retrieving revision 1.17
  retrieving revision 1.18
  diff -u -r1.17 -r1.18
  --- Object.vm	2001/12/27 17:18:14	1.17
  +++ Object.vm	2001/12/27 18:28:59	1.18
  @@ -56,7 +56,7 @@
               #set ( $quote = '"' )
             #end
             #set ( $defaultValue = $col.DefaultValue )
  -          #if ( $cjtype == "boolean" )
  +          #if ( $cjtype == "boolean" || $cjtype == "Boolean" )
               #if ( $defaultValue == "1" || $defaultValue == "Y" )
                 #set ( $defaultValue = "true" )
               #elseif ( $defaultValue == "0" || $defaultValue == "N" )
  @@ -72,6 +72,9 @@
                 #set ( $quote = '"' )
                 #set ($defVal = "= new StringKey($quote$defaultValue$quote)")
             #else
  +              #if (!$col.isPrimitive() && $cjtype != "String")
  +                  #set ( $defaultValue = "new ${cjtype}($defaultValue)" )
  +              #end
                 #set ($defVal = "=$quote$defaultValue$quote")
             #end            
           #end
  
  
  
  1.13      +4 -1      jakarta-turbine-torque/src/templates/om/Peer.vm
  
  Index: Peer.vm
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-torque/src/templates/om/Peer.vm,v
  retrieving revision 1.12
  retrieving revision 1.13
  diff -u -r1.12 -r1.13
  --- Peer.vm	2001/12/10 02:59:54	1.12
  +++ Peer.vm	2001/12/27 18:28:59	1.13
  @@ -298,9 +298,12 @@
               #if ($col.isBooleanChar())
               obj.set${col.JavaName}
                   ("Y".equals(row.getValue(offset+$n).$col.VillageMethod));
  -            #elseif ($col.isBooleanInt())
  +            #elseif ($col.isBooleanInt() && $col.isUsePrimitive())
               obj.set${col.JavaName}
                   (1 == row.getValue(offset+$n).$col.VillageMethod);
  +            #elseif ($col.isBooleanInt())
  +            obj.set${col.JavaName}(new Boolean(
  +                1 == row.getValue(offset+$n).${col.VillageMethod}.intValue()));
               #else
                   #if ($col.isPrimaryKey() || $col.isForeignKey() )
               obj.set${col.JavaName}(
  
  
  

--
To unsubscribe, e-mail:   <ma...@jakarta.apache.org>
For additional commands, e-mail: <ma...@jakarta.apache.org>