You are viewing a plain text version of this content. The canonical link for it is here.
Posted to torque-dev@db.apache.org by tf...@apache.org on 2005/09/12 22:12:25 UTC

svn commit: r280407 - in /db/torque/templates/trunk/src/templates/om: BaseManager.vm ObjectWithManager.vm Peer.vm

Author: tfischer
Date: Mon Sep 12 13:12:19 2005
New Revision: 280407

URL: http://svn.apache.org/viewcvs?rev=280407&view=rev
Log:
- Added the methods getCachedInstance() and getCachedInstanceImpl() to the BaseManager.vm template
- Added the method getXXX(Connection) for associated objects to the ObjectWithManager.vm template
- Streamlined code in Peer.vm
Thanks to Thomas Vandahl for the patch.

Modified:
    db/torque/templates/trunk/src/templates/om/BaseManager.vm
    db/torque/templates/trunk/src/templates/om/ObjectWithManager.vm
    db/torque/templates/trunk/src/templates/om/Peer.vm

Modified: db/torque/templates/trunk/src/templates/om/BaseManager.vm
URL: http://svn.apache.org/viewcvs/db/torque/templates/trunk/src/templates/om/BaseManager.vm?rev=280407&r1=280406&r2=280407&view=diff
==============================================================================
--- db/torque/templates/trunk/src/templates/om/BaseManager.vm (original)
+++ db/torque/templates/trunk/src/templates/om/BaseManager.vm Mon Sep 12 13:12:19 2005
@@ -13,6 +13,7 @@
 ## limitations under the License.
 #*
  * author <a href="mailto:jmcnally@collab.net">John McNally</a>
+ * author <a href="mailto:thomas@vandahl.org">Thomas Vandahl</a>
  * version $Id$
  *#
 #set ($interfaceName = $table.JavaName)
@@ -63,10 +64,10 @@
     extends AbstractBaseManager
 {
     /** The name of the manager */
-    protected static String MANAGED_CLASS = "${package}.${interfaceName}";
+    protected static final String MANAGED_CLASS = "${package}.${interfaceName}";
 
     /** The name of our class to pass to Torque as the default manager. */
-    protected static String DEFAULT_MANAGER_CLASS
+    protected static final String DEFAULT_MANAGER_CLASS
         = "${package}.${interfaceName}Manager";
 
     /**
@@ -108,6 +109,21 @@
     }
 
     /**
+     * Static accessor for the @see #getCachedInstanceImpl(ObjectKey).
+     * Loads <code>${interfaceName}</code> from cache, returns 
+     * <code>null</code>, if instance is not in cache
+     *
+     * @param id an <code>ObjectKey</code> value
+     * @return a <code>${interfaceName}</code> value
+     * @exception TorqueException if an error occurs
+     */
+    public static ${interfaceName} getCachedInstance(ObjectKey id)
+        throws TorqueException
+    {
+        return getManager().getCachedInstanceImpl(id);
+    }
+
+    /**
      * Static accessor for the @see #getInstanceImpl(ObjectKey, boolean).
      *
      * @param id an <code>ObjectKey</code> value
@@ -239,7 +255,6 @@
         return obj;
     }
 
-
     /**
      * Get a ${interfaceName} with the given id.
      *
@@ -249,6 +264,18 @@
         throws TorqueException
     {
         return (${interfaceName}) getOMInstance(id);
+    }
+
+    /**
+     * Get a ${interfaceName} with the given id from the cache. Returns 
+     * <code>null</code> if instance is not in cache
+     *
+     * @param id <code>ObjectKey</code> value
+     */
+    protected ${interfaceName} getCachedInstanceImpl(ObjectKey id)
+        throws TorqueException
+    {
+        return (${interfaceName}) cacheGet(id);
     }
 
     /**

Modified: db/torque/templates/trunk/src/templates/om/ObjectWithManager.vm
URL: http://svn.apache.org/viewcvs/db/torque/templates/trunk/src/templates/om/ObjectWithManager.vm?rev=280407&r1=280406&r2=280407&view=diff
==============================================================================
--- db/torque/templates/trunk/src/templates/om/ObjectWithManager.vm (original)
+++ db/torque/templates/trunk/src/templates/om/ObjectWithManager.vm Mon Sep 12 13:12:19 2005
@@ -364,15 +364,60 @@
         {
         #if ($argsize > 1)
             SimpleKey[] keys = { $arglist };
-            return ${interfaceName}Manager.getInstance(new ComboKey(keys));
+            $varName = ${interfaceName}Manager.getInstance(new ComboKey(keys));
         #else
-            return ${interfaceName}Manager.getInstance($arglist);
+            $varName = ${interfaceName}Manager.getInstance($arglist);
         #end
         }
       #end
         return $varName;
     }
 
+    /**
+     * Return the associated $interfaceName object
+     * If it was not retrieved before, the object is retrieved from
+     * the database using the passed connection
+     *
+     * @param connection the connection used to retrieve the associated object
+     *        from the database, if it was not retrieved before
+     * @return the associated $interfaceName object
+     * @throws TorqueException
+     */
+    public $interfaceName get${pVarName}(Connection connection)
+        throws TorqueException
+    {
+        if ($varName == null && ($conditional))
+        {
+        #if ($argsize > 1)
+            SimpleKey[] keys = { $arglist };
+            ComboKey comboid = new ComboKey(keys);
+
+            $varName = ${interfaceName}Manager.getCachedInstance(comboid);
+            if ($varName == null)
+            {
+          #if ($tblFK.isAlias())
+                $varName = ${className}Peer.retrieve${className}ByPK(comboid, connection);
+          #else
+                $varName = ${className}Peer.retrieveByPK(comboid, connection);
+          #end
+                ${interfaceName}Manager.putInstance($varName);
+            }
+        #else
+            $varName = ${interfaceName}Manager.getCachedInstance($arglist);
+            if ($varName == null)
+            {
+          #if ($tblFK.isAlias())
+                $varName = ${className}Peer.retrieve${className}ByPK($arglist, connection);
+          #else
+                $varName = ${className}Peer.retrieveByPK($arglist, connection);
+          #end
+                ${interfaceName}Manager.putInstance($varName);
+            }
+        #end
+        }
+        return $varName;
+    }
+    
     /**
      * Provides convenient way to set a relationship based on a
      * ObjectKey, for example

Modified: db/torque/templates/trunk/src/templates/om/Peer.vm
URL: http://svn.apache.org/viewcvs/db/torque/templates/trunk/src/templates/om/Peer.vm?rev=280407&r1=280406&r2=280407&view=diff
==============================================================================
--- db/torque/templates/trunk/src/templates/om/Peer.vm (original)
+++ db/torque/templates/trunk/src/templates/om/Peer.vm Mon Sep 12 13:12:19 2005
@@ -594,7 +594,7 @@
         throws TorqueException
     {
         Criteria selectCriteria = new Criteria(DATABASE_NAME, 2);
-		correctBooleans(criteria);
+        correctBooleans(criteria);
 
   #foreach ($col in $table.Columns)
     #set ( $cup=$col.Name.toUpperCase() )
@@ -832,10 +832,14 @@
     #set ( $cjtype = $col.JavaNative )
     #if ($col.isPrimaryKey() && !$table.IdMethod.equals("none"))
         if (!obj.isNew())
+        {
     #end
     #if ( $cjtype != "byte[]" )
             criteria.add($cup, obj.${col.GetterName}());
     #end
+    #if ($col.isPrimaryKey() && !$table.IdMethod.equals("none"))
+        }
+    #end
   #end
         return criteria;
     }
@@ -906,7 +910,7 @@
         {
             Torque.closeConnection(db);
         }
-        return(retVal);
+        return retVal;
     }
 
     /**
@@ -959,7 +963,7 @@
         {
             Torque.closeConnection(db);
         }
-        return(retVal);
+        return retVal;
     }
 
     /**
@@ -1048,7 +1052,7 @@
         {
             Torque.closeConnection(db);
         }
-        return(retVal);
+        return retVal;
     }
 
   #set ( $comma = false )
@@ -1079,13 +1083,13 @@
         criteria.add($cup, $clo);
   #end
         List v = doSelect(criteria, con);
-        if (v.size() != 1)
+        if (v.size() == 1)
         {
-            throw new TorqueException("Failed to select one and only one row.");
+            return ($table.JavaName) v.get(0);
         }
         else
         {
-            return ($table.JavaName) v.get(0);
+            throw new TorqueException("Failed to select one and only one row.");
         }
     }
 #end
@@ -1151,8 +1155,8 @@
     protected static List doSelectJoin${joinColumnId}(Criteria criteria)
         throws TorqueException
     {
-		return doSelectJoin${joinColumnId}(criteria, null);
-	}
+        return doSelectJoin${joinColumnId}(criteria, null);
+    }
 
     /**
      * selects a collection of $className objects pre-filled with their
@@ -1185,11 +1189,15 @@
 
         correctBooleans(criteria);
 
-		List rows;
-		if( conn == null )
-	        rows = BasePeer.doSelect(criteria);
-	    else
-	    	rows = BasePeer.doSelect(criteria,conn);
+        List rows;
+        if (conn == null)
+        {
+            rows = BasePeer.doSelect(criteria);
+        }
+        else
+        {
+            rows = BasePeer.doSelect(criteria,conn);
+        }
 
         List results = new ArrayList();
 
@@ -1295,7 +1303,7 @@
     protected static List doSelectJoinAllExcept${excludeString}(Criteria criteria)
         throws TorqueException
     {
-    	return doSelectJoinAllExcept${excludeString}(criteria, null);
+        return doSelectJoinAllExcept${excludeString}(criteria, null);
     }
 
     /**
@@ -1335,10 +1343,14 @@
         correctBooleans(criteria);
 
         List rows;
-        if( conn == null )
-	        rows = BasePeer.doSelect(criteria);
-	    else
-	    	rows = BasePeer.doSelect(criteria,conn);
+        if (conn == null)
+        {
+            rows = BasePeer.doSelect(criteria);
+        }
+        else
+        {
+            rows = BasePeer.doSelect(criteria,conn);
+        }
 
         List results = new ArrayList();
 



---------------------------------------------------------------------
To unsubscribe, e-mail: torque-dev-unsubscribe@db.apache.org
For additional commands, e-mail: torque-dev-help@db.apache.org