You are viewing a plain text version of this content. The canonical link for it is here.
Posted to server-dev@james.apache.org by jo...@apache.org on 2006/10/09 19:15:42 UTC

svn commit: r454432 [8/14] - in /james/server/sandbox/imap-integration: ./ lib/ src/java/ src/java/org/apache/james/imapserver/ src/java/org/apache/james/imapserver/commands/ src/java/org/apache/james/imapserver/debug/ src/java/org/apache/james/imapser...

Added: james/server/sandbox/imap-integration/src/java/org/apache/james/mailboxmanager/torque/om/BaseMailboxRowPeer.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/java/org/apache/james/mailboxmanager/torque/om/BaseMailboxRowPeer.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/java/org/apache/james/mailboxmanager/torque/om/BaseMailboxRowPeer.java (added)
+++ james/server/sandbox/imap-integration/src/java/org/apache/james/mailboxmanager/torque/om/BaseMailboxRowPeer.java Mon Oct  9 10:15:30 2006
@@ -0,0 +1,853 @@
+package org.apache.james.mailboxmanager.torque.om;
+
+import java.math.BigDecimal;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.apache.torque.NoRowsException;
+import org.apache.torque.TooManyRowsException;
+import org.apache.torque.Torque;
+import org.apache.torque.TorqueException;
+import org.apache.torque.map.MapBuilder;
+import org.apache.torque.map.TableMap;
+import org.apache.torque.om.DateKey;
+import org.apache.torque.om.NumberKey;
+import org.apache.torque.om.StringKey;
+import org.apache.torque.om.ObjectKey;
+import org.apache.torque.om.SimpleKey;
+import org.apache.torque.util.BasePeer;
+import org.apache.torque.util.Criteria;
+
+import com.workingdogs.village.DataSetException;
+import com.workingdogs.village.QueryDataSet;
+import com.workingdogs.village.Record;
+
+// Local classes
+import org.apache.james.mailboxmanager.torque.om.map.*;
+
+
+
+/**
+ * This class was autogenerated by Torque on:
+ *
+ * [Tue Sep 19 10:06:28 CEST 2006]
+ *
+ */
+public abstract class BaseMailboxRowPeer
+    extends BasePeer
+{
+
+    /** the default database name for this class */
+    public static final String DATABASE_NAME = "mailboxmanager";
+
+     /** the table name for this class */
+    public static final String TABLE_NAME = "mailbox";
+
+    /**
+     * @return the map builder for this peer
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static MapBuilder getMapBuilder()
+        throws TorqueException
+    {
+        return getMapBuilder(MailboxRowMapBuilder.CLASS_NAME);
+    }
+
+      /** the column name for the MAILBOX_ID field */
+    public static final String MAILBOX_ID;
+      /** the column name for the NAME field */
+    public static final String NAME;
+      /** the column name for the UID_VALIDITY field */
+    public static final String UID_VALIDITY;
+      /** the column name for the LAST_UID field */
+    public static final String LAST_UID;
+      /** the column name for the MESSAGE_COUNT field */
+    public static final String MESSAGE_COUNT;
+      /** the column name for the SIZE field */
+    public static final String SIZE;
+  
+    static
+    {
+          MAILBOX_ID = "mailbox.MAILBOX_ID";
+          NAME = "mailbox.NAME";
+          UID_VALIDITY = "mailbox.UID_VALIDITY";
+          LAST_UID = "mailbox.LAST_UID";
+          MESSAGE_COUNT = "mailbox.MESSAGE_COUNT";
+          SIZE = "mailbox.SIZE";
+          if (Torque.isInit())
+        {
+            try
+            {
+                getMapBuilder(MailboxRowMapBuilder.CLASS_NAME);
+            }
+            catch (Exception e)
+            {
+                log.error("Could not initialize Peer", e);
+                throw new RuntimeException(e);
+            }
+        }
+        else
+        {
+            Torque.registerMapBuilder(MailboxRowMapBuilder.CLASS_NAME);
+        }
+    }
+ 
+    /** number of columns for this peer */
+    public static final int numColumns =  6;
+
+    /** A class that can be returned by this peer. */
+    protected static final String CLASSNAME_DEFAULT =
+        "org.apache.james.mailboxmanager.torque.om.MailboxRow";
+
+    /** A class that can be returned by this peer. */
+    protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT);
+
+    /**
+     * Class object initialization method.
+     *
+     * @param className name of the class to initialize
+     * @return the initialized class
+     */
+    private static Class initClass(String className)
+    {
+        Class c = null;
+        try
+        {
+            c = Class.forName(className);
+        }
+        catch (Throwable t)
+        {
+            log.error("A FATAL ERROR has occurred which should not "
+                + "have happened under any circumstance.  Please notify "
+                + "the Torque developers <to...@db.apache.org> "
+                + "and give as many details as possible (including the error "
+                + "stack trace).", t);
+
+            // Error objects should always be propogated.
+            if (t instanceof Error)
+            {
+                throw (Error) t.fillInStackTrace();
+            }
+        }
+        return c;
+    }
+
+    /**
+     * Get the list of objects for a ResultSet.  Please not that your
+     * resultset MUST return columns in the right order.  You can use
+     * getFieldNames() in BaseObject to get the correct sequence.
+     *
+     * @param results the ResultSet
+     * @return the list of objects
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static List resultSet2Objects(java.sql.ResultSet results)
+            throws TorqueException
+    {
+        try
+        {
+            QueryDataSet qds = null;
+            List rows = null;
+            try
+            {
+                qds = new QueryDataSet(results);
+                rows = getSelectResults(qds);
+            }
+            finally
+            {
+                if (qds != null)
+                {
+                    qds.close();
+                }
+            }
+
+            return populateObjects(rows);
+        }
+        catch (SQLException e)
+        {
+            throw new TorqueException(e);
+        }
+        catch (DataSetException e)
+        {
+            throw new TorqueException(e);
+        }
+    }
+
+
+  
+    /**
+     * Method to do inserts.
+     *
+     * @param criteria object used to create the INSERT statement.
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static ObjectKey doInsert(Criteria criteria)
+        throws TorqueException
+    {
+        return BaseMailboxRowPeer
+            .doInsert(criteria, (Connection) null);
+    }
+
+    /**
+     * Method to do inserts.  This method is to be used during a transaction,
+     * otherwise use the doInsert(Criteria) method.  It will take care of
+     * the connection details internally.
+     *
+     * @param criteria object used to create the INSERT statement.
+     * @param con the connection to use
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static ObjectKey doInsert(Criteria criteria, Connection con)
+        throws TorqueException
+    {
+        correctBooleans(criteria);
+
+        setDbName(criteria);
+
+        if (con == null)
+        {
+            return BasePeer.doInsert(criteria);
+        }
+        else
+        {
+            return BasePeer.doInsert(criteria, con);
+        }
+    }
+
+    /**
+     * Add all the columns needed to create a new object.
+     *
+     * @param criteria object containing the columns to add.
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static void addSelectColumns(Criteria criteria)
+            throws TorqueException
+    {
+          criteria.addSelectColumn(MAILBOX_ID);
+          criteria.addSelectColumn(NAME);
+          criteria.addSelectColumn(UID_VALIDITY);
+          criteria.addSelectColumn(LAST_UID);
+          criteria.addSelectColumn(MESSAGE_COUNT);
+          criteria.addSelectColumn(SIZE);
+      }
+
+    /**
+     * changes the boolean values in the criteria to the appropriate type,
+     * whenever a booleanchar or booleanint column is involved.
+     * This enables the user to create criteria using Boolean values
+     * for booleanchar or booleanint columns
+     * @param criteria the criteria in which the boolean values should be corrected
+     */
+    public static void correctBooleans(Criteria criteria)
+    {
+                                            }
+
+    /**
+     * Create a new object of type cls from a resultset row starting
+     * from a specified offset.  This is done so that you can select
+     * other rows than just those needed for this object.  You may
+     * for example want to create two objects from the same row.
+     *
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static MailboxRow row2Object(Record row,
+                                             int offset,
+                                             Class cls)
+        throws TorqueException
+    {
+        try
+        {
+            MailboxRow obj = (MailboxRow) cls.newInstance();
+            MailboxRowPeer.populateObject(row, offset, obj);
+                  obj.setModified(false);
+              obj.setNew(false);
+
+            return obj;
+        }
+        catch (InstantiationException e)
+        {
+            throw new TorqueException(e);
+        }
+        catch (IllegalAccessException e)
+        {
+            throw new TorqueException(e);
+        }
+    }
+
+    /**
+     * Populates an object from a resultset row starting
+     * from a specified offset.  This is done so that you can select
+     * other rows than just those needed for this object.  You may
+     * for example want to create two objects from the same row.
+     *
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static void populateObject(Record row,
+                                      int offset,
+                                      MailboxRow obj)
+        throws TorqueException
+    {
+        try
+        {
+                obj.setMailboxId(row.getValue(offset + 0).asLong());
+                  obj.setName(row.getValue(offset + 1).asString());
+                  obj.setUidValidity(row.getValue(offset + 2).asLong());
+                  obj.setLastUid(row.getValue(offset + 3).asLong());
+                  obj.setMessageCount(row.getValue(offset + 4).asInt());
+                  obj.setSize(row.getValue(offset + 5).asLong());
+              }
+        catch (DataSetException e)
+        {
+            throw new TorqueException(e);
+        }
+    }
+
+    /**
+     * Method to do selects.
+     *
+     * @param criteria object used to create the SELECT statement.
+     * @return List of selected Objects
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static List doSelect(Criteria criteria) throws TorqueException
+    {
+        return populateObjects(doSelectVillageRecords(criteria));
+    }
+
+    /**
+     * Method to do selects within a transaction.
+     *
+     * @param criteria object used to create the SELECT statement.
+     * @param con the connection to use
+     * @return List of selected Objects
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static List doSelect(Criteria criteria, Connection con)
+        throws TorqueException
+    {
+        return populateObjects(doSelectVillageRecords(criteria, con));
+    }
+
+    /**
+     * Grabs the raw Village records to be formed into objects.
+     * This method handles connections internally.  The Record objects
+     * returned by this method should be considered readonly.  Do not
+     * alter the data and call save(), your results may vary, but are
+     * certainly likely to result in hard to track MT bugs.
+     *
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static List doSelectVillageRecords(Criteria criteria)
+        throws TorqueException
+    {
+        return BaseMailboxRowPeer
+            .doSelectVillageRecords(criteria, (Connection) null);
+    }
+
+    /**
+     * Grabs the raw Village records to be formed into objects.
+     * This method should be used for transactions
+     *
+     * @param criteria object used to create the SELECT statement.
+     * @param con the connection to use
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static List doSelectVillageRecords(Criteria criteria, Connection con)
+        throws TorqueException
+    {
+        if (criteria.getSelectColumns().size() == 0)
+        {
+            addSelectColumns(criteria);
+        }
+        correctBooleans(criteria);
+
+        setDbName(criteria);
+
+        // BasePeer returns a List of Value (Village) arrays.  The array
+        // order follows the order columns were placed in the Select clause.
+        if (con == null)
+        {
+            return BasePeer.doSelect(criteria);
+        }
+        else
+        {
+            return BasePeer.doSelect(criteria, con);
+        }
+    }
+
+    /**
+     * The returned List will contain objects of the default type or
+     * objects that inherit from the default.
+     *
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static List populateObjects(List records)
+        throws TorqueException
+    {
+        List results = new ArrayList(records.size());
+
+        // populate the object(s)
+        for (int i = 0; i < records.size(); i++)
+        {
+            Record row = (Record) records.get(i);
+              results.add(MailboxRowPeer.row2Object(row, 1,
+                MailboxRowPeer.getOMClass()));
+          }
+        return results;
+    }
+ 
+
+    /**
+     * The class that the Peer will make instances of.
+     * If the BO is abstract then you must implement this method
+     * in the BO.
+     *
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static Class getOMClass()
+        throws TorqueException
+    {
+        return CLASS_DEFAULT;
+    }
+
+    /**
+     * Method to do updates.
+     *
+     * @param criteria object containing data that is used to create the UPDATE
+     *        statement.
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static void doUpdate(Criteria criteria) throws TorqueException
+    {
+         BaseMailboxRowPeer
+            .doUpdate(criteria, (Connection) null);
+    }
+
+    /**
+     * Method to do updates.  This method is to be used during a transaction,
+     * otherwise use the doUpdate(Criteria) method.  It will take care of
+     * the connection details internally.
+     *
+     * @param criteria object containing data that is used to create the UPDATE
+     *        statement.
+     * @param con the connection to use
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static void doUpdate(Criteria criteria, Connection con)
+        throws TorqueException
+    {
+        Criteria selectCriteria = new Criteria(DATABASE_NAME, 2);
+        correctBooleans(criteria);
+
+  
+             selectCriteria.put(MAILBOX_ID, criteria.remove(MAILBOX_ID));
+      
+      
+      
+      
+      
+      
+        setDbName(criteria);
+
+        if (con == null)
+        {
+            BasePeer.doUpdate(selectCriteria, criteria);
+        }
+        else
+        {
+            BasePeer.doUpdate(selectCriteria, criteria, con);
+        }
+    }
+
+    /**
+     * Method to do deletes.
+     *
+     * @param criteria object containing data that is used DELETE from database.
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+     public static void doDelete(Criteria criteria) throws TorqueException
+     {
+         MailboxRowPeer
+            .doDelete(criteria, (Connection) null);
+     }
+
+    /**
+     * Method to do deletes.  This method is to be used during a transaction,
+     * otherwise use the doDelete(Criteria) method.  It will take care of
+     * the connection details internally.
+     *
+     * @param criteria object containing data that is used DELETE from database.
+     * @param con the connection to use
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+     public static void doDelete(Criteria criteria, Connection con)
+        throws TorqueException
+     {
+        correctBooleans(criteria);
+
+        setDbName(criteria);
+
+        if (con == null)
+        {
+            BasePeer.doDelete(criteria);
+        }
+        else
+        {
+            BasePeer.doDelete(criteria, con);
+        }
+     }
+
+    /**
+     * Method to do selects
+     *
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static List doSelect(MailboxRow obj) throws TorqueException
+    {
+        return doSelect(buildSelectCriteria(obj));
+    }
+
+    /**
+     * Method to do inserts
+     *
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static void doInsert(MailboxRow obj) throws TorqueException
+    {
+          obj.setPrimaryKey(doInsert(buildCriteria(obj)));
+          obj.setNew(false);
+        obj.setModified(false);
+    }
+
+    /**
+     * @param obj the data object to update in the database.
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static void doUpdate(MailboxRow obj) throws TorqueException
+    {
+        doUpdate(buildCriteria(obj));
+        obj.setModified(false);
+    }
+
+    /**
+     * @param obj the data object to delete in the database.
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static void doDelete(MailboxRow obj) throws TorqueException
+    {
+        doDelete(buildSelectCriteria(obj));
+    }
+
+    /**
+     * Method to do inserts.  This method is to be used during a transaction,
+     * otherwise use the doInsert(MailboxRow) 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 static void doInsert(MailboxRow obj, Connection con)
+        throws TorqueException
+    {
+          obj.setPrimaryKey(doInsert(buildCriteria(obj), con));
+          obj.setNew(false);
+        obj.setModified(false);
+    }
+
+    /**
+     * Method to do update.  This method is to be used during a transaction,
+     * otherwise use the doUpdate(MailboxRow) method.  It will take
+     * care of the connection details internally.
+     *
+     * @param obj the data object to update in the database.
+     * @param con the connection to use
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static void doUpdate(MailboxRow obj, Connection con)
+        throws TorqueException
+    {
+        doUpdate(buildCriteria(obj), con);
+        obj.setModified(false);
+    }
+
+    /**
+     * Method to delete.  This method is to be used during a transaction,
+     * otherwise use the doDelete(MailboxRow) method.  It will take
+     * care of the connection details internally.
+     *
+     * @param obj the data object to delete in the database.
+     * @param con the connection to use
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static void doDelete(MailboxRow obj, Connection con)
+        throws TorqueException
+    {
+        doDelete(buildSelectCriteria(obj), con);
+    }
+
+    /**
+     * Method to do deletes.
+     *
+     * @param pk ObjectKey that is used DELETE from database.
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static void doDelete(ObjectKey pk) throws TorqueException
+    {
+        BaseMailboxRowPeer
+           .doDelete(pk, (Connection) null);
+    }
+
+    /**
+     * Method to delete.  This method is to be used during a transaction,
+     * otherwise use the doDelete(ObjectKey) method.  It will take
+     * care of the connection details internally.
+     *
+     * @param pk the primary key for the object to delete in the database.
+     * @param con the connection to use
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static void doDelete(ObjectKey pk, Connection con)
+        throws TorqueException
+    {
+        doDelete(buildCriteria(pk), con);
+    }
+
+    /** Build a Criteria object from an ObjectKey */
+    public static Criteria buildCriteria( ObjectKey pk )
+    {
+        Criteria criteria = new Criteria();
+              criteria.add(MAILBOX_ID, pk);
+          return criteria;
+     }
+
+    /** Build a Criteria object from the data object for this peer */
+    public static Criteria buildCriteria( MailboxRow obj )
+    {
+        Criteria criteria = new Criteria(DATABASE_NAME);
+              if (!obj.isNew())
+            criteria.add(MAILBOX_ID, obj.getMailboxId());
+              criteria.add(NAME, obj.getName());
+              criteria.add(UID_VALIDITY, obj.getUidValidity());
+              criteria.add(LAST_UID, obj.getLastUid());
+              criteria.add(MESSAGE_COUNT, obj.getMessageCount());
+              criteria.add(SIZE, obj.getSize());
+          return criteria;
+    }
+
+    /** Build a Criteria object from the data object for this peer, skipping all binary columns */
+    public static Criteria buildSelectCriteria( MailboxRow obj )
+    {
+        Criteria criteria = new Criteria(DATABASE_NAME);
+              if (!obj.isNew())
+        {
+                    criteria.add(MAILBOX_ID, obj.getMailboxId());
+                }
+                          criteria.add(NAME, obj.getName());
+                              criteria.add(UID_VALIDITY, obj.getUidValidity());
+                              criteria.add(LAST_UID, obj.getLastUid());
+                              criteria.add(MESSAGE_COUNT, obj.getMessageCount());
+                              criteria.add(SIZE, obj.getSize());
+                  return criteria;
+    }
+ 
+    
+        /**
+     * Retrieve a single object by pk
+     *
+     * @param pk the primary key
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     * @throws NoRowsException Primary key was not found in database.
+     * @throws TooManyRowsException Primary key was not found in database.
+     */
+    public static MailboxRow retrieveByPK(long pk)
+        throws TorqueException, NoRowsException, TooManyRowsException
+    {
+        return retrieveByPK(SimpleKey.keyFor(pk));
+    }
+
+    /**
+     * Retrieve a single object by pk
+     *
+     * @param pk the primary key
+     * @param con the connection to use
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     * @throws NoRowsException Primary key was not found in database.
+     * @throws TooManyRowsException Primary key was not found in database.
+     */
+    public static MailboxRow retrieveByPK(long pk, Connection con)
+        throws TorqueException, NoRowsException, TooManyRowsException
+    {
+        return retrieveByPK(SimpleKey.keyFor(pk), con);
+    }
+  
+    /**
+     * Retrieve a single object by pk
+     *
+     * @param pk the primary key
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     * @throws NoRowsException Primary key was not found in database.
+     * @throws TooManyRowsException Primary key was not found in database.
+     */
+    public static MailboxRow retrieveByPK(ObjectKey pk)
+        throws TorqueException, NoRowsException, TooManyRowsException
+    {
+        Connection db = null;
+        MailboxRow retVal = null;
+        try
+        {
+            db = Torque.getConnection(DATABASE_NAME);
+            retVal = retrieveByPK(pk, db);
+        }
+        finally
+        {
+            Torque.closeConnection(db);
+        }
+        return retVal;
+    }
+
+    /**
+     * Retrieve a single object by pk
+     *
+     * @param pk the primary key
+     * @param con the connection to use
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     * @throws NoRowsException Primary key was not found in database.
+     * @throws TooManyRowsException Primary key was not found in database.
+     */
+    public static MailboxRow retrieveByPK(ObjectKey pk, Connection con)
+        throws TorqueException, NoRowsException, TooManyRowsException
+    {
+        Criteria criteria = buildCriteria(pk);
+        List v = doSelect(criteria, con);
+        if (v.size() == 0)
+        {
+            throw new NoRowsException("Failed to select a row.");
+        }
+        else if (v.size() > 1)
+        {
+            throw new TooManyRowsException("Failed to select only one row.");
+        }
+        else
+        {
+            return (MailboxRow)v.get(0);
+        }
+    }
+
+    /**
+     * Retrieve a multiple objects by pk
+     *
+     * @param pks List of primary keys
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static List retrieveByPKs(List pks)
+        throws TorqueException
+    {
+        Connection db = null;
+        List retVal = null;
+        try
+        {
+           db = Torque.getConnection(DATABASE_NAME);
+           retVal = retrieveByPKs(pks, db);
+        }
+        finally
+        {
+            Torque.closeConnection(db);
+        }
+        return retVal;
+    }
+
+    /**
+     * Retrieve a multiple objects by pk
+     *
+     * @param pks List of primary keys
+     * @param dbcon the connection to use
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static List retrieveByPKs( List pks, Connection dbcon )
+        throws TorqueException
+    {
+        List objs = null;
+        if (pks == null || pks.size() == 0)
+        {
+            objs = new LinkedList();
+        }
+        else
+        {
+            Criteria criteria = new Criteria();
+              criteria.addIn( MAILBOX_ID, pks );
+          objs = doSelect(criteria, dbcon);
+        }
+        return objs;
+    }
+
+ 
+
+
+
+        
+  
+  
+    
+  
+      /**
+     * Returns the TableMap related to this peer.  This method is not
+     * needed for general use but a specific application could have a need.
+     *
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    protected static TableMap getTableMap()
+        throws TorqueException
+    {
+        return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME);
+    }
+   
+    private static void setDbName(Criteria crit)
+    {
+        // Set the correct dbName if it has not been overridden
+        // crit.getDbName will return the same object if not set to
+        // another value so == check is okay and faster
+        if (crit.getDbName() == Torque.getDefaultDB())
+        {
+            crit.setDbName(DATABASE_NAME);
+        }
+    }
+}

Added: james/server/sandbox/imap-integration/src/java/org/apache/james/mailboxmanager/torque/om/BaseMessageBody.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/java/org/apache/james/mailboxmanager/torque/om/BaseMessageBody.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/java/org/apache/james/mailboxmanager/torque/om/BaseMessageBody.java (added)
+++ james/server/sandbox/imap-integration/src/java/org/apache/james/mailboxmanager/torque/om/BaseMessageBody.java Mon Oct  9 10:15:30 2006
@@ -0,0 +1,530 @@
+package org.apache.james.mailboxmanager.torque.om;
+
+
+import java.math.BigDecimal;
+import java.sql.Connection;
+import java.util.ArrayList;
+import java.util.Collections;
+import java.util.Date;
+import java.util.List;
+
+import org.apache.commons.lang.ObjectUtils;
+import org.apache.torque.TorqueException;
+import org.apache.torque.om.BaseObject;
+import org.apache.torque.om.ComboKey;
+import org.apache.torque.om.DateKey;
+import org.apache.torque.om.NumberKey;
+import org.apache.torque.om.ObjectKey;
+import org.apache.torque.om.SimpleKey;
+import org.apache.torque.om.StringKey;
+import org.apache.torque.om.Persistent;
+import org.apache.torque.util.Criteria;
+import org.apache.torque.util.Transaction;
+
+
+
+                      
+
+/**
+ * This class was autogenerated by Torque on:
+ *
+ * [Tue Sep 19 10:06:28 CEST 2006]
+ *
+ * You should not use this class directly.  It should not even be
+ * extended all references should be to MessageBody
+ */
+public abstract class BaseMessageBody extends BaseObject
+{
+    /** The Peer class */
+    private static final MessageBodyPeer peer =
+        new MessageBodyPeer();
+
+        
+    /** The value for the mailboxId field */
+    private long mailboxId;
+      
+    /** The value for the uid field */
+    private long uid;
+      
+    /** The value for the body field */
+    private byte[] body;
+  
+            
+    /**
+     * Get the MailboxId
+     *
+     * @return long
+     */
+    public long getMailboxId()
+    {
+        return mailboxId;
+    }
+
+                              
+    /**
+     * Set the value of MailboxId
+     *
+     * @param v new value
+     */
+    public void setMailboxId(long v) throws TorqueException
+    {
+    
+                  if (this.mailboxId != v)
+              {
+            this.mailboxId = v;
+            setModified(true);
+        }
+    
+                                  
+                if (aMessageRow != null && !(aMessageRow.getMailboxId() == v))
+                {
+            aMessageRow = null;
+        }
+      
+              }
+          
+    /**
+     * Get the Uid
+     *
+     * @return long
+     */
+    public long getUid()
+    {
+        return uid;
+    }
+
+                              
+    /**
+     * Set the value of Uid
+     *
+     * @param v new value
+     */
+    public void setUid(long v) throws TorqueException
+    {
+    
+                  if (this.uid != v)
+              {
+            this.uid = v;
+            setModified(true);
+        }
+    
+                                  
+                if (aMessageRow != null && !(aMessageRow.getUid() == v))
+                {
+            aMessageRow = null;
+        }
+      
+              }
+          
+    /**
+     * Get the Body
+     *
+     * @return byte[]
+     */
+    public byte[] getBody()
+    {
+        return body;
+    }
+
+                        
+    /**
+     * Set the value of Body
+     *
+     * @param v new value
+     */
+    public void setBody(byte[] v) 
+    {
+    
+                  if (!ObjectUtils.equals(this.body, v))
+              {
+            this.body = v;
+            setModified(true);
+        }
+    
+          
+              }
+  
+      
+        
+                            
+    
+        private MessageRow aMessageRow;
+
+    /**
+     * Declares an association between this object and a MessageRow object
+     *
+     * @param v MessageRow
+     * @throws TorqueException
+     */
+    public void setMessageRow(MessageRow v) throws TorqueException
+    {
+            if (v == null)
+        {
+                          setMailboxId( 0);
+              }
+        else
+        {
+            setMailboxId(v.getMailboxId());
+        }
+            if (v == null)
+        {
+                          setUid( 0);
+              }
+        else
+        {
+            setUid(v.getUid());
+        }
+            aMessageRow = v;
+    }
+
+                                        
+    /**
+     * Returns the associated MessageRow object.
+           * If it was not retrieved before, the object is retrieved from
+     * the database
+           *
+     * @return the associated MessageRow object
+           * @throws TorqueException
+           */
+    public MessageRow getMessageRow()
+              throws TorqueException
+          {
+              if (aMessageRow == null && (this.mailboxId != 0 && this.uid != 0))
+        {
+                              aMessageRow = MessageRowPeer.retrieveByPK(this.mailboxId, this.uid);
+                  
+            /* 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.
+               MessageRow obj = MessageRowPeer.retrieveByPK(this.mailboxId, this.uid);
+               obj.add${pCollName}(this);
+            */
+        }
+              return aMessageRow;
+    }
+
+    /**
+     * Return the associated MessageRow 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 MessageRow object
+     * @throws TorqueException
+     */
+    public MessageRow getMessageRow(Connection connection)
+        throws TorqueException
+    {
+        if (aMessageRow == null && (this.mailboxId != 0 && this.uid != 0))
+        {
+                          aMessageRow = MessageRowPeer.retrieveByPK(this.mailboxId, this.uid, connection);
+              
+            /* 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.
+               MessageRow obj = MessageRowPeer.retrieveByPK(this.mailboxId, this.uid, connection);
+               obj.add${pCollName}(this);
+            */
+        }
+        return aMessageRow;
+    }
+
+    /**
+     * Provides convenient way to set a relationship based on a
+     * ObjectKey, for example
+     * <code>bar.setFooKey(foo.getPrimaryKey())</code>
+     *
+         * Note: It is important that the xml schema used to create this class
+     * maintains consistency in the order of related columns between
+     * message_body and message.
+     * If for some reason this is impossible, this method should be
+     * overridden in <code>MessageBody</code>.
+         */
+    public void setMessageRowKey(ObjectKey key) throws TorqueException
+    {
+              SimpleKey[] keys = (SimpleKey[]) key.getValue();
+                
+                            setMailboxId(((NumberKey) keys[0]).longValue());
+                  
+                            setUid(((NumberKey) keys[1]).longValue());
+                            }
+       
+                
+    private static List fieldNames = null;
+
+    /**
+     * Generate a list of field names.
+     *
+     * @return a list of field names
+     */
+    public static synchronized List getFieldNames()
+    {
+        if (fieldNames == null)
+        {
+            fieldNames = new ArrayList();
+              fieldNames.add("MailboxId");
+              fieldNames.add("Uid");
+              fieldNames.add("Body");
+              fieldNames = Collections.unmodifiableList(fieldNames);
+        }
+        return fieldNames;
+    }
+
+    /**
+     * Retrieves a field from the object by name passed in as a String.
+     *
+     * @param name field name
+     * @return value
+     */
+    public Object getByName(String name)
+    {
+          if (name.equals("MailboxId"))
+        {
+                return new Long(getMailboxId());
+            }
+          if (name.equals("Uid"))
+        {
+                return new Long(getUid());
+            }
+          if (name.equals("Body"))
+        {
+                return getBody();
+            }
+          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.
+     *
+     * @param name peer name
+     * @return value
+     */
+    public Object getByPeerName(String name)
+    {
+          if (name.equals(MessageBodyPeer.MAILBOX_ID))
+        {
+                return new Long(getMailboxId());
+            }
+          if (name.equals(MessageBodyPeer.UID))
+        {
+                return new Long(getUid());
+            }
+          if (name.equals(MessageBodyPeer.BODY))
+        {
+                return getBody();
+            }
+          return null;
+    }
+
+    /**
+     * Retrieves a field from the object by Position as specified
+     * in the xml schema.  Zero-based.
+     *
+     * @param pos position in xml schema
+     * @return value
+     */
+    public Object getByPosition(int pos)
+    {
+            if (pos == 0)
+        {
+                return new Long(getMailboxId());
+            }
+              if (pos == 1)
+        {
+                return new Long(getUid());
+            }
+              if (pos == 2)
+        {
+                return getBody();
+            }
+              return null;
+    }
+     
+    /**
+     * Stores the object in the database.  If the object is new,
+     * it inserts it; otherwise an update is performed.
+     *
+     * @throws Exception
+     */
+    public void save() throws Exception
+    {
+          save(MessageBodyPeer.getMapBuilder()
+                .getDatabaseMap().getName());
+      }
+
+    /**
+     * Stores the object in the database.  If the object is new,
+     * it inserts it; otherwise an update is performed.
+       * 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.
+       *
+     * @param dbName
+     * @throws TorqueException
+     */
+    public void save(String dbName) throws TorqueException
+    {
+        Connection con = null;
+          try
+        {
+            con = Transaction.begin(dbName);
+            save(con);
+            Transaction.commit(con);
+        }
+        catch(TorqueException e)
+        {
+            Transaction.safeRollback(con);
+            throw e;
+        }
+      }
+
+      /** flag to prevent endless save loop, if this object is referenced
+        by another object which falls in this transaction. */
+    private boolean alreadyInSave = false;
+      /**
+     * 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
+     *
+     * @param con
+     * @throws TorqueException
+     */
+    public void save(Connection con) throws TorqueException
+    {
+          if (!alreadyInSave)
+        {
+            alreadyInSave = true;
+
+
+  
+            // If this object has been modified, then save it to the database.
+            if (isModified())
+            {
+                if (isNew())
+                {
+                    MessageBodyPeer.doInsert((MessageBody) this, con);
+                    setNew(false);
+                }
+                else
+                {
+                    MessageBodyPeer.doUpdate((MessageBody) this, con);
+                }
+                }
+
+                      alreadyInSave = false;
+        }
+      }
+
+                                              
+  
+    private final SimpleKey[] pks = new SimpleKey[2];
+    private final ComboKey comboPK = new ComboKey(pks);
+
+    /**
+     * Set the PrimaryKey with an ObjectKey
+     *
+     * @param key
+     */
+    public void setPrimaryKey(ObjectKey key) throws TorqueException
+    {
+        SimpleKey[] keys = (SimpleKey[]) key.getValue();
+        SimpleKey tmpKey = null;
+                      setMailboxId(((NumberKey)keys[0]).longValue());
+                        setUid(((NumberKey)keys[1]).longValue());
+              }
+
+    /**
+     * Set the PrimaryKey using SimpleKeys.
+     *
+         * @param mailboxId long
+         * @param uid long
+         */
+    public void setPrimaryKey( long mailboxId, long uid)
+        throws TorqueException
+    {
+            setMailboxId(mailboxId);
+            setUid(uid);
+        }
+
+    /**
+     * Set the PrimaryKey using a String.
+     */
+    public void setPrimaryKey(String key) throws TorqueException
+    {
+        setPrimaryKey(new ComboKey(key));
+    }
+  
+    /**
+     * returns an id that differentiates this object from others
+     * of its class.
+     */
+    public ObjectKey getPrimaryKey()
+    {
+              pks[0] = SimpleKey.keyFor(getMailboxId());
+                  pks[1] = SimpleKey.keyFor(getUid());
+                  return comboPK;
+      }
+ 
+
+    /**
+     * Makes a copy of this object.
+     * It creates a new object filling in the simple attributes.
+       * It then fills all the association collections and sets the
+     * related objects to isNew=true.
+       */
+      public MessageBody copy() throws TorqueException
+    {
+        return copyInto(new MessageBody());
+    }
+  
+    protected MessageBody copyInto(MessageBody copyObj) throws TorqueException
+    {
+          copyObj.setMailboxId(mailboxId);
+          copyObj.setUid(uid);
+          copyObj.setBody(body);
+  
+                            copyObj.setMailboxId( 0);
+                                      copyObj.setUid( 0);
+                  
+                return copyObj;
+    }
+
+    /**
+     * 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 MessageBodyPeer getPeer()
+    {
+        return peer;
+    }
+
+
+    public String toString()
+    {
+        StringBuffer str = new StringBuffer();
+        str.append("MessageBody:\n");
+        str.append("MailboxId = ")
+               .append(getMailboxId())
+             .append("\n");
+        str.append("Uid = ")
+               .append(getUid())
+             .append("\n");
+        str.append("Body = ")
+               .append("<binary>")
+             .append("\n");
+        return(str.toString());
+    }
+}

Added: james/server/sandbox/imap-integration/src/java/org/apache/james/mailboxmanager/torque/om/BaseMessageBodyPeer.java
URL: http://svn.apache.org/viewvc/james/server/sandbox/imap-integration/src/java/org/apache/james/mailboxmanager/torque/om/BaseMessageBodyPeer.java?view=auto&rev=454432
==============================================================================
--- james/server/sandbox/imap-integration/src/java/org/apache/james/mailboxmanager/torque/om/BaseMessageBodyPeer.java (added)
+++ james/server/sandbox/imap-integration/src/java/org/apache/james/mailboxmanager/torque/om/BaseMessageBodyPeer.java Mon Oct  9 10:15:30 2006
@@ -0,0 +1,955 @@
+package org.apache.james.mailboxmanager.torque.om;
+
+import java.math.BigDecimal;
+import java.sql.Connection;
+import java.sql.SQLException;
+import java.util.ArrayList;
+import java.util.Date;
+import java.util.Iterator;
+import java.util.LinkedList;
+import java.util.List;
+
+import org.apache.torque.NoRowsException;
+import org.apache.torque.TooManyRowsException;
+import org.apache.torque.Torque;
+import org.apache.torque.TorqueException;
+import org.apache.torque.map.MapBuilder;
+import org.apache.torque.map.TableMap;
+import org.apache.torque.om.DateKey;
+import org.apache.torque.om.NumberKey;
+import org.apache.torque.om.StringKey;
+import org.apache.torque.om.ObjectKey;
+import org.apache.torque.om.SimpleKey;
+import org.apache.torque.util.BasePeer;
+import org.apache.torque.util.Criteria;
+
+import com.workingdogs.village.DataSetException;
+import com.workingdogs.village.QueryDataSet;
+import com.workingdogs.village.Record;
+
+// Local classes
+import org.apache.james.mailboxmanager.torque.om.map.*;
+
+
+
+/**
+ * This class was autogenerated by Torque on:
+ *
+ * [Tue Sep 19 10:06:28 CEST 2006]
+ *
+ */
+public abstract class BaseMessageBodyPeer
+    extends BasePeer
+{
+
+    /** the default database name for this class */
+    public static final String DATABASE_NAME = "mailboxmanager";
+
+     /** the table name for this class */
+    public static final String TABLE_NAME = "message_body";
+
+    /**
+     * @return the map builder for this peer
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static MapBuilder getMapBuilder()
+        throws TorqueException
+    {
+        return getMapBuilder(MessageBodyMapBuilder.CLASS_NAME);
+    }
+
+      /** the column name for the MAILBOX_ID field */
+    public static final String MAILBOX_ID;
+      /** the column name for the UID field */
+    public static final String UID;
+      /** the column name for the BODY field */
+    public static final String BODY;
+  
+    static
+    {
+          MAILBOX_ID = "message_body.MAILBOX_ID";
+          UID = "message_body.UID";
+          BODY = "message_body.BODY";
+          if (Torque.isInit())
+        {
+            try
+            {
+                getMapBuilder(MessageBodyMapBuilder.CLASS_NAME);
+            }
+            catch (Exception e)
+            {
+                log.error("Could not initialize Peer", e);
+                throw new RuntimeException(e);
+            }
+        }
+        else
+        {
+            Torque.registerMapBuilder(MessageBodyMapBuilder.CLASS_NAME);
+        }
+    }
+ 
+    /** number of columns for this peer */
+    public static final int numColumns =  3;
+
+    /** A class that can be returned by this peer. */
+    protected static final String CLASSNAME_DEFAULT =
+        "org.apache.james.mailboxmanager.torque.om.MessageBody";
+
+    /** A class that can be returned by this peer. */
+    protected static final Class CLASS_DEFAULT = initClass(CLASSNAME_DEFAULT);
+
+    /**
+     * Class object initialization method.
+     *
+     * @param className name of the class to initialize
+     * @return the initialized class
+     */
+    private static Class initClass(String className)
+    {
+        Class c = null;
+        try
+        {
+            c = Class.forName(className);
+        }
+        catch (Throwable t)
+        {
+            log.error("A FATAL ERROR has occurred which should not "
+                + "have happened under any circumstance.  Please notify "
+                + "the Torque developers <to...@db.apache.org> "
+                + "and give as many details as possible (including the error "
+                + "stack trace).", t);
+
+            // Error objects should always be propogated.
+            if (t instanceof Error)
+            {
+                throw (Error) t.fillInStackTrace();
+            }
+        }
+        return c;
+    }
+
+    /**
+     * Get the list of objects for a ResultSet.  Please not that your
+     * resultset MUST return columns in the right order.  You can use
+     * getFieldNames() in BaseObject to get the correct sequence.
+     *
+     * @param results the ResultSet
+     * @return the list of objects
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static List resultSet2Objects(java.sql.ResultSet results)
+            throws TorqueException
+    {
+        try
+        {
+            QueryDataSet qds = null;
+            List rows = null;
+            try
+            {
+                qds = new QueryDataSet(results);
+                rows = getSelectResults(qds);
+            }
+            finally
+            {
+                if (qds != null)
+                {
+                    qds.close();
+                }
+            }
+
+            return populateObjects(rows);
+        }
+        catch (SQLException e)
+        {
+            throw new TorqueException(e);
+        }
+        catch (DataSetException e)
+        {
+            throw new TorqueException(e);
+        }
+    }
+
+
+  
+    /**
+     * Method to do inserts.
+     *
+     * @param criteria object used to create the INSERT statement.
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static ObjectKey doInsert(Criteria criteria)
+        throws TorqueException
+    {
+        return BaseMessageBodyPeer
+            .doInsert(criteria, (Connection) null);
+    }
+
+    /**
+     * Method to do inserts.  This method is to be used during a transaction,
+     * otherwise use the doInsert(Criteria) method.  It will take care of
+     * the connection details internally.
+     *
+     * @param criteria object used to create the INSERT statement.
+     * @param con the connection to use
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static ObjectKey doInsert(Criteria criteria, Connection con)
+        throws TorqueException
+    {
+        correctBooleans(criteria);
+
+        setDbName(criteria);
+
+        if (con == null)
+        {
+            return BasePeer.doInsert(criteria);
+        }
+        else
+        {
+            return BasePeer.doInsert(criteria, con);
+        }
+    }
+
+    /**
+     * Add all the columns needed to create a new object.
+     *
+     * @param criteria object containing the columns to add.
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static void addSelectColumns(Criteria criteria)
+            throws TorqueException
+    {
+          criteria.addSelectColumn(MAILBOX_ID);
+          criteria.addSelectColumn(UID);
+          criteria.addSelectColumn(BODY);
+      }
+
+    /**
+     * changes the boolean values in the criteria to the appropriate type,
+     * whenever a booleanchar or booleanint column is involved.
+     * This enables the user to create criteria using Boolean values
+     * for booleanchar or booleanint columns
+     * @param criteria the criteria in which the boolean values should be corrected
+     */
+    public static void correctBooleans(Criteria criteria)
+    {
+                          }
+
+    /**
+     * Create a new object of type cls from a resultset row starting
+     * from a specified offset.  This is done so that you can select
+     * other rows than just those needed for this object.  You may
+     * for example want to create two objects from the same row.
+     *
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static MessageBody row2Object(Record row,
+                                             int offset,
+                                             Class cls)
+        throws TorqueException
+    {
+        try
+        {
+            MessageBody obj = (MessageBody) cls.newInstance();
+            MessageBodyPeer.populateObject(row, offset, obj);
+                  obj.setModified(false);
+              obj.setNew(false);
+
+            return obj;
+        }
+        catch (InstantiationException e)
+        {
+            throw new TorqueException(e);
+        }
+        catch (IllegalAccessException e)
+        {
+            throw new TorqueException(e);
+        }
+    }
+
+    /**
+     * Populates an object from a resultset row starting
+     * from a specified offset.  This is done so that you can select
+     * other rows than just those needed for this object.  You may
+     * for example want to create two objects from the same row.
+     *
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static void populateObject(Record row,
+                                      int offset,
+                                      MessageBody obj)
+        throws TorqueException
+    {
+        try
+        {
+                obj.setMailboxId(row.getValue(offset + 0).asLong());
+                  obj.setUid(row.getValue(offset + 1).asLong());
+                  obj.setBody(row.getValue(offset + 2).asBytes());
+              }
+        catch (DataSetException e)
+        {
+            throw new TorqueException(e);
+        }
+    }
+
+    /**
+     * Method to do selects.
+     *
+     * @param criteria object used to create the SELECT statement.
+     * @return List of selected Objects
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static List doSelect(Criteria criteria) throws TorqueException
+    {
+        return populateObjects(doSelectVillageRecords(criteria));
+    }
+
+    /**
+     * Method to do selects within a transaction.
+     *
+     * @param criteria object used to create the SELECT statement.
+     * @param con the connection to use
+     * @return List of selected Objects
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static List doSelect(Criteria criteria, Connection con)
+        throws TorqueException
+    {
+        return populateObjects(doSelectVillageRecords(criteria, con));
+    }
+
+    /**
+     * Grabs the raw Village records to be formed into objects.
+     * This method handles connections internally.  The Record objects
+     * returned by this method should be considered readonly.  Do not
+     * alter the data and call save(), your results may vary, but are
+     * certainly likely to result in hard to track MT bugs.
+     *
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static List doSelectVillageRecords(Criteria criteria)
+        throws TorqueException
+    {
+        return BaseMessageBodyPeer
+            .doSelectVillageRecords(criteria, (Connection) null);
+    }
+
+    /**
+     * Grabs the raw Village records to be formed into objects.
+     * This method should be used for transactions
+     *
+     * @param criteria object used to create the SELECT statement.
+     * @param con the connection to use
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static List doSelectVillageRecords(Criteria criteria, Connection con)
+        throws TorqueException
+    {
+        if (criteria.getSelectColumns().size() == 0)
+        {
+            addSelectColumns(criteria);
+        }
+        correctBooleans(criteria);
+
+        setDbName(criteria);
+
+        // BasePeer returns a List of Value (Village) arrays.  The array
+        // order follows the order columns were placed in the Select clause.
+        if (con == null)
+        {
+            return BasePeer.doSelect(criteria);
+        }
+        else
+        {
+            return BasePeer.doSelect(criteria, con);
+        }
+    }
+
+    /**
+     * The returned List will contain objects of the default type or
+     * objects that inherit from the default.
+     *
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static List populateObjects(List records)
+        throws TorqueException
+    {
+        List results = new ArrayList(records.size());
+
+        // populate the object(s)
+        for (int i = 0; i < records.size(); i++)
+        {
+            Record row = (Record) records.get(i);
+              results.add(MessageBodyPeer.row2Object(row, 1,
+                MessageBodyPeer.getOMClass()));
+          }
+        return results;
+    }
+ 
+
+    /**
+     * The class that the Peer will make instances of.
+     * If the BO is abstract then you must implement this method
+     * in the BO.
+     *
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static Class getOMClass()
+        throws TorqueException
+    {
+        return CLASS_DEFAULT;
+    }
+
+    /**
+     * Method to do updates.
+     *
+     * @param criteria object containing data that is used to create the UPDATE
+     *        statement.
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static void doUpdate(Criteria criteria) throws TorqueException
+    {
+         BaseMessageBodyPeer
+            .doUpdate(criteria, (Connection) null);
+    }
+
+    /**
+     * Method to do updates.  This method is to be used during a transaction,
+     * otherwise use the doUpdate(Criteria) method.  It will take care of
+     * the connection details internally.
+     *
+     * @param criteria object containing data that is used to create the UPDATE
+     *        statement.
+     * @param con the connection to use
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static void doUpdate(Criteria criteria, Connection con)
+        throws TorqueException
+    {
+        Criteria selectCriteria = new Criteria(DATABASE_NAME, 2);
+        correctBooleans(criteria);
+
+  
+             selectCriteria.put(MAILBOX_ID, criteria.remove(MAILBOX_ID));
+      
+             selectCriteria.put(UID, criteria.remove(UID));
+      
+      
+        setDbName(criteria);
+
+        if (con == null)
+        {
+            BasePeer.doUpdate(selectCriteria, criteria);
+        }
+        else
+        {
+            BasePeer.doUpdate(selectCriteria, criteria, con);
+        }
+    }
+
+    /**
+     * Method to do deletes.
+     *
+     * @param criteria object containing data that is used DELETE from database.
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+     public static void doDelete(Criteria criteria) throws TorqueException
+     {
+         MessageBodyPeer
+            .doDelete(criteria, (Connection) null);
+     }
+
+    /**
+     * Method to do deletes.  This method is to be used during a transaction,
+     * otherwise use the doDelete(Criteria) method.  It will take care of
+     * the connection details internally.
+     *
+     * @param criteria object containing data that is used DELETE from database.
+     * @param con the connection to use
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+     public static void doDelete(Criteria criteria, Connection con)
+        throws TorqueException
+     {
+        correctBooleans(criteria);
+
+        setDbName(criteria);
+
+        if (con == null)
+        {
+            BasePeer.doDelete(criteria);
+        }
+        else
+        {
+            BasePeer.doDelete(criteria, con);
+        }
+     }
+
+    /**
+     * Method to do selects
+     *
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static List doSelect(MessageBody obj) throws TorqueException
+    {
+        return doSelect(buildSelectCriteria(obj));
+    }
+
+    /**
+     * Method to do inserts
+     *
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static void doInsert(MessageBody obj) throws TorqueException
+    {
+          doInsert(buildCriteria(obj));
+          obj.setNew(false);
+        obj.setModified(false);
+    }
+
+    /**
+     * @param obj the data object to update in the database.
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static void doUpdate(MessageBody obj) throws TorqueException
+    {
+        doUpdate(buildCriteria(obj));
+        obj.setModified(false);
+    }
+
+    /**
+     * @param obj the data object to delete in the database.
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static void doDelete(MessageBody obj) throws TorqueException
+    {
+        doDelete(buildSelectCriteria(obj));
+    }
+
+    /**
+     * Method to do inserts.  This method is to be used during a transaction,
+     * otherwise use the doInsert(MessageBody) 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 static void doInsert(MessageBody obj, Connection con)
+        throws TorqueException
+    {
+          doInsert(buildCriteria(obj), con);
+          obj.setNew(false);
+        obj.setModified(false);
+    }
+
+    /**
+     * Method to do update.  This method is to be used during a transaction,
+     * otherwise use the doUpdate(MessageBody) method.  It will take
+     * care of the connection details internally.
+     *
+     * @param obj the data object to update in the database.
+     * @param con the connection to use
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static void doUpdate(MessageBody obj, Connection con)
+        throws TorqueException
+    {
+        doUpdate(buildCriteria(obj), con);
+        obj.setModified(false);
+    }
+
+    /**
+     * Method to delete.  This method is to be used during a transaction,
+     * otherwise use the doDelete(MessageBody) method.  It will take
+     * care of the connection details internally.
+     *
+     * @param obj the data object to delete in the database.
+     * @param con the connection to use
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static void doDelete(MessageBody obj, Connection con)
+        throws TorqueException
+    {
+        doDelete(buildSelectCriteria(obj), con);
+    }
+
+    /**
+     * Method to do deletes.
+     *
+     * @param pk ObjectKey that is used DELETE from database.
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static void doDelete(ObjectKey pk) throws TorqueException
+    {
+        BaseMessageBodyPeer
+           .doDelete(pk, (Connection) null);
+    }
+
+    /**
+     * Method to delete.  This method is to be used during a transaction,
+     * otherwise use the doDelete(ObjectKey) method.  It will take
+     * care of the connection details internally.
+     *
+     * @param pk the primary key for the object to delete in the database.
+     * @param con the connection to use
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static void doDelete(ObjectKey pk, Connection con)
+        throws TorqueException
+    {
+        doDelete(buildCriteria(pk), con);
+    }
+
+    /** Build a Criteria object from an ObjectKey */
+    public static Criteria buildCriteria( ObjectKey pk )
+    {
+        Criteria criteria = new Criteria();
+          SimpleKey[] keys = (SimpleKey[])pk.getValue();
+                    criteria.add(MAILBOX_ID, keys[0]);
+                      criteria.add(UID, keys[1]);
+                    return criteria;
+     }
+
+    /** Build a Criteria object from the data object for this peer */
+    public static Criteria buildCriteria( MessageBody obj )
+    {
+        Criteria criteria = new Criteria(DATABASE_NAME);
+              criteria.add(MAILBOX_ID, obj.getMailboxId());
+              criteria.add(UID, obj.getUid());
+              criteria.add(BODY, obj.getBody());
+          return criteria;
+    }
+
+    /** Build a Criteria object from the data object for this peer, skipping all binary columns */
+    public static Criteria buildSelectCriteria( MessageBody obj )
+    {
+        Criteria criteria = new Criteria(DATABASE_NAME);
+                      criteria.add(MAILBOX_ID, obj.getMailboxId());
+                              criteria.add(UID, obj.getUid());
+                                return criteria;
+    }
+ 
+    
+    
+    /**
+     * Retrieve a single object by pk
+     *
+     * @param pk the primary key
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     * @throws NoRowsException Primary key was not found in database.
+     * @throws TooManyRowsException Primary key was not found in database.
+     */
+    public static MessageBody retrieveByPK(ObjectKey pk)
+        throws TorqueException, NoRowsException, TooManyRowsException
+    {
+        Connection db = null;
+        MessageBody retVal = null;
+        try
+        {
+            db = Torque.getConnection(DATABASE_NAME);
+            retVal = retrieveByPK(pk, db);
+        }
+        finally
+        {
+            Torque.closeConnection(db);
+        }
+        return retVal;
+    }
+
+    /**
+     * Retrieve a single object by pk
+     *
+     * @param pk the primary key
+     * @param con the connection to use
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     * @throws NoRowsException Primary key was not found in database.
+     * @throws TooManyRowsException Primary key was not found in database.
+     */
+    public static MessageBody retrieveByPK(ObjectKey pk, Connection con)
+        throws TorqueException, NoRowsException, TooManyRowsException
+    {
+        Criteria criteria = buildCriteria(pk);
+        List v = doSelect(criteria, con);
+        if (v.size() == 0)
+        {
+            throw new NoRowsException("Failed to select a row.");
+        }
+        else if (v.size() > 1)
+        {
+            throw new TooManyRowsException("Failed to select only one row.");
+        }
+        else
+        {
+            return (MessageBody)v.get(0);
+        }
+    }
+
+    /**
+     * Retrieve a multiple objects by pk
+     *
+     * @param pks List of primary keys
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static List retrieveByPKs(List pks)
+        throws TorqueException
+    {
+        Connection db = null;
+        List retVal = null;
+        try
+        {
+           db = Torque.getConnection(DATABASE_NAME);
+           retVal = retrieveByPKs(pks, db);
+        }
+        finally
+        {
+            Torque.closeConnection(db);
+        }
+        return retVal;
+    }
+
+    /**
+     * Retrieve a multiple objects by pk
+     *
+     * @param pks List of primary keys
+     * @param dbcon the connection to use
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    public static List retrieveByPKs( List pks, Connection dbcon )
+        throws TorqueException
+    {
+        List objs = null;
+        if (pks == null || pks.size() == 0)
+        {
+            objs = new LinkedList();
+        }
+        else
+        {
+            Criteria criteria = new Criteria();
+              Iterator iter = pks.iterator();
+            while (iter.hasNext())
+            {
+                ObjectKey pk = (ObjectKey)iter.next();
+                SimpleKey[] keys = (SimpleKey[])pk.getValue();
+                            Criteria.Criterion c0 = criteria.getNewCriterion(
+                        MAILBOX_ID, keys[0], Criteria.EQUAL);
+                                    Criteria.Criterion c1 = criteria.getNewCriterion(
+                        UID, keys[1], Criteria.EQUAL);
+                                    c0.and(c1);
+                          criteria.or(c0);
+            }
+          objs = doSelect(criteria, dbcon);
+        }
+        return objs;
+    }
+
+ 
+    /**
+     * retrieve object using using pk values.
+     *
+       * @param mailbox_id long
+       * @param uid long
+       */
+    public static MessageBody retrieveByPK(
+       long mailbox_id
+          , long uid
+              ) throws TorqueException
+    {
+        Connection db = null;
+        MessageBody retVal = null;
+        try
+        {
+           db = Torque.getConnection(DATABASE_NAME);
+           retVal = retrieveByPK(
+         mailbox_id
+          , uid
+                     , db);
+        }
+        finally
+        {
+            Torque.closeConnection(db);
+        }
+        return retVal;
+    }
+
+      /**
+     * retrieve object using using pk values.
+     *
+       * @param mailbox_id long
+       * @param uid long
+       * @param con Connection
+     */
+    public static MessageBody retrieveByPK(
+       long mailbox_id
+          , long uid
+             ,Connection con) throws TorqueException
+    {
+
+        Criteria criteria = new Criteria(5);
+          criteria.add(MAILBOX_ID, mailbox_id);
+          criteria.add(UID, uid);
+          List v = doSelect(criteria, con);
+        if (v.size() == 1)
+        {
+            return (MessageBody) v.get(0);
+        }
+        else
+        {
+            throw new TorqueException("Failed to select one and only one row.");
+        }
+    }
+
+
+
+          
+                                                                
+                
+                
+
+    /**
+     * selects a collection of MessageBody objects pre-filled with their
+     * MessageRow objects.
+     *
+     * 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 MessageBodyPeer.
+     *
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    protected static List doSelectJoinMessageRow(Criteria criteria)
+        throws TorqueException
+    {
+        return doSelectJoinMessageRow(criteria, null);
+    }
+
+    /**
+     * selects a collection of MessageBody objects pre-filled with their
+     * MessageRow objects.
+     *
+     * 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 MessageBodyPeer.
+     *
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    protected static List doSelectJoinMessageRow(Criteria criteria, Connection conn)
+        throws TorqueException
+    {
+        setDbName(criteria);
+
+        MessageBodyPeer.addSelectColumns(criteria);
+        int offset = numColumns + 1;
+        MessageRowPeer.addSelectColumns(criteria);
+
+
+                        criteria.addJoin(MessageBodyPeer.MAILBOX_ID,
+            MessageRowPeer.MAILBOX_ID);
+                criteria.addJoin(MessageBodyPeer.UID,
+            MessageRowPeer.UID);
+        
+        correctBooleans(criteria);
+
+        List rows;
+        if (conn == null)
+        {
+            rows = BasePeer.doSelect(criteria);
+        }
+        else
+        {
+            rows = BasePeer.doSelect(criteria,conn);
+        }
+
+        List results = new ArrayList();
+
+        for (int i = 0; i < rows.size(); i++)
+        {
+            Record row = (Record) rows.get(i);
+
+                            Class omClass = MessageBodyPeer.getOMClass();
+                    MessageBody obj1 = (MessageBody) MessageBodyPeer
+                .row2Object(row, 1, omClass);
+                     omClass = MessageRowPeer.getOMClass();
+                    MessageRow obj2 = (MessageRow)MessageRowPeer
+                .row2Object(row, offset, omClass);
+
+            boolean newObject = true;
+            for (int j = 0; j < results.size(); j++)
+            {
+                MessageBody temp_obj1 = (MessageBody)results.get(j);
+                MessageRow temp_obj2 = (MessageRow)temp_obj1.getMessageRow();
+                if (temp_obj2.getPrimaryKey().equals(obj2.getPrimaryKey()))
+                {
+                    newObject = false;
+                              temp_obj2.addMessageBody(obj1);
+                              break;
+                }
+            }
+                      if (newObject)
+            {
+                obj2.initMessageBodys();
+                obj2.addMessageBody(obj1);
+            }
+                      results.add(obj1);
+        }
+        return results;
+    }
+                    
+  
+    
+  
+      /**
+     * Returns the TableMap related to this peer.  This method is not
+     * needed for general use but a specific application could have a need.
+     *
+     * @throws TorqueException Any exceptions caught during processing will be
+     *         rethrown wrapped into a TorqueException.
+     */
+    protected static TableMap getTableMap()
+        throws TorqueException
+    {
+        return Torque.getDatabaseMap(DATABASE_NAME).getTable(TABLE_NAME);
+    }
+   
+    private static void setDbName(Criteria crit)
+    {
+        // Set the correct dbName if it has not been overridden
+        // crit.getDbName will return the same object if not set to
+        // another value so == check is okay and faster
+        if (crit.getDbName() == Torque.getDefaultDB())
+        {
+            crit.setDbName(DATABASE_NAME);
+        }
+    }
+}



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