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]