Author: arminw
Date: Fri Mar 30 16:15:02 2007
New Revision: 524321

URL: http://svn.apache.org/viewvc?view=rev&rev=524321
Log:
introduce new method Query.hasPrefetchedRelationships(), move methods to super 
interface

Modified:
    db/ojb/trunk/src/java/org/apache/ojb/broker/IdentityFactory.java
    db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java
    db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/RsIterator.java
    db/ojb/trunk/src/java/org/apache/ojb/broker/core/IdentityFactoryImpl.java
    db/ojb/trunk/src/java/org/apache/ojb/broker/query/AbstractQueryImpl.java
    db/ojb/trunk/src/java/org/apache/ojb/broker/query/Query.java
    db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteria.java
    db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteriaImpl.java

Modified: db/ojb/trunk/src/java/org/apache/ojb/broker/IdentityFactory.java
URL: 
http://svn.apache.org/viewvc/db/ojb/trunk/src/java/org/apache/ojb/broker/IdentityFactory.java?view=diff&rev=524321&r1=524320&r2=524321
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/IdentityFactory.java (original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/IdentityFactory.java Fri Mar 30 
16:15:02 2007
@@ -76,23 +76,25 @@
      * Convenience shortcut method for
      * [EMAIL PROTECTED] #buildIdentity(java.lang.Class, java.lang.Class, 
java.lang.String[], java.lang.Object[])}.
      *
-     * @param realClass     The class of the associated object
+     * @param clazz The class of the persistent object we look for. This can 
be an interface,
+     * abstract base class or the real implementation class.
      * @param pkFieldName   The field names of the PK fields
      * @param pkValues      The PK values
      * @return The new <em>Identity</em> object
      */
-    Identity buildIdentity(Class realClass, String[] pkFieldName, Object[] 
pkValues);
+    Identity buildIdentity(Class clazz, String[] pkFieldName, Object[] 
pkValues);
 
     /**
      * Convenience method for persistent objects with single primary key.
      * NOTE: Do not use for objects with composed PK!
      *
-     * @param realClass The class of the associated object
-     * @param pkValue   The PK value
+     * @param clazz The class of the persistent object we look for. This can 
be an interface,
+     * abstract base class or the real implementation class.
+     * @param pkValue   The primary key value.
      * @return The new <em>Identity</em> object
      * @see #buildIdentity(java.lang.Class, java.lang.String[], 
java.lang.Object[])
      */
-    Identity buildIdentity(Class realClass, Object pkValue);
+    Identity buildIdentity(Class clazz, Object pkValue);
 
     /**
      * Create a new [EMAIL PROTECTED] Identity} object based on given 
arguments - NOTE: There

Modified: 
db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java
URL: 
http://svn.apache.org/viewvc/db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java?view=diff&rev=524321&r1=524320&r2=524321
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java 
(original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java 
Fri Mar 30 16:15:02 2007
@@ -1363,23 +1363,9 @@
 
         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;
-                }
-            }
+            scrollable = (query.getStartAtIndex() > Query.NO_START_AT_INDEX)
+                    || (query.getEndAtIndex() > Query.NO_END_AT_INDEX)
+                    || query.hasPrefetchedRelationships();
         }
         return scrollable;
     }

Modified: 
db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/RsIterator.java
URL: 
http://svn.apache.org/viewvc/db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/RsIterator.java?view=diff&rev=524321&r1=524320&r2=524321
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/RsIterator.java 
(original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/accesslayer/RsIterator.java Fri 
Mar 30 16:15:02 2007
@@ -318,7 +318,7 @@
         String relName;
         RelationshipPrefetcher[] prefetchers;
 
-        if (query == null || query.getPrefetchedRelationships() == null || 
query.getPrefetchedRelationships().isEmpty())
+        if (query == null || !query.hasPrefetchedRelationships())
         {
             return;
         }

Modified: 
db/ojb/trunk/src/java/org/apache/ojb/broker/core/IdentityFactoryImpl.java
URL: 
http://svn.apache.org/viewvc/db/ojb/trunk/src/java/org/apache/ojb/broker/core/IdentityFactoryImpl.java?view=diff&rev=524321&r1=524320&r2=524321
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/core/IdentityFactoryImpl.java 
(original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/core/IdentityFactoryImpl.java 
Fri Mar 30 16:15:02 2007
@@ -31,7 +31,6 @@
 import org.apache.ojb.broker.metadata.ClassDescriptor;
 import org.apache.ojb.broker.metadata.ClassNotPersistenceCapableException;
 import org.apache.ojb.broker.metadata.FieldDescriptor;
-import org.apache.ojb.broker.util.BrokerHelper;
 import org.apache.ojb.broker.util.sequence.SequenceManager;
 import org.apache.ojb.broker.util.sequence.SequenceManagerTransientImpl;
 
@@ -100,7 +99,6 @@
                     cld = broker.getClassDescriptor(realClass);
                 }
                 topLevelClass = cld.getTopLevelClass();
-                BrokerHelper helper = broker.serviceBrokerHelper();
 
                 FieldDescriptor[] fields = cld.getPkFields();
                 pks = new Object[fields.length];
@@ -121,6 +119,7 @@
                             result = new Identity(realClass, topLevelClass, 
pks, true);
                             transientIdentityMap.put(objOrProxy, result);
                         }
+                        // we only need tp populate one temporary PK
                         break;
                     }
                     else
@@ -176,7 +175,12 @@
         else
         {
             // in other more complex cases we do several check
-            FieldDescriptor[] flds = 
broker.getClassDescriptor(realClass).getPkFields();
+            ClassDescriptor cld = broker.getClassDescriptor(realClass);
+            if(!cld.isMappedToTable())
+            {
+                cld = cld.getRepository().findFirstConcreteClass(cld);
+            }
+            FieldDescriptor[] flds = cld.getPkFields();
             if(!isOrdered(flds, pkFieldNames))
             {
                 orderedPKValues = reorderFieldValues(flds, pkFieldNames, 
pkValues);
@@ -242,9 +246,9 @@
     }
 
     /** @see org.apache.ojb.broker.IdentityFactory#buildIdentity(Class, 
String[], Object[]) */
-    public Identity buildIdentity(final Class realClass, final String[] 
pkFieldNames, final Object[] pkValues)
+    public Identity buildIdentity(final Class clazz, final String[] 
pkFieldNames, final Object[] pkValues)
     {
-        return buildIdentity(realClass, broker.getTopLevelClass(realClass), 
pkFieldNames, pkValues);
+        return buildIdentity(clazz, broker.getTopLevelClass(clazz), 
pkFieldNames, pkValues);
     }
 
     /** @see org.apache.ojb.broker.IdentityFactory#buildIdentity(Class, 
String[], Object[]) */
@@ -254,9 +258,9 @@
     }
 
     /** @see org.apache.ojb.broker.IdentityFactory#buildIdentity(Class, 
Object) */
-    public Identity buildIdentity(final Class realClass, final Object pkValue)
+    public Identity buildIdentity(final Class clazz, final Object pkValue)
     {
-        return buildIdentity(realClass, (String[]) null, new 
Object[]{pkValue});
+        return buildIdentity(clazz, (String[]) null, new Object[]{pkValue});
     }
 
     /**

Modified: 
db/ojb/trunk/src/java/org/apache/ojb/broker/query/AbstractQueryImpl.java
URL: 
http://svn.apache.org/viewvc/db/ojb/trunk/src/java/org/apache/ojb/broker/query/AbstractQueryImpl.java?view=diff&rev=524321&r1=524320&r2=524321
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/query/AbstractQueryImpl.java 
(original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/query/AbstractQueryImpl.java 
Fri Mar 30 16:15:02 2007
@@ -17,6 +17,7 @@
 
 import java.io.Serializable;
 import java.util.List;
+import java.util.Collections;
 
 import org.apache.ojb.broker.PersistenceBrokerInternal;
 import org.apache.ojb.broker.metadata.JdbcConnectionDescriptor;
@@ -246,4 +247,17 @@
         jcd = broker.serviceConnectionManager().getConnectionDescriptor();
     }
 
+    public void addPrefetchedRelationship(String aName)
+    {
+    }
+
+    public List getPrefetchedRelationships()
+    {
+        return Collections.EMPTY_LIST;
+    }
+
+    public boolean hasPrefetchedRelationships()
+    {
+        return false;
+    }
 }

Modified: db/ojb/trunk/src/java/org/apache/ojb/broker/query/Query.java
URL: 
http://svn.apache.org/viewvc/db/ojb/trunk/src/java/org/apache/ojb/broker/query/Query.java?view=diff&rev=524321&r1=524320&r2=524321
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/query/Query.java (original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/query/Query.java Fri Mar 30 
16:15:02 2007
@@ -16,6 +16,7 @@
  */
 
 import java.io.Serializable;
+import java.util.List;
 
 import org.apache.ojb.broker.PersistenceBrokerInternal;
 
@@ -51,6 +52,25 @@
     public static final int NO_END_AT_INDEX = 0;
     public static final boolean SCROLLABLE = true;
     public static final boolean NOT_SCROLLABLE = false;
+
+    /**
+     * add the name of aRelationship for prefetched read
+     */
+    public void addPrefetchedRelationship(String aName);
+
+    /**
+     * Check for prefetched relationships.
+     *
+     * @return <tt>True</tt> if relationships marked for prefetching.
+     */
+    public boolean hasPrefetchedRelationships();
+
+    /**
+     * Returns the names of Relationships to be prefetched
+     *
+     * @return List of Strings
+     */
+    public List getPrefetchedRelationships();
 
     /**
      * Return the target class, representing the extend to be searched.

Modified: db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteria.java
URL: 
http://svn.apache.org/viewvc/db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteria.java?view=diff&rev=524321&r1=524320&r2=524321
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteria.java 
(original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteria.java Fri 
Mar 30 16:15:02 2007
@@ -196,18 +196,6 @@
     public List getOrderBy();
 
     /**
-     * add the name of aRelationship for prefetched read
-     */
-    public void addPrefetchedRelationship(String aName);
-
-    /**
-     * Returns the names of Relationships to be prefetched
-     *
-     * @return List of Strings
-     */
-    public List getPrefetchedRelationships();
-
-    /**
      * Get a Collection containing all Paths having an Outer-Joins-Setting.
      *
      * @return a Collection containing the Paths (Strings)

Modified: 
db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteriaImpl.java
URL: 
http://svn.apache.org/viewvc/db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteriaImpl.java?view=diff&rev=524321&r1=524320&r2=524321
==============================================================================
--- db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteriaImpl.java 
(original)
+++ db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteriaImpl.java 
Fri Mar 30 16:15:02 2007
@@ -472,6 +472,12 @@
         return temp;
     }
 
+    public boolean hasPrefetchedRelationships()
+    {
+        return m_prefetchedRelationships.size() > 0 ||
+                (getCriteria() != null && 
getCriteria().getPrefetchedRelationships().size() > 0);
+    }
+
     /**
      * @see org.apache.ojb.broker.query.QueryByCriteria#getOuterJoinPaths()
      */



---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to