#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.torque.Torque;
import org.apache.torque.om.*;
import org.apache.torque.util.BasePeer;
import org.apache.torque.util.Criteria;
import java.sql.Connection;
#if ($addSaveMethod)
import org.apache.commons.util.ObjectUtils;
#end
#if ($addIntakeRetrievable)
import org.apache.fulcrum.intake.Retrievable;
#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
#if ($addIntakeRetrievable)
implements Retrievable
#end
{
/** The Peer class */
private static final ${table.JavaName}Peer peer =
new ${table.JavaName}Peer();
#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" || $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)")
#elseif ($cjtype == "NumberKey")
#set ( $quote = '"' )
#set ($defVal = "= new NumberKey($quote$defaultValue$quote)")
#elseif ($cjtype == "StringKey")
#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
/**
* 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 ( ($cjtype == "NumberKey")
|| ($cjtype == "StringKey")
|| ($cjtype == "DateKey") )
if (v != null && v.getValue() == null)
{
// If this is an Objectkey than this set method is
// probably storing the id of this object or some
// associated object. If the objectKey value is null
// then we convert the parameter to null so that this
// property is consistently null to indicate that no
// object is associated or defined.
v = null;
}
#end
#if ($complexObjectModel)
#if ($col.isForeignKey())
#set ( $tblFK = $table.Database.getTable($col.RelatedTableName) )
#set ( $colFK = $tblFK.getColumn($col.RelatedColumnName) )
#if ($col.isMultipleFK() || $col.RelatedTableName.equals($table.Name))
#set ( $varName = "a${tblFK.JavaName}RelatedBy$col.JavaName" )
#else
#set ( $varName = "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 = "coll${tblFK.JavaName}sRelatedBy$colFK.JavaName" )
#else
#set ( $collName = "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
this.$clo = v;
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)
#set($pVars = []) ## Array of object set method names for later reference.
#set($aVars = []) ## Array of object field names for later reference.
#foreach ($fk in $table.ForeignKeys)
#set ( $tblFK = $table.Database.getTable($fk.ForeignTableName) )
#set ( $className = $tblFK.JavaName )
#set ( $relCol = "" )
#foreach ($columnName in $fk.LocalColumns)
#set ( $column = $table.getColumn($columnName) )
#if ($column.isMultipleFK() || $fk.ForeignTableName.equals($table.Name))
#set ( $relCol = "$relCol$column.JavaName" )
#end
#end
#if ($relCol != "")
#set ( $relCol = "RelatedBy$relCol" )
#end
#set ( $pVarName = "$className$relCol" )
#set ( $varName = "a$pVarName" )
#set ( $retVal = $pVars.add($pVarName) )
#set ( $retVal = $aVars.add($varName) )
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 == "short" || $cjtype == "int" || $cjtype == "long")
#set ( $conditional = "$conditional${and}this.${clo}>0" )
#else
#set ( $conditional = "$conditional${and}!ObjectUtils.equals(this.${clo}, null)" )
#end
#set ( $arglist = "$arglist${comma}this.$clo" )
#set ( $and = " && " )
#set ( $comma = ", " )
#end
#set ( $pCollName = "${table.JavaName}s$relCol" )
public $className get${pVarName}() throws Exception
{
if ( $varName==null && ($conditional) )
{
#if ($tblFK.isAlias())
$varName = ${className}Peer.retrieve${className}ByPK($arglist);
#else
$varName = ${className}Peer.retrieveByPK($arglist);
#end
/* 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.
* bar.setFooKey(foo.getPrimaryKey())
*
#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 $table.JavaName
.
#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= "$relatedByCol$column.JavaName")
#end
#end
#if ($relatedByCol == "")
#set ( $suffix = "" )
#set ( $relCol = "${className}s" )
#set ( $relColMs = $className )
#else
#set ( $suffix = "RelatedBy$relatedByCol" )
#set ( $relCol= "${className}sRelatedBy$relatedByCol" )
#set ( $relColMs= "${className}RelatedBy$relatedByCol" )
#end
#set ( $collName = "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.
*/
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
{
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);
}
}
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 = "$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 = "${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.
*
* This method is protected by default in order to keep the public
* api reasonable. You can provide public methods for those you
* actually need in ${table.JavaName}.
*/
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);
}
}
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.
*
* This method is protected by default in order to keep the public
* api reasonable. You can provide public methods for those you
* actually need in ${table.JavaName}.
*/
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);
}
}
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.
#if ($complexObjectModel)
* Note: this code is here because the method body is
* auto-generated conditionally and therefore needs to be
* in this file instead of in the super class, BaseObject.
#end
*/
public void save(String dbName) throws Exception
{
Connection con = null;
#if ($complexObjectModel)
try
{
con = BasePeer.beginTransaction(dbName);
save(con);
}
catch(Exception e)
{
BasePeer.rollBackTransaction(con);
throw e;
}
BasePeer.commitTransaction(con);
#else
if (isModified())
{
try
{
con = BasePeer.getConnection( dbName );
if (isNew())
{
${table.JavaName}Peer
.doInsert(($table.JavaName)this, con);
setNew(false);
}
else
{
${table.JavaName}Peer
.doUpdate(($table.JavaName)this, con);
}
}
finally
{
BasePeer.closeConnection(con);
}
}
#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(Connection con) throws Exception
{
#if ($complexObjectModel)
if (!alreadyInSave)
{
alreadyInSave = true;
#* FIXME! the following code can cause an infinite loop, needs more thought
shows the infinite loop: System.out.println("Entering save for " + this);
#if ($pVars.size() != 0)
// We call the save method on the following object(s) if they
// were passed to this object by their coresponding set
// method. This object relates to these object(s) by a
// foreign key reference. If the object(s) being saved were
// new to the database, an insert was performed, then they may
// have a new PrimaryKey. We call the coresponding set method
// for the given object(s) to set this object's Id reference
// to this new Primary key so that it will be saved.
#foreach ($aVarName in $aVars)
#set($i = $velocityCount - 1)
if ($aVarName != null)
{
${aVarName}.save(con);
set$pVars.get($i)($aVarName);
}
#end
#end
*#
#end
// If this object has been modified, then save it to the database.
if (isModified())
{
if (isNew())
{
${table.JavaName}Peer.doInsert(($table.JavaName)this, con);
setNew(false);
}
else
{
${table.JavaName}Peer.doUpdate(($table.JavaName)this, con);
}
}
#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 = "$relCol$column.JavaName" )
#end
#end
#if ($relCol == "")
#set ( $relCol = "${className}s" )
#else
#set ( $relCol = "${className}sRelatedBy$relCol" )
#end
#set ( $collName = "coll$relCol" )
if ($collName != null )
{
for (int i=0; i<${collName}.size(); i++)
{
((${className})${collName}.get(i)).save(con);
}
}
#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())
#if ($addIntakeRetrievable)
/**
* 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);
}
#end
#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)
copyObj.setNew(false);
#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 = "$relCol$column.JavaName" )
#end
#end
#if ($relCol == "")
#set ( $pCollName = "${className}s" )
#set ( $pCollNameNoS = "${className}" )
#else
#set ( $pCollName = "${className}sRelatedBy$relCol" )
#set ( $pCollNameNoS = "${className}RelatedBy$relCol" )
#end
${list}v = get${pCollName}();
for (int i=0; i