Author: tv
Date: Tue Jul 26 19:16:55 2016
New Revision: 1754171

URL: http://svn.apache.org/viewvc?rev=1754171&view=rev
Log:
TORQUE-346: First attempt

Added:
    
db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/AbstractPeerImpl.java
   (with props)
Modified:
    
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/conf/options.properties
    
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/doInsert.vm
    
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/doSelect.vm
    
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/doUpdate.vm
    
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/imports.vm
    
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/log.vm

Added: 
db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/AbstractPeerImpl.java
URL: 
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/AbstractPeerImpl.java?rev=1754171&view=auto
==============================================================================
--- 
db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/AbstractPeerImpl.java
 (added)
+++ 
db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/AbstractPeerImpl.java
 Tue Jul 26 19:16:55 2016
@@ -0,0 +1,194 @@
+package org.apache.torque.util;
+
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one
+ * or more contributor license agreements.  See the NOTICE file
+ * distributed with this work for additional information
+ * regarding copyright ownership.  The ASF licenses this file
+ * to you under the Apache License, Version 2.0 (the
+ * "License"); you may not use this file except in compliance
+ * with the License.  You may obtain a copy of the License at
+ *
+ *   http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing,
+ * software distributed under the License is distributed on an
+ * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+ * KIND, either express or implied.  See the License for the
+ * specific language governing permissions and limitations
+ * under the License.
+ */
+
+import java.sql.Connection;
+import java.util.List;
+
+import org.apache.torque.TooManyRowsException;
+import org.apache.torque.TorqueException;
+import org.apache.torque.criteria.Criteria;
+import org.apache.torque.map.TableMap;
+import org.apache.torque.om.ObjectKey;
+import org.apache.torque.om.Persistent;
+import org.apache.torque.om.mapper.RecordMapper;
+
+/**
+ * This is an abstract layer for all generated peer classes that
+ * implements several convenience methods that otherwise would have
+ * to be generated.
+ *
+ * @param <T> The data object class for this Peer.
+ *
+ * @author <a href="mailto:t...@apache.org";>Thomas Vandahl</a>
+ * @version $Id: BasePeerImpl.java 1701342 2015-09-05 02:18:04Z tfischer $
+ */
+public abstract class AbstractPeerImpl<T extends Persistent> extends 
BasePeerImpl<T>
+{
+    /** Serial version */
+    private static final long serialVersionUID = 1236684692145864194L;
+
+    /**
+     * Default constructor
+     */
+    public AbstractPeerImpl()
+    {
+        super();
+    }
+
+    /**
+     * Constructor providing the objects to be injected as parameters.
+     *
+     * @param recordMapper a record mapper to map JDBC result sets to objects
+     * @param tableMap the default table map
+     * @param databaseName the name of the database
+     */
+    public AbstractPeerImpl(final RecordMapper<T> recordMapper, final TableMap 
tableMap, final String databaseName)
+    {
+        super(recordMapper, tableMap, databaseName);
+    }
+
+    /**
+     * Build a Criteria object from the data object for this peer.
+     *
+     * @param obj the object to build the criteria from, not null.
+     */
+    public abstract Criteria buildCriteria(T obj);
+
+    /**
+     * Build a Criteria object from the data object for this peer,
+     * skipping all binary columns.
+     *
+     * @param obj the object to build the criteria from, not null.
+     */
+    public abstract Criteria buildSelectCriteria(T obj);
+
+    /**
+     * Returns the contents of the object as ColumnValues object.
+     * Primary key columns which are generated on insertion are not
+     * added to the returned object if they still have their initial
+     * value. Also, columns which have the useDatabaseDefaultValue
+     * flag set to true are also not added to the returned object
+     * if they still have their initial value.
+     *
+     * @throws TorqueException if the table map cannot be retrieved
+     *         (should not happen).
+     */
+    public abstract ColumnValues buildColumnValues(T obj) throws 
TorqueException;
+
+    /**
+     * Selects objects from the database which have
+     * the same content as the passed object.
+     *
+     * @return The list of selected objects, not null.
+     *
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public List<T> doSelect(T obj) throws TorqueException
+    {
+        return doSelect(buildSelectCriteria(obj));
+    }
+
+    /**
+     * Selects at most one object from the database
+     * which has the same content as the passed object.
+     *
+     * @return the selected Object, or null if no object was selected.
+     *
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public T doSelectSingleRecord(T obj) throws TorqueException
+    {
+        List<T> omList = doSelect(obj);
+        T om = null;
+        if (omList.size() > 1)
+        {
+            throw new TooManyRowsException("Object " + obj
+                + " matched more than one record");
+        }
+        if (!omList.isEmpty())
+        {
+            om = omList.get(0);
+        }
+        return om;
+    }
+
+    /**
+     * Method to do inserts.  This method is to be used during a transaction,
+     * otherwise use the doInsert(Criteria) method.
+     *
+     * @param columnValues the values to insert.
+     * @param con the connection to use, not null.
+     *
+     * @return the primary key of the inserted row or null if the table has
+     * no primary key
+     *
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    @Override
+    public ObjectKey doInsert(ColumnValues columnValues, Connection con)
+        throws TorqueException
+    {
+        correctBooleans(columnValues);
+        return super.doInsert(columnValues, con);
+    }
+
+    /**
+     * Method to do inserts
+     *
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public void doInsert(T obj) throws TorqueException
+    {
+        ObjectKey primaryKey = doInsert(buildColumnValues(obj));
+        if (primaryKey != null)
+        {
+            obj.setPrimaryKey(primaryKey);
+        }
+        obj.setNew(false);
+        obj.setModified(false);
+    }
+
+    /**
+     * Method to do inserts.  This method is to be used during a transaction,
+     * otherwise use the doInsert(T) method.  It will take
+     * care of the connection details internally.
+     *
+     * @param obj the data object to insert into the database.
+     * @param con the connection to use
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public void doInsert(T obj, Connection con)
+        throws TorqueException
+    {
+        ObjectKey primaryKey = doInsert(buildColumnValues(obj), con);
+        if (primaryKey != null)
+        {
+            obj.setPrimaryKey(primaryKey);
+        }
+        obj.setNew(false);
+        obj.setModified(false);
+    }
+}

Propchange: 
db/torque/torque4/trunk/torque-runtime/src/main/java/org/apache/torque/util/AbstractPeerImpl.java
------------------------------------------------------------------------------
    svn:mime-type = text/plain

Modified: 
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/conf/options.properties
URL: 
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/conf/options.properties?rev=1754171&r1=1754170&r2=1754171&view=diff
==============================================================================
--- 
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/conf/options.properties
 (original)
+++ 
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/conf/options.properties
 Tue Jul 26 19:16:55 2016
@@ -223,7 +223,7 @@ torque.om.dbObjectDefaultBaseClass =
 # The base class for all Peer classes
 torque.om.basePeerBaseClass = 
 # The base class for all Peer implementation classes
-torque.om.basePeerImplBaseClass = org.apache.torque.util.BasePeerImpl
+torque.om.basePeerImplBaseClass = org.apache.torque.util.AbstractPeerImpl
 
 # Prefixes and suffixes for the java names of the generated classes
 #

Modified: 
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/doInsert.vm
URL: 
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/doInsert.vm?rev=1754171&r1=1754170&r2=1754171&view=diff
==============================================================================
--- 
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/doInsert.vm
 (original)
+++ 
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/doInsert.vm
 Tue Jul 26 19:16:55 2016
@@ -27,103 +27,4 @@
 ## The options and the attributes of the current source element must be set
 ## as velocity variables.  
 ##
-    /**
-     * Method to do inserts.
-     *
-     * @param columnValues the values to insert.
-     *
-#if ($torqueGen.getChild("primary-keys").getChildren("column").isEmpty())
-     * @return always null (because the table does not have a primary key).
-#else
-     * @return the primary key of the inserted row.
-#end
-     *
-     * @throws TorqueException Any exceptions caught during processing will be
-     *         rethrown wrapped into a TorqueException.
-     */
-    public ObjectKey doInsert(ColumnValues columnValues) throws TorqueException
-    {
-        Connection connection = null;
-        try
-        {
-            connection = Transaction.begin(
-                    ${peerClassName}.DATABASE_NAME);
-            ObjectKey result = doInsert(columnValues, connection);
-            Transaction.commit(connection);
-            connection = null;
-            return result;
-        }
-        finally
-        {
-            if (connection != null)
-            {
-                Transaction.safeRollback(connection);
-            }
-        }
-    }
-
-    /**
-     * Method to do inserts.  This method is to be used during a transaction,
-     * otherwise use the doInsert(Criteria) method.
-     *
-     * @param columnValues the values to insert.
-     * @param con the connection to use, not null.
-     *
-#if ($torqueGen.getChild("primary-keys").getChildren("column").isEmpty())
-     * @return always null (because the table does not have a primary key).
-#else
-     * @return the primary key of the inserted row.
-#end
-     *
-     * @throws TorqueException Any exceptions caught during processing will be
-     *         rethrown wrapped into a TorqueException.
-     */
-    public ObjectKey doInsert(ColumnValues columnValues, Connection con)
-        throws TorqueException
-    {
-        correctBooleans(columnValues);
-        return super.doInsert(columnValues, con);
-    }
-
-    /**
-     * Method to do inserts
-     *
-     * @throws TorqueException Any exceptions caught during processing will be
-     *         rethrown wrapped into a TorqueException.
-     */
-    public void doInsert($dbObjectClassName obj) throws TorqueException
-    {
-  #if ($idMethod.equals("none") || 
$torqueGen.getChild("primary-keys").getChildren("column").isEmpty())
-        doInsert(buildColumnValues(obj));
-  #else
-        obj.setPrimaryKey(doInsert(buildColumnValues(obj)));
-  #end
-        obj.setNew(false);
-        obj.setModified(false);
-    }
-
-    /**
-     * Method to do inserts.  This method is to be used during a transaction,
-     * otherwise use the doInsert($dbObjectClassName) method.  It will take
-     * care of the connection details internally.
-     *
-     * @param obj the data object to insert into the database.
-     * @param con the connection to use
-     * @throws TorqueException Any exceptions caught during processing will be
-     *         rethrown wrapped into a TorqueException.
-     */
-    public void doInsert($dbObjectClassName obj, Connection con)
-        throws TorqueException
-    {
-  #if ($idMethod.equals("none") || 
$torqueGen.getChild("primary-keys").getChildren("column").isEmpty())
-        doInsert(buildColumnValues(obj), con);
-  #else
-        ObjectKey primaryKey = doInsert(buildColumnValues(obj), con);
-        if (primaryKey != null)
-        {
-            obj.setPrimaryKey(primaryKey);
-        }
-  #end
-        obj.setNew(false);
-        obj.setModified(false);
-    }
+## empty
\ No newline at end of file

Modified: 
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/doSelect.vm
URL: 
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/doSelect.vm?rev=1754171&r1=1754170&r2=1754171&view=diff
==============================================================================
--- 
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/doSelect.vm
 (original)
+++ 
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/doSelect.vm
 Tue Jul 26 19:16:55 2016
@@ -27,46 +27,4 @@
 ## The options and the attributes of the current source element must be set
 ## as velocity variables.  
 ##
-    /**
-     * Selects ${dbObjectClassName} objects from the database which have
-     * the same content as the passed object.
-     *
-     * @return The list of selected objects, not null.
-     *
-     * @throws TorqueException Any exceptions caught during processing will be
-     *         rethrown wrapped into a TorqueException.
-     */
-    public List<${dbObjectClassName}> doSelect($dbObjectClassName obj)
-            throws TorqueException
-    {
-        return doSelect(buildSelectCriteria(obj));
-    }
-#if ($torqueGen.booleanOption("torque.om.addSelectSingleRecordMethods"))
-
-    /**
-     * Selects at most one ${dbObjectClassName} object from the database
-     * which has the same content as the passed object.
-     *
-     * @return the selected Object, or null if no object was selected.
-     *
-     * @throws TorqueException Any exceptions caught during processing will be
-     *         rethrown wrapped into a TorqueException.
-     */
-    public ${dbObjectClassName} doSelectSingleRecord(
-                $dbObjectClassName obj)
-            throws TorqueException
-    {
-        List<${dbObjectClassName}> ${field}List = doSelect(obj);
-        ${dbObjectClassName} ${field} = null;
-        if (${field}List.size() > 1)
-        {
-            throw new TooManyRowsException("Object " + obj 
-                + " matched more than one record");
-        }
-        if (!${field}List.isEmpty())
-        {
-            ${field} = ${field}List.get(0);
-        }
-        return ${field};
-    }
-#end
+## empty
\ No newline at end of file

Modified: 
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/doUpdate.vm
URL: 
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/doUpdate.vm?rev=1754171&r1=1754170&r2=1754171&view=diff
==============================================================================
--- 
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/doUpdate.vm
 (original)
+++ 
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/doUpdate.vm
 Tue Jul 26 19:16:55 2016
@@ -28,38 +28,6 @@
 ## as velocity variables.  
 ##
     /**
-     * Method to do updates.
-     *
-     * @param columnValues the values to update plus the primary key
-     *        identifying the row to update.
-     *
-     * @return the number of affected rows.
-     *
-     * @throws TorqueException Any exceptions caught during processing will be
-     *         rethrown wrapped into a TorqueException.
-     */
-    public int doUpdate(ColumnValues columnValues) throws TorqueException
-    {
-        Connection connection = null;
-        try
-        {
-            connection = Transaction.begin(
-                    ${peerClassName}.DATABASE_NAME);
-            int result = doUpdate(columnValues, connection);
-            Transaction.commit(connection);
-            connection = null;
-            return result;
-        }
-        finally
-        {
-            if (connection != null)
-            {
-                Transaction.safeRollback(connection);
-            }
-        }
-    }
-
-    /**
      * Method to do updates.  This method is to be used during a transaction,
      * otherwise use the doUpdate(Criteria) method.
      *

Modified: 
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/imports.vm
URL: 
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/imports.vm?rev=1754171&r1=1754170&r2=1754171&view=diff
==============================================================================
--- 
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/imports.vm
 (original)
+++ 
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/imports.vm
 Tue Jul 26 19:16:55 2016
@@ -53,8 +53,8 @@ import java.util.Set;
 import java.util.HashSet;
 
 import org.apache.commons.lang.ObjectUtils;
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
+##import org.apache.commons.logging.Log;
+##import org.apache.commons.logging.LogFactory;
 import org.apache.torque.NoRowsException;
 import org.apache.torque.OptimisticLockingFailedException;
 import org.apache.torque.TooManyRowsException;

Modified: 
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/log.vm
URL: 
http://svn.apache.org/viewvc/db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/log.vm?rev=1754171&r1=1754170&r2=1754171&view=diff
==============================================================================
--- 
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/log.vm
 (original)
+++ 
db/torque/torque4/trunk/torque-templates/src/main/resources/org/apache/torque/templates/om/templates/peer/impl/base/log.vm
 Tue Jul 26 19:16:55 2016
@@ -27,5 +27,5 @@
 ## The options and the attributes of the current source element must be set
 ## as velocity variables.  
 ##
-    /** The class log. */
-    private static Log log = LogFactory.getLog(${basePeerImplClassName}.class);
\ No newline at end of file
+##    /** The class log. */
+##    private static Log log = 
LogFactory.getLog(${basePeerImplClassName}.class);
\ No newline at end of file



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

Reply via email to