jmcnally    02/03/08 15:16:51

  Modified:    profile  mysql.profile
               src/conf build.properties
               src/templates/om Control.vm
  Added:       src/templates/om ObjectWithManager.vm
  Log:
  added a property to shut off the generation of Managers.  This is expected
  to be temporary while caching is being added.
  
  Branched the Object.vm template as the old template is not thread-safe and
  cached objects are very likely to be used by multiple threads.  It is
  expected that the new template ObjectWithManager will eventually replace
  Object.vm
  
  Revision  Changes    Path
  1.9       +1 -0      jakarta-turbine-torque/profile/mysql.profile
  
  Index: mysql.profile
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-torque/profile/mysql.profile,v
  retrieving revision 1.8
  retrieving revision 1.9
  diff -u -r1.8 -r1.9
  --- mysql.profile     23 Dec 2001 15:49:51 -0000      1.8
  +++ mysql.profile     8 Mar 2002 23:16:51 -0000       1.9
  @@ -52,6 +52,7 @@
   complexObjectModel=true
   addTimeStamp=true
   addIntakeRetrievable=false
  +useManagers=false
   
   # -------------------------------------------------------------------
   # 
  
  
  
  1.10      +5 -0      jakarta-turbine-torque/src/conf/build.properties
  
  Index: build.properties
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-torque/src/conf/build.properties,v
  retrieving revision 1.9
  retrieving revision 1.10
  diff -u -r1.9 -r1.10
  --- build.properties  23 Dec 2001 15:49:51 -0000      1.9
  +++ build.properties  8 Mar 2002 23:16:51 -0000       1.10
  @@ -73,6 +73,11 @@
   complexObjectModel=true
   addTimeStamp=true
   addIntakeRetrievable=false
  +# -------------------------------------------------------------------
  +# Generate Manager classes that use JCS for caching.  This is still
  +# considered experimental.
  +# -------------------------------------------------------------------
  +useManagers=false
   
   # -------------------------------------------------------------------
   #
  
  
  
  1.6       +20 -7     jakarta-turbine-torque/src/templates/om/Control.vm
  
  Index: Control.vm
  ===================================================================
  RCS file: /home/cvs/jakarta-turbine-torque/src/templates/om/Control.vm,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- Control.vm        2 Mar 2002 02:23:55 -0000       1.5
  +++ Control.vm        8 Mar 2002 23:16:51 -0000       1.6
  @@ -44,24 +44,37 @@
         $generator.parse("om/MapBuilder.vm",$path,"table",$tbl)
       #end
   
  -    #set ( $fname = "${basePrefix}${firstcap}.java" )
  -    #set ( $path = "${strings.getPackageAsPath($pkbase)}$fname" )
  -    $generator.parse("om/Object.vm",$path,"table",$tbl)
  +#if ($useManagers && $tbl.PrimaryKeys.size() > 0)
   
       #set ( $fname = "${basePrefix}${firstcap}Manager.java" )
       #set ( $path = "${strings.getPackageAsPath($pkbase)}$fname" )
       $generator.parse("om/BaseManager.vm",$path,"table",$tbl)
   
  -    #set ( $fname = "${firstcap}.java" )
  +    #set ( $fname = "${firstcap}Manager.java" )
       #set ( $path = "${strings.getPackageAsPath($package)}$fname" )    
       #if (!$files.file($basePath,$path).exists())
  -      $generator.parse("om/ExtensionObject.vm",$path,"table",$tbl)
  +      $generator.parse("om/ExtensionManager.vm",$path,"table",$tbl)
       #end
   
  -    #set ( $fname = "${firstcap}Manager.java" )
  +#end
  +#if ($useManagers)
  +
  +    #set ( $fname = "${basePrefix}${firstcap}.java" )
  +    #set ( $path = "${strings.getPackageAsPath($pkbase)}$fname" )
  +    $generator.parse("om/ObjectWithManager.vm",$path,"table",$tbl)
  +
  +#else
  +
  +    #set ( $fname = "${basePrefix}${firstcap}.java" )
  +    #set ( $path = "${strings.getPackageAsPath($pkbase)}$fname" )
  +    $generator.parse("om/Object.vm",$path,"table",$tbl)
  +
  +#end
  +
  +    #set ( $fname = "${firstcap}.java" )
       #set ( $path = "${strings.getPackageAsPath($package)}$fname" )    
       #if (!$files.file($basePath,$path).exists())
  -      $generator.parse("om/ExtensionManager.vm",$path,"table",$tbl)
  +      $generator.parse("om/ExtensionObject.vm",$path,"table",$tbl)
       #end
   
       #set ( $fname = "${firstcap}Peer.java" )
  
  
  
  1.1                  jakarta-turbine-torque/src/templates/om/ObjectWithManager.vm
  
  Index: ObjectWithManager.vm
  ===================================================================
  #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.TorqueException;
  import org.apache.torque.om.*;
  import org.apache.torque.util.BasePeer;
  import org.apache.torque.util.Criteria;
  import org.apache.torque.pool.DBConnection;
  #if ($addSaveMethod)
  import org.apache.commons.lang.Objects;
  #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 TorqueException" )
            #end    
            #if ( $col.Referrers.size() > 0 )
              #if ($throwsClause == "")
                #set ( $throwsClause = "throws TorqueException" )
              #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 ($addSaveMethod)
  
   #if ( ($cjtype == "int") || ($cjtype == "long") || ($cjtype == "boolean") 
      || ($cjtype == "short") || ($cjtype == "float") || ($cjtype == "double")
      || ($cjtype == "char") || ($cjtype == "byte") )
          if (this.$clo != v)
          {
   #else
          if ( !Objects.equals(this.$clo, v) )
          {
   #end
              this.$clo = v;
              setModified(true);
          }
  #else
            this.$clo = v;
  #end
  
          #if ($complexObjectModel)
            #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 ($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" )
  
      /**
       * Declares an association between this object and a $className object
       *
       * @param $className v
       */
      public void set${pVarName}($className v) throws TorqueException
      {
     #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
      }
  
     #set ( $comma = "" )
     #set ( $arglist = "" )
     #set ( $argsize = 0 )
     #foreach ($columnName in $fk.LocalColumns)
      #set ( $column = $table.getColumn($columnName) )
      #set ( $arglist = "$arglist${comma}get${column.JavaName}()" )
      #set ( $and = " && " )
      #set ( $comma = ", " )
      #set ( $argsize = $argsize + 1 )
     #end
      
      public $className get${pVarName}() throws TorqueException
      {
    #if ($tblFK.isAlias())
          ## Leaving this as is for now, though it should probably be
          ## changed to use the Manager like the else clause does.
          return ${className}Peer.retrieve${className}ByPK($arglist);
    #else
     #if ($argsize > 1)
         SimpleKey[] keys = { $arglist };
          return ${className}Manager.getInstance(new ComboKey(keys));
     #else
          return ${className}Manager.getInstance($arglist);
     #end
    #end
      }
  
      /**
       * 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 TorqueException
      {
      #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 TorqueException
      {
          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 TorqueException
      {
          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 TorqueException
      {
          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 TorqueException
      {
          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 TorqueException
      {
          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 TorqueException
      {
          DBConnection dbCon = null;
   #if ($complexObjectModel)
          try
          {
              dbCon = BasePeer.beginTransaction(dbName);
              save(dbCon);
          }
          catch(TorqueException e)
          {
              BasePeer.rollBackTransaction(dbCon);
              throw e;
          }
          BasePeer.commitTransaction(dbCon);
  
   #else
          if (isModified())
          {
              try
              {
                  dbCon = Torque.getConnection( dbName );
                  if (isNew())
                  {
                      ${table.JavaName}Peer
                          .doInsert(($table.JavaName)this, dbCon);
                      setNew(false);
                  }
                  else
                  {
                      ${table.JavaName}Peer
                          .doUpdate(($table.JavaName)this, dbCon);
                  }
              }
              finally
              {
                  Torque.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 TorqueException
      {
    #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(dbCon);
              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, dbCon);
                  setNew(false);
              }
              else
              {
                  ${table.JavaName}Peer.doUpdate(($table.JavaName)this, dbCon);
              }
  
  #if ($table.PrimaryKeys.size() > 0)
              if (isCacheOnSave())
              {
                  ${table.JavaName}Manager.putInstance(this);
              }
  #end
          }
  
   #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(dbCon);
                }
            }
       #end
    #end      
   #end
    #if ($complexObjectModel)
          alreadyInSave = false;
        }
    #end      
      }
  #end
  
  #if ($table.PrimaryKeys.size() > 0)
      /**
       * Specify whether to cache the object after saving to the db.
       * This method returns false
       */
      protected boolean isCacheOnSave()
      {
          return false;
      }
  #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 TorqueException" )
          #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 TorqueException
      {
          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 TorqueException
      {
          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 TorqueException
      {
          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 TorqueException
      {
  #else
      public $table.JavaName copy() throws TorqueException
      {
          $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<v.size(); i++)
          {
              $className obj = ($className) v.get(i);
              copyObj.add$pCollNameNoS(obj.copy());
              ((Persistent)v.get(i)).setNew(true);
          }
          #set ( $list = "" )
      #end
    #end
    copyObj.setNew(true);
  #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
  
  #if (!$table.isAlias())
      /**
       * returns a peer instance associated with this om.  Since Peer classes
       * are not to have any instance attributes, this method returns the
       * same instance for all member of this class. The method could therefore
       * be static, but this would prevent one from overriding the behavior.
       */
      public ${table.JavaName}Peer getPeer()
      {
          return peer;
      }
  #end
  }
  
  
  
  

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

Reply via email to