| #set ($db = $table.Database) |
| #if ($db.Package) |
| #set ($package = $db.Package) |
| #else |
| #set ($package = $targetPackage) |
| #end |
| package ${package}; |
| |
| #if ($table.BaseClass == "") |
| #set ($extendsBaseClass = "" ) |
| #else |
| #set ($extendsBaseClass = "extends $table.BaseClass" ) |
| #end |
| |
| import java.util.*; |
| import java.math.*; |
| import org.apache.turbine.om.*; |
| import org.apache.turbine.om.peer.BasePeer; |
| import org.apache.turbine.util.db.Criteria; |
| #if ($addSaveMethod) |
| import org.apache.turbine.util.ObjectUtils; |
| #end |
| import org.apache.turbine.util.StringUtils; |
| import org.apache.turbine.util.ParameterParser; |
| import org.apache.turbine.util.Log; |
| import org.apache.turbine.util.db.pool.DBConnection; |
| #if (!$complexObjectModel) |
| import org.apache.turbine.services.db.TurbineDB; |
| #end |
| |
| /** |
| #if ($addTimeStamp) |
| * This class was autogenerated by Torque on: |
| * |
| * [$now] |
| * |
| #end |
| * You should not use this class directly. It should not even be |
| * extended all references should be to $table.JavaName |
| */ |
| public abstract class $basePrefix$table.JavaName $extendsBaseClass |
| implements Retrievable |
| { |
| #if (!$table.isAlias()) |
| #foreach ($col in $table.Columns) |
| #set ( $cjtype = $col.JavaNative ) |
| #set ( $clo=$col.Name.toLowerCase() ) |
| #set ($defVal = "") |
| #if ($col.DefaultValue && !$col.DefaultValue.equalsIgnoreCase("NULL") ) |
| #set ( $quote = '' ) |
| #if ( $cjtype == "String" ) |
| #set ( $quote = '"' ) |
| #end |
| #set ( $defaultValue = $col.DefaultValue ) |
| #if ( $cjtype == "boolean" ) |
| #if ( $defaultValue == "1" || $defaultValue == "Y" ) |
| #set ( $defaultValue = "true" ) |
| #elseif ( $defaultValue == "0" || $defaultValue == "N" ) |
| #set ( $defaultValue = "false" ) |
| #end |
| #end |
| #if ($cjtype == "BigDecimal") |
| #set ($defVal = "= new BigDecimal($defaultValue)") |
| #else |
| #set ($defVal = "=$quote$defaultValue$quote") |
| #end |
| #end |
| /** the value for the $clo field */ |
| private $cjtype $clo$defVal; |
| #end |
| |
| |
| #foreach ($col in $table.Columns) |
| #set ( $cfc=$col.JavaName ) |
| #set ( $clo=$col.Name.toLowerCase() ) |
| #set ( $cjtype = $col.JavaNative ) |
| /** |
| * Get the $cfc |
| * @return $cjtype |
| */ |
| public $cjtype get${cfc}() |
| { |
| return $clo; |
| } |
| |
| #set ( $throwsClause = "" ) |
| #if ($complexObjectModel) |
| #if ($col.isForeignKey()) |
| #set ( $throwsClause = "throws Exception" ) |
| #end |
| #if ( $col.Referrers.size() > 0 ) |
| #if ($throwsClause == "") |
| #set ( $throwsClause = "throws Exception" ) |
| #end |
| #end |
| #end |
| |
| /** |
| * Set the value of $cfc |
| */ |
| public void set${cfc}($cjtype v ) $throwsClause |
| { |
| #if ($complexObjectModel) |
| #if ($col.isForeignKey()) |
| #set ( $tmp = $col.RelatedTableName ) |
| #set ( $tblFK = $table.Database.getTable($tmp) ) |
| #set ( $colFK = $tblFK.getColumn($col.RelatedColumnName) ) |
| #if ($col.isMultipleFK()) |
| #set ( $varName = $strings.concat(["a", $tblFK.JavaName, "RelatedBy", $col.JavaName]) ) |
| #elseif ($tmp.equals($table.Name)) |
| #set ( $varName = $strings.concat(["a", $tblFK.JavaName, "RelatedBy", $col.JavaName]) ) |
| #else |
| #set ( $varName = $strings.concat(["a", $tblFK.JavaName]) ) |
| #end |
| $varName = null; |
| #end |
| |
| #foreach ($fk in $col.Referrers) |
| #set ( $fkColName = $fk.ForeignLocalMapping.get($col.Name) ) |
| #set ( $tblFK = $fk.Table ) |
| #if ( !($tblFK.Name.equals($table.Name)) ) |
| |
| #set ( $colFK = $tblFK.getColumn($fkColName) ) |
| |
| #if ($colFK.isMultipleFK()) |
| #set ( $collName = $strings.concat(["coll", $tblFK.JavaName, "sRelatedBy", $colFK.JavaName]) ) |
| #else |
| #set ( $collName = $strings.concat(["coll", $tblFK.JavaName, "s"]) ) |
| #end |
| |
| // update associated $tblFK.JavaName |
| if ($collName != null ) |
| { |
| for (int i=0; i<${collName}.size(); i++) |
| { |
| ((${tblFK.JavaName})${collName}.get(i)) |
| .set${colFK.JavaName}(v); |
| } |
| } |
| #end |
| #end |
| #end |
| |
| #if ($addSaveMethod) |
| |
| #if ( ($cjtype == "int") || ($cjtype == "long") || ($cjtype == "boolean") |
| || ($cjtype == "short") || ($cjtype == "float") || ($cjtype == "double") |
| || ($cjtype == "char") || ($cjtype == "byte") ) |
| if (this.$clo != v) |
| { |
| #else |
| if ( !ObjectUtils.equals(this.$clo, v) ) |
| { |
| #end |
| #if ( ($cjtype == "NumberKey") |
| || ($cjtype == "StringKey") |
| || ($cjtype == "DateKey") ) |
| if (this.$clo == null) |
| { |
| this.$clo = new $cjtype(v); |
| } |
| else |
| { |
| this.${clo}.setValue(v); |
| } |
| #else |
| this.$clo = v; |
| #end |
| setModified(true); |
| } |
| #else |
| this.$clo = v; |
| #end |
| } |
| |
| ##if ($complexObjectModel) |
| #if ($col.isPrimaryKey() || $col.isForeignKey()) |
| /** |
| * Set the value of $cfc as a string. |
| */ |
| public void set${cfc}(String v ) $throwsClause |
| { |
| set${cfc}(new ${cjtype}(v)); |
| } |
| #end |
| ##end |
| |
| #end |
| #end |
| |
| ##association code |
| |
| #if ($complexObjectModel) |
| #foreach ($fk in $table.ForeignKeys) |
| |
| #set ( $tmp = $fk.ForeignTableName ) |
| #set ( $tblFK = $table.Database.getTable($tmp) ) |
| #set ( $className = $tblFK.JavaName ) |
| |
| #set ( $relCol = "" ) |
| #foreach ($columnName in $fk.LocalColumns) |
| #set ( $column = $table.getColumn($columnName) ) |
| #if ($column.isMultipleFK()) |
| #set ( $relCol = $strings.concat([$relCol, $column.JavaName]) ) |
| #elseif ($tmp.equals($table.Name)) |
| #set ( $relCol = $strings.concat([$relCol, $column.JavaName]) ) |
| #end |
| #end |
| |
| #if ($relCol != "") |
| #set ( $relCol = $strings.concat(["RelatedBy", $relCol]) ) |
| #end |
| |
| #set ( $pVarName = $strings.concat([$className, $relCol]) ) |
| #set ( $varName = $strings.concat(["a", $pVarName]) ) |
| |
| private $className $varName; |
| |
| /** |
| * Declares an association between this object and a $className object |
| * |
| * @param $className v |
| */ |
| public void set${pVarName}($className v) throws Exception |
| { |
| #foreach ($columnName in $fk.LocalColumns) |
| #set ( $column = $table.getColumn($columnName) ) |
| #set ( $colFKName = $fk.LocalForeignMapping.get($columnName) ) |
| #set ( $colFK = $tblFK.getColumn($colFKName) ) |
| set${column.JavaName}(v.get${colFK.JavaName}()); |
| #end |
| $varName = v; |
| } |
| |
| #set ( $and = "" ) |
| #set ( $comma = "" ) |
| #set ( $conditional = "" ) |
| #set ( $arglist = "" ) |
| #foreach ($columnName in $fk.LocalColumns) |
| #set ( $column = $table.getColumn($columnName) ) |
| #set ( $cjtype = $column.JavaNative ) |
| #set ( $clo=$column.Name.toLowerCase() ) |
| #if ($cjtype == "int") |
| #set ( $conditional = $strings.concat([$conditional, $and, "this.", $clo, ">0"]) ) |
| #elseif ($cjtype == "long") |
| #set ( $conditional = $strings.concat([$conditional, $and, "this.", $clo, ">0"]) ) |
| #elseif ($cjtype == "short") |
| #set ( $conditional = $strings.concat([$conditional, $and, "this.", $clo, ">0"]) ) |
| #else |
| #set ( $conditional = $strings.concat([$conditional, $and, "!ObjectUtils.equals(this.", $clo, ", null)"]) ) |
| #end |
| #set ( $arglist = $strings.concat([$arglist, $comma, "this.", $clo]) ) |
| #set ( $and = " && " ) |
| #set ( $comma = ", " ) |
| #end |
| #set ( $pCollName = $strings.concat([$table.JavaName, "s", $relCol]) ) |
| |
| public $className get${pVarName}() throws Exception |
| { |
| if ( $varName==null && ($conditional) ) |
| { |
| $varName = ${className}Peer.retrieveByPK($arglist); |
| // The following can be used instead of the line above to |
| // guarantee the related object contains a reference |
| // to this object, but this level of coupling |
| // may be undesirable in many circumstances. |
| // As it can lead to a db query with many results that may |
| // never be used. |
| // $className obj = ${className}Peer.retrieveByPK($arglist); |
| // obj.add${pCollName}(this); |
| } |
| return $varName; |
| } |
| |
| |
| /** |
| * Provides convenient way to set a relationship based on a |
| * ObjectKey. e.g. |
| * <code>bar.setFooKey(foo.getPrimaryKey())</code> |
| * |
| #if ($fk.LocalColumns.size() > 1) |
| * Note: It is important that the xml schema used to create this class |
| * maintains consistency in the order of related columns between |
| * $table.Name and ${tblFK.Name}. |
| * If for some reason this is impossible, this method should be |
| * overridden in <code>$table.JavaName</code>. |
| #end |
| */ |
| public void set${pVarName}Key(ObjectKey key) throws Exception |
| { |
| #if ($fk.LocalColumns.size() > 1) |
| SimpleKey[] keys = (SimpleKey[])key.getValue(); |
| #set ($i = 0) |
| #foreach ($colName in $fk.LocalColumns) |
| #set ($col = $table.getColumn($colName) ) |
| set${col.JavaName}(($col.JavaNative)keys[$i]); |
| #set ( $i = $i + 1 ) |
| #end |
| #else |
| #set ($colName = $fk.LocalColumns.get(0)) |
| #set ($col = $table.getColumn($colName) ) |
| set${col.JavaName}(($col.JavaNative)key); |
| #end |
| } |
| |
| #end ## end of foreach loop over foreign keys |
| |
| ## |
| ## setup foreign key associations |
| ## |
| #foreach ($fk in $table.Referrers) |
| #set ( $tblFK = $fk.Table ) |
| #if ( !($tblFK.Name.equals($table.Name)) ) |
| #set ( $className = $tblFK.JavaName ) |
| #set ( $relatedByCol = "" ) |
| #foreach ($columnName in $fk.LocalColumns) |
| #set ( $column = $tblFK.getColumn($columnName) ) |
| #if ($column.isMultipleFK()) |
| #set ($relatedByCol=$strings.concat([$relatedByCol,$column.JavaName])) |
| #end |
| #end |
| |
| #if ($relatedByCol == "") |
| #set ( $suffix = "" ) |
| #set ( $relCol = $strings.concat([$className, "s"]) ) |
| #set ( $relColMs = $className ) |
| #else |
| #set ( $suffix = $strings.concat(["RelatedBy", $relatedByCol]) ) |
| #set ( $relCol=$strings.concat([$className,"sRelatedBy",$relatedByCol])) |
| #set ( $relColMs=$strings.concat([$className,"RelatedBy",$relatedByCol])) |
| #end |
| #set ( $collName = $strings.concat(["coll", $relCol]) ) |
| |
| /** |
| * Collection to store aggregation of $collName |
| */ |
| protected Vector $collName; |
| /** |
| * Temporary storage of $collName to save a possible db hit in |
| * the event objects are add to the collection, but the |
| * complete collection is never requested. |
| */ |
| // private Vector temp$collName; |
| |
| protected void init${relCol}() |
| { |
| if ($collName == null) |
| $collName = new Vector(); |
| } |
| |
| /** |
| * Method called to associate a $tblFK.JavaName object to this object |
| * through the $className foreign key attribute |
| * |
| * @param $className l |
| */ |
| public void add${relColMs}($className l) throws Exception |
| { |
| /* |
| if ($collName == null) |
| { |
| if (temp$collName == null) |
| { |
| temp$collName = new Vector(); |
| } |
| temp${collName}.add(l); |
| } |
| else |
| { |
| ${collName}.add(l); |
| } |
| */ |
| get${relCol}().add(l); |
| l.set${table.JavaName}${suffix}(($table.JavaName)this); |
| } |
| |
| /** |
| * The criteria used to select the current contents of $collName |
| */ |
| private Criteria last${relCol}Criteria = null; |
| |
| /** |
| * If this collection has already been initialized, returns |
| * the collection. Otherwise returns the results of |
| * get${relCol}(new Criteria()) |
| */ |
| public Vector get${relCol}() throws Exception |
| { |
| if ($collName == null) |
| { |
| $collName = get${relCol}(new Criteria(10)); |
| } |
| return $collName; |
| } |
| |
| /** |
| * If this collection has already been initialized with |
| * an identical criteria, it returns the collection. |
| * Otherwise if this $table.JavaName has previously |
| * been saved, it will retrieve related ${relCol} from storage. |
| * If this $table.JavaName is new, it will return |
| * an empty collection or the current collection, the criteria |
| * is ignored on a new object. |
| */ |
| public Vector get${relCol}(Criteria criteria) throws Exception |
| { |
| if ($collName == null) |
| { |
| if ( isNew() ) |
| { |
| $collName = new Vector(); |
| } |
| else |
| { |
| #foreach ($columnName in $fk.ForeignColumns) |
| #set ( $column = $table.getColumn($columnName) ) |
| #set ( $colFKName = $fk.ForeignLocalMapping.get($columnName) ) |
| #set ( $colFK = $tblFK.getColumn($colFKName) ) |
| criteria.add(${className}Peer.${colFK.Name.toUpperCase()}, get${column.JavaName}() ); |
| #end |
| $collName = ${className}Peer.doSelect(criteria); |
| } |
| /* |
| if (temp$collName != null) |
| { |
| for (int i=0; i<temp${collName}.size(); i++) |
| { |
| ${collName}.add(temp${collName}.get(i)); |
| } |
| temp$collName = null; |
| } |
| */ |
| } |
| else |
| { |
| // criteria has no effect for a new object |
| if ( !isNew() ) |
| { |
| // the following code is to determine if a new query is |
| // called for. If the criteria is the same as the last |
| // one, just return the collection. |
| #foreach ($columnName in $fk.ForeignColumns) |
| #set ( $column = $table.getColumn($columnName) ) |
| #set ( $colFKName = $fk.ForeignLocalMapping.get($columnName) ) |
| #set ( $colFK = $tblFK.getColumn($colFKName) ) |
| criteria.add(${className}Peer.${colFK.Name.toUpperCase()}, get${column.JavaName}() ); |
| #end |
| if ( !last${relCol}Criteria.equals(criteria) ) |
| { |
| $collName = ${className}Peer.doSelect(criteria); |
| } |
| } |
| } |
| last${relCol}Criteria = criteria; |
| |
| return $collName; |
| } |
| #set ( $countFK = 0 ) |
| #foreach ($dummyFK in $tblFK.ForeignKeys) |
| #set ( $countFK = $countFK + 1 ) |
| #end |
| |
| ## ------------------------------------------------------------ |
| ## |
| |
| #if ($countFK >= 1) |
| #set ( $lastTable = "" ) |
| #foreach ($fk2 in $tblFK.ForeignKeys) |
| |
| ## Add join methods if the fk2 table is not this table or |
| ## the fk2 table references this table multiple times. |
| |
| #set ( $doJoinGet = true ) |
| #if ( $fk2.ForeignTableName.equals($table.Name) ) |
| #set ( $doJoinGet = false ) |
| #end |
| |
| #foreach ($columnName in $fk2.LocalColumns) |
| #set ( $column = $tblFK.getColumn($columnName) ) |
| #if ($column.isMultipleFK()) |
| #set ( $doJoinGet = true ) |
| #end |
| #end |
| |
| #set ( $tblFK2 = $table.Database.getTable($fk2.ForeignTableName) ) |
| #set ( $relatedByCol2 = "" ) |
| #foreach ($columnName in $fk2.LocalColumns) |
| #set ( $column = $tblFK.getColumn($columnName) ) |
| #if ($column.isMultipleFK()) |
| #set($relatedByCol2=$strings.concat([$relatedByCol2,$column.JavaName])) |
| #end |
| #end |
| |
| #set ( $fkClassName = $tblFK2.JavaName ) |
| ## do not generate code for self-referencing fk's, it would be |
| ## good to do, but it is just not implemented yet. |
| #if ($className == $fkClassName) |
| #set ( $doJoinGet = false ) |
| #end |
| |
| #if ($relatedByCol2 == "") |
| #set ( $relCol2 = $fkClassName ) |
| #else |
| #set ($relCol2=$strings.concat([$fkClassName,"RelatedBy",$relatedByCol2])) |
| #end |
| |
| #if ( $relatedByCol == "") |
| #else |
| #if ( $relatedByCol.equals($relatedByCol2) ) |
| #set ( $doJoinGet = false ) |
| #end |
| #end |
| |
| #if ($doJoinGet) |
| |
| /** |
| * If this collection has already been initialized with |
| * an identical criteria, it returns the collection. |
| * Otherwise if this $table.JavaName is new, it will return |
| * an empty collection; or if this $table.JavaName has previously |
| * been saved, it will retrieve related ${relCol} from storage. |
| */ |
| protected Vector get${relCol}Join${relCol2}(Criteria criteria) |
| throws Exception |
| { |
| if ($collName == null) |
| { |
| if ( isNew() ) |
| { |
| $collName = new Vector(); |
| } |
| else |
| { |
| #foreach ($columnName in $fk.ForeignColumns) |
| #set ( $column = $table.getColumn($columnName) ) |
| #set ( $colFKName = $fk.ForeignLocalMapping.get($columnName) ) |
| #set ( $colFK = $tblFK.getColumn($colFKName) ) |
| criteria.add(${className}Peer.${colFK.Name.toUpperCase()}, get${column.JavaName}() ); |
| #end |
| $collName = ${className}Peer.doSelectJoin${relCol2}(criteria); |
| } |
| |
| #* /* |
| if (temp$collName != null) |
| { |
| for (int i=0; i<temp${collName}.size(); i++) |
| { |
| ${collName}.add(temp${collName}.get(i)); |
| } |
| temp$collName = null; |
| } |
| */ *# |
| } |
| else |
| { |
| // the following code is to determine if a new query is |
| // called for. If the criteria is the same as the last |
| // one, just return the collection. |
| boolean newCriteria = true; |
| #foreach ($columnName in $fk.ForeignColumns) |
| #set ( $column = $table.getColumn($columnName) ) |
| #set ( $colFKName = $fk.ForeignLocalMapping.get($columnName) ) |
| #set ( $colFK = $tblFK.getColumn($colFKName) ) |
| criteria.add(${className}Peer.${colFK.Name.toUpperCase()}, get${column.JavaName}() ); |
| #end |
| if ( !last${relCol}Criteria.equals(criteria) ) |
| { |
| $collName = ${className}Peer.doSelectJoin${relCol2}(criteria); |
| } |
| } |
| last${relCol}Criteria = criteria; |
| |
| return $collName; |
| } |
| #end #end #end #end |
| |
| ## =========================================================== |
| #* |
| #if ($countFK > 2) |
| |
| /** |
| * If this collection has already been initialized with |
| * an identical criteria, it returns the collection. |
| * Otherwise if this $table.JavaName is new, it will return |
| * an empty collection; or if this $table.JavaName has previously |
| * been saved, it will retrieve related ${relCol} from storage. |
| */ |
| protected Vector get${relCol}JoinAllExcept${table.JavaName}(Criteria criteria) |
| throws Exception |
| { |
| if ($collName == null) |
| { |
| if ( isNew() ) |
| { |
| $collName = new Vector(); |
| } |
| else |
| { |
| #foreach ($columnName in $fk.ForeignColumns) |
| #set ( $column = $table.getColumn($columnName) ) |
| #set ( $colFKName = $fk.ForeignLocalMapping.get($columnName) ) |
| #set ( $colFK = $tblFK.getColumn($colFKName) ) |
| criteria.add(${className}Peer.${colFK.Name.toUpperCase()}, get${column.JavaName}() ); |
| #end |
| $collName = ${className}Peer.doSelectJoinAllExcept${table.JavaName}${suffix}(criteria); |
| } |
| /* |
| if (temp$collName != null) |
| { |
| for (int i=0; i<temp${collName}.size(); i++) |
| { |
| ${collName}.add(temp${collName}.get(i)); |
| } |
| temp$collName = null; |
| } |
| */ |
| } |
| else |
| { |
| // the following code is to determine if a new query is |
| // called for. If the criteria is the same as the last |
| // one, just return the collection. |
| boolean newCriteria = true; |
| #foreach ($columnName in $fk.ForeignColumns) |
| #set ( $column = $table.getColumn($columnName) ) |
| #set ( $colFKName = $fk.ForeignLocalMapping.get($columnName) ) |
| #set ( $colFK = $tblFK.getColumn($colFKName) ) |
| criteria.add(${className}Peer.${colFK.Name.toUpperCase()}, get${column.JavaName}() ); |
| #end |
| if ( !last${relCol}Criteria.equals(criteria) ) |
| { |
| $collName = ${className}Peer.doSelectJoinAllExcept${table.JavaName}${suffix}(criteria); |
| } |
| } |
| last${relCol}Criteria = criteria; |
| |
| return $collName; |
| } |
| |
| #end |
| |
| *# |
| ## ------------------------------------------------------------ |
| |
| |
| #end ## ends foreach over table.Referrers |
| |
| #end ##ends the if(complexObjectModel) |
| |
| ## |
| ## getByName code |
| ## |
| #if (!$table.isAlias() && $addGetByNameMethod) |
| private static Vector fieldNames_ = null; |
| |
| /** |
| * Generate a list of field names. |
| */ |
| public static synchronized List getFieldNames() |
| { |
| if (fieldNames_ == null) |
| { |
| fieldNames_ = new Vector(); |
| #foreach ($col in $table.Columns) |
| fieldNames_.add("${col.JavaName}"); |
| #end |
| } |
| return fieldNames_; |
| } |
| |
| /** |
| * Retrieves a field from the object by name passed in |
| * as a String. |
| */ |
| public Object getByName(String name) |
| { |
| #foreach ($col in $table.Columns) |
| #set ( $cfc = $col.JavaName ) |
| #set ( $cjtype = $col.JavaNative ) |
| if (name.equals("${col.JavaName}")) |
| { |
| #if ($cjtype == "int") |
| return new Integer(get${cfc}()); |
| #elseif ($cjtype == "long") |
| return new Long(get${cfc}()); |
| #elseif ($cjtype == "float") |
| return new Float(get${cfc}()); |
| #elseif ($cjtype == "double") |
| return new Double(get${cfc}()); |
| #elseif ($cjtype == "boolean") |
| return new Boolean(get${cfc}()); |
| #elseif ($cjtype == "short") |
| return new Short(get${cfc}()); |
| #elseif ($cjtype == "byte") |
| return new Byte(get${cfc}()); |
| #elseif ($cjtype == "char") |
| return new Character(get${cfc}()); |
| #else |
| return get${cfc}(); |
| #end |
| } |
| #end |
| return null; |
| } |
| /** |
| * Retrieves a field from the object by name passed in |
| * as a String. The String must be one of the static |
| * Strings defined in this Class' Peer. |
| */ |
| public Object getByPeerName(String name) |
| { |
| #foreach ($col in $table.Columns) |
| #set ( $cfc = $col.JavaName ) |
| #set ( $cup=$col.Name.toUpperCase() ) |
| #set ( $cjtype = $col.JavaNative ) |
| if (name.equals(${table.JavaName}Peer.$cup )) |
| { |
| #if ($cjtype == "int") |
| return new Integer(get${cfc}()); |
| #elseif ($cjtype == "long") |
| return new Long(get${cfc}()); |
| #elseif ($cjtype == "float") |
| return new Float(get${cfc}()); |
| #elseif ($cjtype == "double") |
| return new Double(get${cfc}()); |
| #elseif ($cjtype == "boolean") |
| return new Boolean(get${cfc}()); |
| #elseif ($cjtype == "short") |
| return new Short(get${cfc}()); |
| #elseif ($cjtype == "byte") |
| return new Byte(get${cfc}()); |
| #elseif ($cjtype == "char") |
| return new Character(get${cfc}()); |
| #else |
| return get${cfc}(); |
| #end |
| } |
| #end |
| return null; |
| } |
| |
| /** |
| * Retrieves a field from the object by Position as specified |
| * in the xml schema. Zero-based. |
| */ |
| public Object getByPosition(int pos) |
| { |
| #set ($i = 0) |
| #foreach ($col in $table.Columns) |
| #set ( $cfc = $col.JavaName ) |
| #set ( $cjtype = $col.JavaNative ) |
| if ( pos == $i ) |
| { |
| #if ($cjtype == "int") |
| return new Integer(get${cfc}()); |
| #elseif ($cjtype == "long") |
| return new Long(get${cfc}()); |
| #elseif ($cjtype == "float") |
| return new Float(get${cfc}()); |
| #elseif ($cjtype == "double") |
| return new Double(get${cfc}()); |
| #elseif ($cjtype == "boolean") |
| return new Boolean(get${cfc}()); |
| #elseif ($cjtype == "short") |
| return new Short(get${cfc}()); |
| #elseif ($cjtype == "byte") |
| return new Byte(get${cfc}()); |
| #elseif ($cjtype == "char") |
| return new Character(get${cfc}()); |
| #else |
| return get${cfc}(); |
| #end |
| } |
| #set ($i = $i + 1) |
| #end |
| return null; |
| } |
| |
| #end ## ends the if(addGetByNameMethod) |
| |
| |
| #if (!$table.isAlias() && $addSaveMethod) |
| /** |
| * Stores the object in the database. If the object is new, |
| * it inserts it; otherwise an update is performed. |
| */ |
| public void save() throws Exception |
| { |
| #if ($complexObjectModel) |
| save(${table.JavaName}Peer.getMapBuilder() |
| .getDatabaseMap().getName()); |
| #else |
| if (isModified()) |
| { |
| if (isNew()) |
| { |
| ${table.JavaName}Peer.doInsert(($table.JavaName)this); |
| setNew(false); |
| } |
| else |
| { |
| ${table.JavaName}Peer.doUpdate(($table.JavaName)this); |
| } |
| } |
| #end |
| } |
| |
| /** |
| * Stores the object in the database. If the object is new, |
| * it inserts it; otherwise an update is performed. |
| */ |
| public void save(String dbName) throws Exception |
| { |
| DBConnection dbCon = null; |
| #if ($complexObjectModel) |
| try |
| { |
| dbCon = BasePeer.beginTransaction(dbName); |
| save(dbCon); |
| } |
| catch(Exception e) |
| { |
| BasePeer.rollBackTransaction(dbCon); |
| throw e; |
| } |
| BasePeer.commitTransaction(dbCon); |
| |
| #else |
| |
| if (isModified()) |
| { |
| try |
| { |
| dbCon = TurbineDB.getConnection( dbName ); |
| if (isNew()) |
| { |
| ${table.JavaName}Peer |
| .doInsert(($table.JavaName)this, dbCon); |
| setNew(false); |
| } |
| else |
| { |
| ${table.JavaName}Peer |
| .doUpdate(($table.JavaName)this, dbCon); |
| } |
| } |
| finally |
| { |
| TurbineDB.releaseConnection(dbCon); |
| } |
| } |
| |
| #end |
| } |
| |
| #if ($complexObjectModel) |
| // flag to prevent endless save loop, if this object is referenced |
| // by another object which falls in this transaction. |
| private boolean alreadyInSave = false; |
| #end |
| /** |
| * Stores the object in the database. If the object is new, |
| * it inserts it; otherwise an update is performed. This method |
| * is meant to be used as part of a transaction, otherwise use |
| * the save() method and the connection details will be handled |
| * internally |
| */ |
| public void save(DBConnection dbCon) throws Exception |
| { |
| #if ($complexObjectModel) |
| if (!alreadyInSave) |
| { |
| alreadyInSave = true; |
| #end |
| if (isModified()) |
| { |
| if (isNew()) |
| { |
| ${table.JavaName}Peer.doInsert(($table.JavaName)this, dbCon); |
| setNew(false); |
| } |
| else |
| { |
| ${table.JavaName}Peer.doUpdate(($table.JavaName)this, dbCon); |
| } |
| } |
| |
| #if ($complexObjectModel) |
| #foreach ($fk in $table.Referrers) |
| #set ( $tblFK = $fk.Table ) |
| #if ( !($tblFK.Name.equals($table.Name)) ) |
| #set ( $className = $tblFK.JavaName ) |
| #set ( $relCol = "" ) |
| #foreach ($columnName in $fk.LocalColumns) |
| #set ( $column = $tblFK.getColumn($columnName) ) |
| #if ($column.isMultipleFK()) |
| #set ( $relCol = $strings.concat([$relCol, $column.JavaName]) ) |
| #end |
| #end |
| |
| #if ($relCol == "") |
| #set ( $relCol = $strings.concat([$className, "s"]) ) |
| #else |
| #set ( $relCol = $strings.concat([$className, "sRelatedBy", $relCol]) ) |
| #end |
| #set ( $collName = $strings.concat(["coll", $relCol]) ) |
| |
| if ($collName != null ) |
| { |
| for (int i=0; i<${collName}.size(); i++) |
| { |
| ((${className})${collName}.get(i)).save(dbCon); |
| } |
| } |
| #end |
| #end |
| #end |
| #if ($complexObjectModel) |
| alreadyInSave = false; |
| } |
| #end |
| } |
| #end |
| |
| ## PrimaryKey methods |
| #if (!$table.isAlias()) |
| |
| #set ( $throwsClause = "" ) |
| #set ( $argList = "" ) |
| #set ( $argList2 = "" ) |
| #set ( $comma = "" ) |
| #foreach ($col in $table.PrimaryKeys) |
| #if ($complexObjectModel) |
| #if ( $col.isForeignKey() || ($col.Referrers.size() > 0) ) |
| #set ( $throwsClause = "throws Exception" ) |
| #end |
| #end |
| |
| #set ( $clo=$col.Name.toLowerCase() ) |
| #set ( $cjtype = $col.JavaNative ) |
| #set ($argList = "${argList}$comma $cjtype $clo") |
| #set ($argList2 = "${argList2}$comma String $clo") |
| |
| #set ( $comma = "," ) |
| #end |
| |
| #if ($table.PrimaryKeys.size() == 1) |
| |
| #set ($col = $table.PrimaryKeys.get(0) ) |
| #set ( $clo=$col.Name.toLowerCase() ) |
| #set ( $cjtype= $col.JavaNative ) |
| /** |
| * Set the PrimaryKey using ObjectKey. |
| * |
| * @param ObjectKey $clo |
| */ |
| public void setPrimaryKey(ObjectKey $clo) |
| $throwsClause { |
| set${col.JavaName}(($cjtype)$clo); |
| } |
| |
| /** |
| * Set the PrimaryKey using a String. |
| */ |
| public void setPrimaryKey(String key) $throwsClause |
| { |
| set${col.JavaName}(new ${cjtype}(key) ); |
| } |
| |
| #elseif ($table.PrimaryKeys.size() > 1) |
| |
| private final SimpleKey[] pks = new SimpleKey[$table.PrimaryKeys.size()]; |
| private final ComboKey comboPK = new ComboKey(pks); |
| /** |
| * Set the PrimaryKey with an ObjectKey |
| */ |
| public void setPrimaryKey(ObjectKey key) throws Exception |
| { |
| SimpleKey[] keys = (SimpleKey[])key.getValue(); |
| #set ($i = 0) |
| #foreach ($pk in $table.PrimaryKeys) |
| set${pk.JavaName}(($pk.JavaNative)keys[$i]); |
| #set ( $i = $i + 1 ) |
| #end |
| } |
| |
| /** |
| * Set the PrimaryKey using SimpleKeys. |
| * |
| #foreach ($col in $table.PrimaryKeys) |
| #set ( $clo=$col.Name.toLowerCase() ) |
| #set ( $cjtype= $col.JavaNative ) |
| * @param $cjtype $clo |
| #end |
| */ |
| public void setPrimaryKey($argList) |
| $throwsClause { |
| #foreach ($col in $table.PrimaryKeys) |
| set${col.JavaName}($col.Name.toLowerCase()); |
| #end |
| } |
| |
| /** |
| * Set the PrimaryKey with Strings. |
| * |
| #foreach ($col in $table.PrimaryKeys) |
| #set ( $clo=$col.Name.toLowerCase() ) |
| * @param String $clo |
| #end |
| */ |
| public void setPrimaryKey($argList2) |
| $throwsClause { |
| #foreach ($col in $table.PrimaryKeys) |
| set${col.JavaName}(new ${col.JavaNative}($col.Name.toLowerCase())); |
| #end |
| } |
| |
| /** |
| * Set the PrimaryKey using a String. |
| */ |
| public void setPrimaryKey(String key) throws Exception |
| { |
| int prevPos = 0; |
| |
| #set ($int = "int ") |
| #foreach ($col in $table.PrimaryKeys) |
| ${int}colonPos = key.indexOf(':', prevPos); |
| set${col.JavaName}( new ${col.JavaNative}(key.substring(prevPos, colonPos)) ); |
| prevPos = colonPos + 1; |
| #set ($int = "") |
| #end |
| } |
| |
| #end |
| |
| |
| /** |
| * returns an id that differentiates this object from others |
| * of its class. |
| */ |
| public ObjectKey getPrimaryKey() |
| { |
| #if ($table.PrimaryKeys.size() == 1) |
| return get${table.PrimaryKeys.get(0).JavaName}(); |
| #elseif ($table.PrimaryKeys.size() > 1) |
| #set ($i = 0) |
| #foreach ($pk in $table.PrimaryKeys) |
| pks[$i] = get${pk.JavaName}(); |
| #set ($i = $i +1) |
| #end |
| return comboPK; |
| #else |
| return getPrimaryKey(); |
| #end |
| } |
| |
| #end ##ends if(!$table.isAlias()) |
| |
| /** |
| * get an id that differentiates this object from others |
| * of its class. |
| */ |
| public String getQueryKey() |
| { |
| if (getPrimaryKey() == null) |
| { |
| return ""; |
| } |
| else |
| { |
| return getPrimaryKey().toString(); |
| } |
| } |
| |
| /** |
| * set an id that differentiates this object from others |
| * of its class. |
| */ |
| public void setQueryKey(String key) |
| throws Exception |
| { |
| setPrimaryKey(key); |
| } |
| |
| #if (!$table.isAlias()) |
| /** |
| * Makes a copy of this object. |
| * It creates a new object filling in the simple attributes. |
| #if ($complexObjectModel) |
| * It then fills all the association collections and sets the |
| * related objects to isNew=true. |
| #end |
| */ |
| #if ($table.ChildrenColumn || $table.isAbstract()) |
| public $table.JavaName copyInto($table.JavaName copyObj) throws Exception |
| { |
| #else |
| public $table.JavaName copy() throws Exception |
| { |
| $table.JavaName copyObj = new ${table.JavaName}(); |
| #end |
| #foreach ($col in $table.Columns) |
| copyObj.set${col.JavaName}($col.Name.toLowerCase()); |
| #end |
| |
| #if ($complexObjectModel) |
| |
| #set ( $list = "List " ) |
| #foreach ($fk in $table.Referrers) |
| #set ( $tblFK = $fk.Table ) |
| #if ( !($tblFK.Name.equals($table.Name)) ) |
| #set ( $className = $tblFK.JavaName ) |
| #set ( $relCol = "" ) |
| #foreach ($columnName in $fk.LocalColumns) |
| #set ( $column = $tblFK.getColumn($columnName) ) |
| #if ($column.isMultipleFK()) |
| #set ( $relCol = $strings.concat([$relCol, $column.JavaName]) ) |
| #end |
| #end |
| |
| #if ($relCol == "") |
| #set ( $pCollName = $strings.concat([$className, "s"]) ) |
| #else |
| #set ( $pCollName = $strings.concat([$className, "sRelatedBy", $relCol]) ) |
| #end |
| |
| ${list}v = copyObj.get${pCollName}(); |
| for (int i=0; i<v.size(); i++) |
| { |
| ((Persistent)v.get(i)).setNew(true); |
| } |
| #set ( $list = "" ) |
| #end |
| #end |
| #end |
| |
| #foreach ($col in $table.Columns) |
| #if ($col.isPrimaryKey()) |
| #set ( $pkid = "null" ) |
| #set ( $cjtype = $col.JavaNative ) |
| copyObj.set${col.JavaName}((${cjtype})${pkid}); |
| #end |
| #end |
| return copyObj; |
| } |
| #end |
| } |
| |