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 br...@apache.org on 2005/04/01 22:21:12 UTC

cvs commit: db-ojb/src/java/org/apache/ojb/broker/accesslayer JdbcAccessImpl.java

brj         2005/04/01 12:21:12

  Modified:    src/java/org/apache/ojb/broker/accesslayer
                        JdbcAccessImpl.java
  Log:
  minor refactoring
  
  Revision  Changes    Path
  1.30      +40 -18    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.29
  retrieving revision 1.30
  diff -u -r1.29 -r1.30
  --- JdbcAccessImpl.java	9 Jan 2005 10:12:56 -0000	1.29
  +++ JdbcAccessImpl.java	1 Apr 2005 20:21:12 -0000	1.30
  @@ -39,6 +39,7 @@
   import org.apache.ojb.broker.metadata.fieldaccess.PersistentField;
   import org.apache.ojb.broker.platforms.Platform;
   import org.apache.ojb.broker.query.Query;
  +import org.apache.ojb.broker.query.QueryByCriteria;
   import org.apache.ojb.broker.util.logging.Logger;
   import org.apache.ojb.broker.util.logging.LoggerFactory;
   import org.apache.ojb.broker.util.sequence.SequenceManagerException;
  @@ -271,27 +272,50 @@
       }
   
       /**
  +     * Answer true if the query is scrollable.
  +     * @param query
  +     * @return
  +     */
  +    private boolean isScrollable(Query query)
  +    {
  +        boolean scrollable = false;
  +
  +        if (query != null)
  +        {
  +            /*
  +             * MBAIRD: we should create a scrollable resultset if the start at
  +             * index or end at index is set
  +             */
  +            scrollable = ((query.getStartAtIndex() > Query.NO_START_AT_INDEX) || (query.getEndAtIndex() > Query.NO_END_AT_INDEX));
  +            
  +            if (query instanceof QueryByCriteria)
  +            {
  +                QueryByCriteria qbc = (QueryByCriteria) query;   
  +                
  +                /*
  +                 * OR if the prefetching of relationships is being used.
  +                 */
  +                if (qbc.getPrefetchedRelationships() != null && !qbc.getPrefetchedRelationships().isEmpty())
  +                {
  +                    scrollable = true;                
  +                }
  +            }           
  +        }
  +        return scrollable;
  +    }
  +    
  +    /**
        * performs a SELECT operation against RDBMS.
        * @param query the query string.
        * @param cld ClassDescriptor providing JDBC information.
        */
       public ResultSetAndStatement executeQuery(Query query, ClassDescriptor cld) throws PersistenceBrokerException
       {
  -        if (logger.isDebugEnabled())
  -            logger.safeDebug("executeQuery", query);
  -        /*
  -		 * MBAIRD: we should create a scrollable resultset if the start at
  -		 * index or end at index is set
  -		 */
  -        boolean scrollable = ((query.getStartAtIndex() > Query.NO_START_AT_INDEX) || (query.getEndAtIndex() > Query.NO_END_AT_INDEX));
  -        /*
  -		 * OR if the prefetching of relationships is being used.
  -		 */
  -        if (query != null && query.getPrefetchedRelationships() != null && !query.getPrefetchedRelationships().isEmpty())
  -        {
  -            scrollable = true;
  -        }
  +        if (logger.isDebugEnabled()) logger.safeDebug("executeQuery", query);
  +        
  +        boolean scrollable = isScrollable(query);        
           ResultSetAndStatement retval = null;
  +        
           try
           {
               String sql = broker.serviceSqlGenerator().getPreparedSelectStatement(query, cld);
  @@ -341,9 +365,7 @@
           }
       }
   
  -    public ResultSetAndStatement executeSQL(
  -        String sqlStatement,
  -        boolean scrollable)
  +    public ResultSetAndStatement executeSQL(String sqlStatement, boolean scrollable) 
           throws PersistenceBrokerException
       {
           return executeSQL(sqlStatement, null, scrollable);
  
  
  

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