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>