You are viewing a plain text version of this content. The canonical link for it is here.
Posted to ojb-dev@db.apache.org by ar...@apache.org on 2005/10/03 19:35:25 UTC

cvs commit: db-ojb/src/java/org/apache/ojb/broker/core MtoNBroker.java

arminw      2005/10/03 10:35:25

  Modified:    src/java/org/apache/ojb/broker/accesslayer/sql
                        SqlGenerator.java SqlGeneratorDefaultImpl.java
                        SqlProcedureFKStatement.java
                        SqlProcedureStatement.java SqlSelectStatement.java
                        SqlStatement.java
               src/java/org/apache/ojb/broker/accesslayer
                        JdbcAccessImpl.java ResultSetAndStatement.java
                        RowReaderDefaultImpl.java SqlBasedRsIterator.java
               src/java/org/apache/ojb/broker/core MtoNBroker.java
  Added:       src/java/org/apache/ojb/broker/accesslayer/sql
                        SelectStatement.java
  Removed:     src/java/org/apache/ojb/broker/accesslayer/sql
                        SelectStatementWrapper.java
  Log:
  use SqlStatement as return value in all SqlGenerator methods, remove SelectStatementWrapper class
  
  Revision  Changes    Path
  1.16      +23 -14    db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlGenerator.java
  
  Index: SqlGenerator.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlGenerator.java,v
  retrieving revision 1.15
  retrieving revision 1.16
  diff -u -r1.15 -r1.16
  --- SqlGenerator.java	1 Oct 2005 13:56:13 -0000	1.15
  +++ SqlGenerator.java	3 Oct 2005 17:35:24 -0000	1.16
  @@ -40,70 +40,77 @@
        * @param table Name of the target table.
        * @param affectedColumns The columns to insert/update or the columns to select or <em>null</em> for delete statements.
        * @param whereClauseColumns The columns to include in a where-clause for update/delete or select statement.
  -     * @return String representation of the specified prepared statement.
  +     * @return Representation class of the sql statement.
        *
        * @see #TYPE_GENERIC_DELETE
        * @see #TYPE_GENERIC_INSERT
        * @see #TYPE_GENERIC_SELECT
        * @see #TYPE_GENERIC_UPDATE
        */
  -    public String getGenericPreparedStatement(int type, String table, String[] affectedColumns, String[] whereClauseColumns);
  +    public SqlStatement getGenericPreparedStatement(int type, String table, String[] affectedColumns, String[] whereClauseColumns);
   
       /**
        * generate a select-Statement according to query
        *
        * @param query The query to perform.
        * @param cld The {@link org.apache.ojb.broker.metadata.ClassDescriptor} of the target class or object.
  +     * @return Representation class of the sql statement.
        */
  -    public SelectStatementWrapper getPreparedSelectStatement(Query query, ClassDescriptor cld);
  +    public SelectStatement getPreparedSelectStatement(Query query, ClassDescriptor cld);
   
       /**
        * Generate a select-Statement according to query
        *
        * @param query The query to perform.
        * @param cld The {@link org.apache.ojb.broker.metadata.ClassDescriptor} of the target class or object.
  +     * @return Representation class of the sql statement.
        */
  -    public String getSelectStatementDep(Query query, ClassDescriptor cld);
  +    public SelectStatement getSelectStatementDep(Query query, ClassDescriptor cld);
   
       /**
        * Generate a select pk-columns only statement according to query.
        *
        * @param query The query to perform.
        * @param cld the ClassDescriptor
  +     * @return Representation class of the sql statement.
        */
  -    public SelectStatementWrapper getPreparedSelectPkStatement(Query query, ClassDescriptor cld);
  +    public SelectStatement getPreparedSelectPkStatement(Query query, ClassDescriptor cld);
   
       /**
        * Generate a prepared DELETE-Statement according to query
        *
        * @param query The query to perform.
        * @param cld The {@link org.apache.ojb.broker.metadata.ClassDescriptor} of the target class or object.
  +     * @return Representation class of the sql statement.
        */
  -    public String getPreparedDeleteStatement(Query query, ClassDescriptor cld);
  +    public SqlStatement getPreparedDeleteStatement(Query query, ClassDescriptor cld);
   
       /**
        * Generate a prepared DELETE-Statement for the Class
        * described by the {@link org.apache.ojb.broker.metadata.ClassDescriptor}.
        *
        * @param cld The {@link org.apache.ojb.broker.metadata.ClassDescriptor} of the target class or object.
  +     * @return Representation class of the sql statement.
        */
  -    public String getPreparedDeleteStatement(ClassDescriptor cld);
  +    public SqlStatement getPreparedDeleteStatement(ClassDescriptor cld);
   
       /**
        * Generate a prepared INSERT-Statement for the Class
        * described by the {@link org.apache.ojb.broker.metadata.ClassDescriptor}.
        *
        * @param cld The {@link org.apache.ojb.broker.metadata.ClassDescriptor} of the target class or object.
  +     * @return Representation class of the sql statement.
        */
  -    public String getPreparedInsertStatement(ClassDescriptor cld);
  +    public SqlStatement getPreparedInsertStatement(ClassDescriptor cld);
   
       /**
        * Generate a prepared SELECT-Statement for the Class
        * described by the {@link org.apache.ojb.broker.metadata.ClassDescriptor}.
        *
        * @param cld The {@link org.apache.ojb.broker.metadata.ClassDescriptor} of the target class or object.
  +     * @return Representation class of the sql statement.
        */
  -    public SelectStatementWrapper getPreparedSelectByPkStatement(ClassDescriptor cld);
  +    public SelectStatement getPreparedSelectByPkStatement(ClassDescriptor cld);
   
       /**
        * Generate a select-statement to check existence of an
  @@ -113,17 +120,18 @@
        * {@link #getPreparedSelectByPkStatement(org.apache.ojb.broker.metadata.ClassDescriptor)}.
        *
        * @param cld The {@link org.apache.ojb.broker.metadata.ClassDescriptor} of the target class or object.
  -     * @return The sql string.
  +     * @return Representation class of the sql statement.
        */
  -    public String getPreparedExistsStatement(ClassDescriptor cld);
  +    public SqlStatement getPreparedExistsStatement(ClassDescriptor cld);
   
       /**
        * Generate a prepared UPDATE-Statement for the Class
        * described by the {@link org.apache.ojb.broker.metadata.ClassDescriptor}.
        *
        * @param cld The {@link org.apache.ojb.broker.metadata.ClassDescriptor} of the target class or object.
  +     * @return Representation class of the sql statement.
        */
  -    public String getPreparedUpdateStatement(ClassDescriptor cld);
  +    public SqlStatement getPreparedUpdateStatement(ClassDescriptor cld);
   
       /**
        * Generate a prepared UPDATE-Statement for the Class
  @@ -132,6 +140,7 @@
        * @param cld The {@link org.apache.ojb.broker.metadata.ClassDescriptor} of the target class or object.
        * @param fields Array of {@link org.apache.ojb.broker.metadata.FieldDescriptor} to update.
        * <strong>Note:</strong> Only non-primary-key, read-write fields are allowed.
  +     * @return Representation class of the sql statement.
        */
  -    public String getPreparedUpdateStatement(ClassDescriptor cld, FieldDescriptor[] fields);
  +    public SqlStatement getPreparedUpdateStatement(ClassDescriptor cld, FieldDescriptor[] fields);
   }
  
  
  
  1.35      +81 -98    db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlGeneratorDefaultImpl.java
  
  Index: SqlGeneratorDefaultImpl.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlGeneratorDefaultImpl.java,v
  retrieving revision 1.34
  retrieving revision 1.35
  diff -u -r1.34 -r1.35
  --- SqlGeneratorDefaultImpl.java	1 Oct 2005 13:56:13 -0000	1.34
  +++ SqlGeneratorDefaultImpl.java	3 Oct 2005 17:35:24 -0000	1.35
  @@ -57,9 +57,9 @@
       }
   
       /** @see SqlGenerator#getGenericPreparedStatement(int, String, String[], String[]) */
  -    public String getGenericPreparedStatement(int type, String table, String[] affectedColumns, String[] whereClauseColumns)
  +    public SqlStatement getGenericPreparedStatement(int type, String table, String[] affectedColumns, String[] whereClauseColumns)
       {
  -        String result = null;
  +        SqlStatement result = null;
           switch(type)
           {
               case SqlGenerator.TYPE_GENERIC_DELETE:
  @@ -78,48 +78,43 @@
           return result;
       }
   
  -    private String buildGenericDelete(String table, String[] whereClauseColumns)
  +    private SqlStatement buildGenericDelete(String table, String[] whereClauseColumns)
       {
  -        String result = (new SqlGenericDeleteStatement(m_platform, m_logger, table, whereClauseColumns)).getStatement();
  +        SqlStatement result = (new SqlGenericDeleteStatement(m_platform, m_logger, table, whereClauseColumns));
   
           if(m_logger.isDebugEnabled())
           {
  -            m_logger.debug("SQL:" + result);
  +            m_logger.debug("SQL:" + result.getStatement());
           }
           return result;
       }
   
  -    private String buildGenericInsert(String table, String[] affectedColumns)
  +    private SqlStatement buildGenericInsert(String table, String[] affectedColumns)
       {
           SqlStatement sql = new SqlGenericInsertStatement(m_platform, m_logger, table, affectedColumns);
  -        String result = sql.getStatement();
  -
           if(m_logger.isDebugEnabled())
           {
  -            m_logger.debug("SQL:" + result);
  +            m_logger.debug("SQL:" + sql.getStatement());
           }
  -        return result;
  +        return sql;
       }
   
  -    private String buildGenericSelect(String table, String[] affectedColumns, String[] whereClauseColumns)
  +    private SqlStatement buildGenericSelect(String table, String[] affectedColumns, String[] whereClauseColumns)
       {
           SqlStatement sql = new SqlGenericSelectStatement(m_platform, m_logger, table, affectedColumns, whereClauseColumns);
  -        String result = sql.getStatement();
  -
           if(m_logger.isDebugEnabled())
           {
  -            m_logger.debug("SQL: " + result);
  +            m_logger.debug("SQL: " + sql.getStatement());
           }
  -        return result;
  +        return sql;
       }
   
  -    private String buildGenericUpdate(String table, String[] affectedColumns, String[] whereClauseColumns)
  +    private SqlStatement buildGenericUpdate(String table, String[] affectedColumns, String[] whereClauseColumns)
       {
  -        String result = (new SqlGenericUpdateStatement(m_platform, m_logger, table, affectedColumns, whereClauseColumns)).getStatement();
  -
  +        SqlStatement result = (new SqlGenericUpdateStatement(m_platform, m_logger, table, affectedColumns, whereClauseColumns));
           if(m_logger.isDebugEnabled())
           {
  -            m_logger.debug("SQL:" + result);
  +            m_logger.debug("SQL:" + result.getStatement());
           }
           return result;
       }
  @@ -130,14 +125,14 @@
        *
        * @param cld the ClassDescriptor
        */
  -    public String getPreparedDeleteStatement(ClassDescriptor cld)
  +    public SqlStatement getPreparedDeleteStatement(ClassDescriptor cld)
       {
  -        String result;
  +        SqlStatement sql;
           SqlForClass sfc = getSqlForClass(cld);
  -        result = sfc.getDeleteSql();
  -        if(result == null)
  +        sql = sfc.getDeleteSql();
  +        if(sql == null)
           {
  -            SqlStatement sql;
  +
               ProcedureDescriptor pd = cld.getDeleteProcedure();
   
               if(pd == null)
  @@ -148,16 +143,15 @@
               {
                   sql = new SqlProcedureStatement(pd, m_logger);
               }
  -            result = sql.getStatement();
               // set the sql string
  -            sfc.setDeleteSql(result);
  +            sfc.setDeleteSql(sql);
   
               if(m_logger.isDebugEnabled())
               {
  -                m_logger.debug("SQL:" + result);
  +                m_logger.debug("SQL:" + sql.getStatement());
               }
           }
  -        return result;
  +        return sql;
       }
   
       /**
  @@ -166,14 +160,13 @@
        *
        * @param cld the ClassDescriptor
        */
  -    public String getPreparedInsertStatement(ClassDescriptor cld)
  +    public SqlStatement getPreparedInsertStatement(ClassDescriptor cld)
       {
  -        String result;
  +        SqlStatement sql;
           SqlForClass sfc = getSqlForClass(cld);
  -        result = sfc.getInsertSql();
  -        if(result == null)
  +        sql = sfc.getInsertSql();
  +        if(sql == null)
           {
  -            SqlStatement sql;
               ProcedureDescriptor pd = cld.getInsertProcedure();
   
               if(pd == null)
  @@ -184,16 +177,15 @@
               {
                   sql = new SqlProcedureStatement(pd, m_logger);
               }
  -            result = sql.getStatement();
               // set the sql string
  -            sfc.setInsertSql(result);
  +            sfc.setInsertSql(sql);
   
               if(m_logger.isDebugEnabled())
               {
  -                m_logger.debug("SQL:" + result);
  +                m_logger.debug("SQL:" + sql.getStatement());
               }
           }
  -        return result;
  +        return sql;
       }
   
       /**
  @@ -201,52 +193,51 @@
        *
        * @param cld the ClassDescriptor
        */
  -    public SelectStatementWrapper getPreparedSelectByPkStatement(ClassDescriptor cld)
  +    public SelectStatement getPreparedSelectByPkStatement(ClassDescriptor cld)
       {
  +        SelectStatement sql;
           SqlForClass sfc = getSqlForClass(cld);
  -        SqlStatement result = sfc.getSelectByPKSql();
  -        if(result == null)
  +        sql = sfc.getSelectByPKSql();
  +        if(sql == null)
           {
               ProcedureDescriptor pd = cld.getSelectByPKProcedure();
  -
               if(pd == null)
               {
  -                result = new SqlSelectByPkStatement(m_platform, m_logger, cld);
  +                sql = new SqlSelectByPkStatement(m_platform, m_logger, cld);
               }
               else
               {
  -                result = new SqlProcedureStatement(pd, m_logger);
  +                sql = new SqlProcedureStatement(pd, m_logger);
               }
   
               // set the sql string
  -            sfc.setSelectByPKSql(result);
  +            sfc.setSelectByPKSql(sql);
   
               if(m_logger.isDebugEnabled())
               {
  -                m_logger.debug("SQL:" + result);
  +                m_logger.debug("SQL:" + sql.getStatement());
               }
           }
  -        return new SelectStatementWrapper(null, result);
  +        return sql;
       }
   
  -    public String getPreparedExistsStatement(ClassDescriptor cld)
  +    public SqlStatement getPreparedExistsStatement(ClassDescriptor cld)
       {
  -        String result;
  +        SqlStatement sql;
           SqlForClass sfc = getSqlForClass(cld);
  -        result = sfc.getSelectExists();
  -        if(result == null)
  +        sql = sfc.getSelectExists();
  +        if(sql == null)
           {
               // TODO: Should we support a procedure call for this too??
  -            SqlStatement sql = new SqlExistStatement(m_platform, m_logger, cld);
  -            result = sql.getStatement();
  +            sql = new SqlExistStatement(m_platform, m_logger, cld);
               // set the sql string
  -            sfc.setSelectExists(result);
  +            sfc.setSelectExists(sql);
               if(m_logger.isDebugEnabled())
               {
  -                m_logger.debug("SQL:" + result);
  +                m_logger.debug("SQL:" + sql.getStatement());
               }
           }
  -        return result;
  +        return sql;
       }
   
       /**
  @@ -255,10 +246,10 @@
        * @param query the Query
        * @param cld the ClassDescriptor
        */
  -    public SelectStatementWrapper getPreparedSelectStatement(Query query, ClassDescriptor cld)
  +    public SelectStatement getPreparedSelectStatement(Query query, ClassDescriptor cld)
       {
           ProcedureDescriptor pd = cld.getSelectByFKProcedure();
  -        SqlStatement sql;
  +        SelectStatement sql;
   
           if((query instanceof QueryByExample) && (pd != null))
           {
  @@ -271,7 +262,7 @@
               sql = new SqlSelectStatement(m_platform, m_logger, cld, query);
           }
   
  -        return new SelectStatementWrapper(query, sql);
  +        return sql;
       }
   
       /**
  @@ -280,12 +271,9 @@
        * @param query the Query
        * @param cld the ClassDescriptor
        */
  -    public SelectStatementWrapper getPreparedSelectPkStatement(Query query, ClassDescriptor cld)
  +    public SelectStatement getPreparedSelectPkStatement(Query query, ClassDescriptor cld)
       {
  -        SqlStatement sql;
  -        sql = new SqlSelectPkStatement(m_platform, m_logger, cld, query);
  -
  -        return new SelectStatementWrapper(query, sql);
  +        return new SqlSelectPkStatement(m_platform, m_logger, cld, query);
       }
   
       /**
  @@ -294,9 +282,9 @@
        * @param query the Query
        * @param cld the ClassDescriptor
        */
  -    public String getPreparedDeleteStatement(Query query, ClassDescriptor cld)
  +    public SqlStatement getPreparedDeleteStatement(Query query, ClassDescriptor cld)
       {
  -        return new SqlDeleteByQuery(m_platform, m_logger, cld, query).getStatement();
  +        return new SqlDeleteByQuery(m_platform, m_logger, cld, query);
       }
   
       /**
  @@ -305,39 +293,36 @@
        *
        * @param cld the ClassDescriptor
        */
  -    public String getPreparedUpdateStatement(ClassDescriptor cld)
  +    public SqlStatement getPreparedUpdateStatement(ClassDescriptor cld)
       {
  -        String result;
           SqlForClass sfc = getSqlForClass(cld);
  -        result = sfc.getUpdateSql();
  +        SqlStatement result = sfc.getUpdateSql();
           if(result == null)
           {
  -            SqlStatement sql;
               ProcedureDescriptor pd = cld.getUpdateProcedure();
   
               if(pd == null)
               {
  -                sql = new SqlUpdateStatement(m_platform, m_logger, cld);
  +                result = new SqlUpdateStatement(m_platform, m_logger, cld);
               }
               else
               {
  -                sql = new SqlProcedureStatement(pd, m_logger);
  +                result = new SqlProcedureStatement(pd, m_logger);
               }
  -            result = sql.getStatement();
               // set the sql string
               sfc.setUpdateSql(result);
   
               if(m_logger.isDebugEnabled())
               {
  -                m_logger.debug("SQL:" + result);
  +                m_logger.debug("SQL:" + result.getStatement());
               }
           }
           return result;
       }
   
  -    public String getPreparedUpdateStatement(ClassDescriptor cld, FieldDescriptor[] fields)
  +    public SqlStatement getPreparedUpdateStatement(ClassDescriptor cld, FieldDescriptor[] fields)
       {
  -        String result;
  +        SqlStatement result;
           // TODO: Check this! Should we check if all fields non-PK fields or should we assume
           // that only non-PK fields will be specified?
           if(fields.length == cld.getNonPkRwFields().length)
  @@ -346,21 +331,19 @@
           }
           else
           {
  -            SqlStatement sql;
               ProcedureDescriptor pd = cld.getUpdateProcedure();
               if(pd == null)
               {
  -                sql = new SqlUpdateFieldsStatement(m_platform, m_logger, cld, fields);
  +                result = new SqlUpdateFieldsStatement(m_platform, m_logger, cld, fields);
               }
               else
               {
                   // when procedures are used we can't use changed fields information
                   // TODO: Is it possible to use stored procedures handling with different numbers of fields??
  -                sql = new SqlProcedureStatement(pd, m_logger);
  +                result = new SqlProcedureStatement(pd, m_logger);
               }
  -            result = sql.getStatement();
           }
  -        if(m_logger.isDebugEnabled()) m_logger.debug("SQL:" + result);
  +        if(m_logger.isDebugEnabled()) m_logger.debug("SQL:" + result.getStatement());
           return result;
       }
   
  @@ -370,9 +353,9 @@
        * @param query the Query
        * @param cld the ClassDescriptor
        */
  -    public String getSelectStatementDep(Query query, ClassDescriptor cld)
  +    public SelectStatement getSelectStatementDep(Query query, ClassDescriptor cld)
       {
  -        return new SqlSelectStatement(m_platform, m_logger, cld, query).getStatement();
  +        return new SqlSelectStatement(m_platform, m_logger, cld, query);
       }
   
       /**
  @@ -608,58 +591,58 @@
        */
       public static class SqlForClass
       {
  -        private String deleteSql;
  -        private String insertSql;
  -        private String updateSql;
  -        private SqlStatement selectByPKSql;
  -        private String selectExists;
  +        private SqlStatement deleteSql;
  +        private SqlStatement insertSql;
  +        private SqlStatement updateSql;
  +        private SelectStatement selectByPKSql;
  +        private SqlStatement selectExists;
   
  -        public String getDeleteSql()
  +        public SqlStatement getDeleteSql()
           {
               return deleteSql;
           }
   
  -        public void setDeleteSql(String deleteSql)
  +        public void setDeleteSql(SqlStatement deleteSql)
           {
               this.deleteSql = deleteSql;
           }
   
  -        public String getInsertSql()
  +        public SqlStatement getInsertSql()
           {
               return insertSql;
           }
   
  -        public void setInsertSql(String insertSql)
  +        public void setInsertSql(SqlStatement insertSql)
           {
               this.insertSql = insertSql;
           }
   
  -        public String getUpdateSql()
  +        public SqlStatement getUpdateSql()
           {
               return updateSql;
           }
   
  -        public void setUpdateSql(String updateSql)
  +        public void setUpdateSql(SqlStatement updateSql)
           {
               this.updateSql = updateSql;
           }
   
  -        public SqlStatement getSelectByPKSql()
  +        public SelectStatement getSelectByPKSql()
           {
               return selectByPKSql;
           }
   
  -        public void setSelectByPKSql(SqlStatement selectByPKSql)
  +        public void setSelectByPKSql(SelectStatement selectByPKSql)
           {
               this.selectByPKSql = selectByPKSql;
           }
   
  -        public String getSelectExists()
  +        public SqlStatement getSelectExists()
           {
               return selectExists;
           }
   
  -        public void setSelectExists(String selectExists)
  +        public void setSelectExists(SqlStatement selectExists)
           {
               this.selectExists = selectExists;
           }
  
  
  
  1.2       +15 -2     db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlProcedureFKStatement.java
  
  Index: SqlProcedureFKStatement.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlProcedureFKStatement.java,v
  retrieving revision 1.1
  retrieving revision 1.2
  diff -u -r1.1 -r1.2
  --- SqlProcedureFKStatement.java	24 Apr 2005 16:29:10 -0000	1.1
  +++ SqlProcedureFKStatement.java	3 Oct 2005 17:35:24 -0000	1.2
  @@ -21,7 +21,10 @@
   import java.util.Iterator;
   
   import org.apache.ojb.broker.metadata.ArgumentDescriptor;
  +import org.apache.ojb.broker.metadata.FieldDescriptor;
  +import org.apache.ojb.broker.metadata.JdbcType;
   import org.apache.ojb.broker.metadata.ProcedureDescriptor;
  +import org.apache.ojb.broker.query.Query;
   import org.apache.ojb.broker.query.QueryByExample;
   import org.apache.ojb.broker.query.SelectionCriteria;
   import org.apache.ojb.broker.util.logging.Logger;
  @@ -35,7 +38,7 @@
    * @author <a href="mailto:vgritsenko@apache.org">Vadim Gritsenko</a>
    * @version $Id$
    */
  -public class SqlProcedureFKStatement implements SqlStatement
  +public class SqlProcedureFKStatement implements SelectStatement
   {
   
       /**
  @@ -116,4 +119,14 @@
           sb.append(") }");
           return sb.toString();
       }
  +
  +    public Query getQueryInstance()
  +    {
  +        return query;
  +    }
  +
  +    public int getColumnIndex(FieldDescriptor fld)
  +    {
  +        return JdbcType.MIN_INT;
  +    }
   }
  
  
  
  1.6       +15 -2     db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlProcedureStatement.java
  
  Index: SqlProcedureStatement.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlProcedureStatement.java,v
  retrieving revision 1.5
  retrieving revision 1.6
  diff -u -r1.5 -r1.6
  --- SqlProcedureStatement.java	4 Apr 2004 23:53:32 -0000	1.5
  +++ SqlProcedureStatement.java	3 Oct 2005 17:35:24 -0000	1.6
  @@ -16,7 +16,10 @@
    */
   
   import org.apache.ojb.broker.metadata.ProcedureDescriptor;
  +import org.apache.ojb.broker.metadata.FieldDescriptor;
  +import org.apache.ojb.broker.metadata.JdbcType;
   import org.apache.ojb.broker.util.logging.Logger;
  +import org.apache.ojb.broker.query.Query;
   
   /**
    * Model a call to a stored procedure based on ProcedureDescriptors
  @@ -27,7 +30,7 @@
    * @version $Id$
    */
   
  -public class SqlProcedureStatement implements SqlStatement
  +public class SqlProcedureStatement implements SelectStatement
   {
   
       /**
  @@ -88,4 +91,14 @@
           sb.append(") }");
           return sb.toString();
       }
  +
  +    public Query getQueryInstance()
  +    {
  +        return null;
  +    }
  +
  +    public int getColumnIndex(FieldDescriptor fld)
  +    {
  +        return JdbcType.MIN_INT;
  +    }
   }
  
  
  
  1.44      +25 -2     db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlSelectStatement.java
  
  Index: SqlSelectStatement.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlSelectStatement.java,v
  retrieving revision 1.43
  retrieving revision 1.44
  diff -u -r1.43 -r1.44
  --- SqlSelectStatement.java	29 Sep 2005 23:32:16 -0000	1.43
  +++ SqlSelectStatement.java	3 Oct 2005 17:35:24 -0000	1.44
  @@ -26,6 +26,7 @@
   import org.apache.ojb.broker.metadata.ClassDescriptor;
   import org.apache.ojb.broker.metadata.DescriptorRepository;
   import org.apache.ojb.broker.metadata.FieldDescriptor;
  +import org.apache.ojb.broker.metadata.JdbcType;
   import org.apache.ojb.broker.platforms.Platform;
   import org.apache.ojb.broker.query.Criteria;
   import org.apache.ojb.broker.query.Query;
  @@ -40,7 +41,7 @@
    * @author <a href="mailto:jbraeuchi@hotmail.com">Jakob Braeuchi</a>
    * @version $Id$
    */
  -public class SqlSelectStatement extends SqlQueryStatement
  +public class SqlSelectStatement extends SqlQueryStatement implements SelectStatement
   {
       private FieldDescriptor[] fieldsForSelect;
   
  @@ -440,4 +441,26 @@
               appendColumn(cldSuper.getFullTableName(), field.getColumnName(), buf);
           }
       }
  +
  +    public Query getQueryInstance()
  +    {
  +        return getQuery();
  +    }
  +
  +    public int getColumnIndex(FieldDescriptor fld)
  +    {
  +        int index = JdbcType.MIN_INT;
  +        if (fieldsForSelect != null)
  +        {
  +            for (int i = 0; i < fieldsForSelect.length; i++)
  +            {
  +                if (fieldsForSelect[i].equals(fld))
  +                {
  +                    index = i + 1;  // starts at 1
  +                    break;
  +                }
  +            }
  +        }
  +        return index;
  +    }
   }
  
  
  
  1.7       +1 -3      db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlStatement.java
  
  Index: SqlStatement.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SqlStatement.java,v
  retrieving revision 1.6
  retrieving revision 1.7
  diff -u -r1.6 -r1.7
  --- SqlStatement.java	4 Apr 2004 23:53:32 -0000	1.6
  +++ SqlStatement.java	3 Oct 2005 17:35:24 -0000	1.7
  @@ -25,10 +25,8 @@
    */
   public interface SqlStatement
   {
  - 
       /**
        * Answer the SELECT by primary key Sql for the Statement
        */
       public String getStatement();
  -    
   }
  
  
  
  1.1                  db-ojb/src/java/org/apache/ojb/broker/accesslayer/sql/SelectStatement.java
  
  Index: SelectStatement.java
  ===================================================================
  package org.apache.ojb.broker.accesslayer.sql;
  
  /* Copyright 2002-2004 The Apache Software Foundation
   *
   * Licensed 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.lang.Object;
  import java.sql.ResultSet;
  
  import org.apache.ojb.broker.query.Query;
  import org.apache.ojb.broker.metadata.FieldDescriptor;
  
  /**
   * This class
   *
   * @author <a href="mailto:arminw@apache.org">Armin Waibel</a>
   * @version $Id: SelectStatement.java,v 1.1 2005/10/03 17:35:24 arminw Exp $
   */
  public interface SelectStatement extends SqlStatement
  {   
      /**
       * Returns the {@link org.apache.ojb.broker.query.Query} instance
       * this statement based on.
       * @return The {@link org.apache.ojb.broker.query.Query} instance or <em>null</em>
       * if no query is used to generate the select string.
       */
      public Query getQueryInstance();
  
      /**
       * Returns the column index of the specified {@link org.apache.ojb.broker.metadata.FieldDescriptor}
       * in the {@link java.sql.ResultSet} after performing the query.
       *
       * @param fld The {@link org.apache.ojb.broker.metadata.FieldDescriptor}.
       * @return The column index or {@link org.apache.ojb.broker.metadata.JdbcType#MIN_INT} if
       * column index is not supported.
       */
      public int getColumnIndex(FieldDescriptor fld);
  }
  
  
  
  1.39      +29 -12    db-ojb/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java
  
  Index: JdbcAccessImpl.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java,v
  retrieving revision 1.38
  retrieving revision 1.39
  diff -u -r1.38 -r1.39
  --- JdbcAccessImpl.java	1 Oct 2005 13:56:13 -0000	1.38
  +++ JdbcAccessImpl.java	3 Oct 2005 17:35:25 -0000	1.39
  @@ -38,13 +38,14 @@
   import org.apache.ojb.broker.PersistenceBrokerSQLException;
   import org.apache.ojb.broker.accesslayer.batch.BatchInfo;
   import org.apache.ojb.broker.accesslayer.batch.BatchManager;
  -import org.apache.ojb.broker.accesslayer.sql.SelectStatementWrapper;
  +import org.apache.ojb.broker.accesslayer.sql.SelectStatement;
   import org.apache.ojb.broker.core.ValueContainer;
   import org.apache.ojb.broker.metadata.ArgumentDescriptor;
   import org.apache.ojb.broker.metadata.ClassDescriptor;
   import org.apache.ojb.broker.metadata.FieldDescriptor;
   import org.apache.ojb.broker.metadata.JdbcTypesHelper;
   import org.apache.ojb.broker.metadata.ProcedureDescriptor;
  +import org.apache.ojb.broker.metadata.JdbcType;
   import org.apache.ojb.broker.platforms.Platform;
   import org.apache.ojb.broker.query.BetweenCriteria;
   import org.apache.ojb.broker.query.Criteria;
  @@ -98,7 +99,7 @@
       {
           if(log.isDebugEnabled()) log.debug("executeDelete: " + obj);
           final StatementManager sm = broker.serviceStatementManager();
  -        final String sql = broker.serviceSqlGenerator().getPreparedDeleteStatement(cld);
  +        final String sql = broker.serviceSqlGenerator().getPreparedDeleteStatement(cld).getStatement();
           final boolean isStoredProcedure = useCallableDeleteStatement(cld);
           final ValueContainer[] values;
   
  @@ -181,7 +182,7 @@
       {
           if(log.isDebugEnabled()) log.debug("executeInsert: " + obj);
           final StatementManager sm = broker.serviceStatementManager();
  -        final String sql = broker.serviceSqlGenerator().getPreparedInsertStatement(cld);
  +        final String sql = broker.serviceSqlGenerator().getPreparedInsertStatement(cld).getStatement();
           final boolean isStoredProcedure = useCallableInsertStatement(cld);
           final ValueContainer[] values;
   
  @@ -328,7 +329,7 @@
           if(log.isDebugEnabled()) log.debug("executeUpdate fields for object: " + obj);
   
           final StatementManager sm = broker.serviceStatementManager();
  -        final String sql = broker.serviceSqlGenerator().getPreparedUpdateStatement(cld, fieldsToUpdate);
  +        final String sql = broker.serviceSqlGenerator().getPreparedUpdateStatement(cld, fieldsToUpdate).getStatement();
           final ValueContainer[] values;
           final boolean isStoredProcedure = useCallableUpdateStatement(cld);
           if(isStoredProcedure)
  @@ -410,7 +411,7 @@
       public boolean doesExist(ClassDescriptor cld, Identity oid)
       {
           boolean result = false;
  -        String sql = broker.serviceSqlGenerator().getPreparedExistsStatement(cld);
  +        String sql = broker.serviceSqlGenerator().getPreparedExistsStatement(cld).getStatement();
           StatementManager sm = broker.serviceStatementManager();
           PreparedStatement stmt = null;
           ResultSet rs = null;
  @@ -442,7 +443,7 @@
       public void executeDelete(Query query, ClassDescriptor cld) throws PersistenceBrokerException
       {
           if(log.isDebugEnabled()) log.debug("executeDelete (by Query): " + query);
  -        final String sql = this.broker.serviceSqlGenerator().getPreparedDeleteStatement(query, cld);
  +        final String sql = this.broker.serviceSqlGenerator().getPreparedDeleteStatement(query, cld).getStatement();
           StatementManager sm = broker.serviceStatementManager();
           PreparedStatement stmt = null;
           try
  @@ -497,7 +498,7 @@
           final StatementManager stmtManager = broker.serviceStatementManager();
           final boolean scrollable = isScrollable(query);
           ResultSetAndStatement retval = null;
  -        SelectStatementWrapper sql = null;
  +        SelectStatement sql = null;
   
           try
           {
  @@ -574,8 +575,8 @@
   
       /** performs a SQL SELECT statement against RDBMS. */
       public ResultSetAndStatement executeSQL(
  -            String sql,
  -            ValueContainer[] values,
  +            final String sql,
  +            final ValueContainer[] values,
               boolean scrollable)
               throws PersistenceBrokerException
       {
  @@ -607,7 +608,23 @@
   
               // as we return the resultset for further operations, we cannot release the statement yet.
               // that has to be done by the JdbcAccess-clients (i.e. RsIterator, ProxyRsIterator and PkEnumeration.)
  -            retval = new ResultSetAndStatement(broker.serviceStatementManager(), stmt, rs, null);
  +            // arminw: use anonymous inner class to satisfy constructor of
  +            retval = new ResultSetAndStatement(broker.serviceStatementManager(), stmt, rs, new SelectStatement(){
  +                public Query getQueryInstance()
  +                {
  +                    return null;
  +                }
  +
  +                public int getColumnIndex(FieldDescriptor fld)
  +                {
  +                    return JdbcType.MIN_INT;
  +                }
  +
  +                public String getStatement()
  +                {
  +                    return sql;
  +                }
  +            });
               return retval;
           }
           catch(PersistenceBrokerException e)
  @@ -657,7 +674,7 @@
               throws PersistenceBrokerException
       {
           final StatementManager sm = broker.serviceStatementManager();
  -        SelectStatementWrapper sql = null;
  +        SelectStatement sql = null;
           ValueContainer[] values = null;
           ResultSetAndStatement rs_stmt = null;
           try
  
  
  
  1.17      +4 -4      db-ojb/src/java/org/apache/ojb/broker/accesslayer/ResultSetAndStatement.java
  
  Index: ResultSetAndStatement.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/accesslayer/ResultSetAndStatement.java,v
  retrieving revision 1.16
  retrieving revision 1.17
  diff -u -r1.16 -r1.17
  --- ResultSetAndStatement.java	30 Sep 2005 01:46:44 -0000	1.16
  +++ ResultSetAndStatement.java	3 Oct 2005 17:35:25 -0000	1.17
  @@ -18,7 +18,7 @@
   import java.sql.ResultSet;
   import java.sql.Statement;
   
  -import org.apache.ojb.broker.accesslayer.sql.SelectStatementWrapper;
  +import org.apache.ojb.broker.accesslayer.sql.SelectStatement;
   import org.apache.ojb.broker.util.logging.Logger;
   import org.apache.ojb.broker.util.logging.LoggerFactory;
   
  @@ -39,9 +39,9 @@
       */
   	public final ResultSet m_rs;
   	public final Statement m_stmt;
  -    public final SelectStatementWrapper m_sql;
  +    public final SelectStatement m_sql;
   
  -	public ResultSetAndStatement(StatementManager manager, Statement stmt, ResultSet rs, SelectStatementWrapper sql)
  +	public ResultSetAndStatement(StatementManager manager, Statement stmt, ResultSet rs, SelectStatement sql)
   	{
   		this.manager = manager;
           m_stmt = stmt;
  
  
  
  1.42      +2 -19     db-ojb/src/java/org/apache/ojb/broker/accesslayer/RowReaderDefaultImpl.java
  
  Index: RowReaderDefaultImpl.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/accesslayer/RowReaderDefaultImpl.java,v
  retrieving revision 1.41
  retrieving revision 1.42
  diff -u -r1.41 -r1.42
  --- RowReaderDefaultImpl.java	30 Sep 2005 21:45:15 -0000	1.41
  +++ RowReaderDefaultImpl.java	3 Oct 2005 17:35:25 -0000	1.42
  @@ -25,17 +25,12 @@
   import org.apache.commons.beanutils.ConvertUtils;
   import org.apache.commons.collections.map.ListOrderedMap;
   import org.apache.ojb.broker.PersistenceBrokerException;
  -import org.apache.ojb.broker.accesslayer.sql.SelectStatementWrapper;
   import org.apache.ojb.broker.core.factory.ObjectFactory;
   import org.apache.ojb.broker.metadata.ClassDescriptor;
   import org.apache.ojb.broker.metadata.CreationDescriptor;
   import org.apache.ojb.broker.metadata.CreationParameter;
  -import org.apache.ojb.broker.metadata.EnclosingClassReferenceDescriptor;
   import org.apache.ojb.broker.metadata.FieldDescriptor;
  -import org.apache.ojb.broker.metadata.JdbcType;
   import org.apache.ojb.broker.metadata.MetadataException;
  -import org.apache.ojb.broker.metadata.ObjectReferenceDescriptor;
  -import org.apache.ojb.broker.util.ClassHelper;
   import org.apache.ojb.broker.util.SqlHelper;
   
   /**
  @@ -325,18 +320,6 @@
           readValuesFrom(rs_stmt, row, pkFields);
       }
   
  -    private int getColumnIndex(SelectStatementWrapper statementWrapper, FieldDescriptor fld)
  -    {
  -        int index = JdbcType.MIN_INT;
  -        
  -        if (statementWrapper != null)
  -        {
  -            index = statementWrapper.getColumnIndex(fld);
  -        }
  -        
  -        return index;
  -    }
  -
       protected void readValuesFrom(ResultSetAndStatement rs_stmt, Map row, FieldDescriptor[] fields)
       {
           int size = fields.length;
  @@ -349,7 +332,7 @@
                   fld = fields[j];
                   if(!row.containsKey(fld.getColumnName()))
                   {
  -                    int idx = getColumnIndex(rs_stmt.m_sql, fld);
  +                    int idx = rs_stmt.m_sql.getColumnIndex(fld);
                       val = fld.getJdbcType().getObjectFromColumn(rs_stmt.m_rs, null, fld.getColumnName(), idx);
                       row.put(fld.getColumnName(), fld.getFieldConversion().sqlToJava(val));
                   }
  
  
  
  1.25      +1 -1      db-ojb/src/java/org/apache/ojb/broker/accesslayer/SqlBasedRsIterator.java
  
  
  
  
  1.20      +7 -7      db-ojb/src/java/org/apache/ojb/broker/core/MtoNBroker.java
  
  Index: MtoNBroker.java
  ===================================================================
  RCS file: /home/cvs/db-ojb/src/java/org/apache/ojb/broker/core/MtoNBroker.java,v
  retrieving revision 1.19
  retrieving revision 1.20
  diff -u -r1.19 -r1.20
  --- MtoNBroker.java	1 Oct 2005 13:56:14 -0000	1.19
  +++ MtoNBroker.java	3 Oct 2005 17:35:25 -0000	1.20
  @@ -98,7 +98,7 @@
   
           String[] cols = mergeColumns(pkColumns, otherPkColumns);
           String insertStmt = pb.serviceSqlGenerator()
  -                .getGenericPreparedStatement(SqlGenerator.TYPE_GENERIC_INSERT, table, cols, null);
  +                .getGenericPreparedStatement(SqlGenerator.TYPE_GENERIC_INSERT, table, cols, null).getStatement();
           ValueContainer[] values = mergeContainer(pkValues, otherPkValues);
           GenericObject gObj = new GenericObject(table, cols, values);
           if(! tempObjects.contains(gObj))
  @@ -126,7 +126,7 @@
           String table = cod.getIndirectionTable();
   
           String selectStmt = pb.serviceSqlGenerator()
  -                .getGenericPreparedStatement(SqlGenerator.TYPE_GENERIC_SELECT, table, fkColumns, pkColumns);
  +                .getGenericPreparedStatement(SqlGenerator.TYPE_GENERIC_SELECT, table, fkColumns, pkColumns).getStatement();
   
           ClassDescriptor itemCLD = cod.getItemClassDescriptor();
           Collection extents = pb.getDescriptorRepository().getAllConcreteSubclassDescriptors(itemCLD);
  @@ -180,7 +180,7 @@
           String[] pkColumns = cod.getFksToThisClass();
           String table = cod.getIndirectionTable();
           String deleteStmt = pb.serviceSqlGenerator()
  -                .getGenericPreparedStatement(SqlGenerator.TYPE_GENERIC_DELETE, table, null, pkColumns);
  +                .getGenericPreparedStatement(SqlGenerator.TYPE_GENERIC_DELETE, table, null, pkColumns).getStatement();
           pb.serviceJdbcAccess().executeUpdateSQL(deleteStmt, pkValues);
       }
   
  @@ -227,7 +227,7 @@
           {
               fkValues = ((MtoNBroker.Key) iter.next()).m_containers;
               deleteStmt = pb.serviceSqlGenerator()
  -                    .getGenericPreparedStatement(SqlGenerator.TYPE_GENERIC_DELETE, table, null, columns);
  +                    .getGenericPreparedStatement(SqlGenerator.TYPE_GENERIC_DELETE, table, null, columns).getStatement();
               pb.serviceJdbcAccess().executeUpdateSQL(deleteStmt, mergeContainer(pkValues, fkValues));
           }
       }
  @@ -295,7 +295,7 @@
               if(insert)
               {
                   stmt = pb.serviceSqlGenerator()
  -                        .getGenericPreparedStatement(SqlGenerator.TYPE_GENERIC_INSERT, table, cols, null);
  +                        .getGenericPreparedStatement(SqlGenerator.TYPE_GENERIC_INSERT, table, cols, null).getStatement();
                   GenericObject gObj = new GenericObject(table, cols, values);
                   if(!tempObjects.contains(gObj))
                   {
  @@ -306,7 +306,7 @@
               else
               {
                   stmt = pb.serviceSqlGenerator()
  -                        .getGenericPreparedStatement(SqlGenerator.TYPE_GENERIC_DELETE, table, null, cols);
  +                        .getGenericPreparedStatement(SqlGenerator.TYPE_GENERIC_DELETE, table, null, cols).getStatement();
                   pb.serviceJdbcAccess().executeUpdateSQL(stmt, values);
               }
           }
  
  
  

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