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 2007/03/31 01:14:00 UTC
svn commit: r524320 - in
/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker: ./
accesslayer/ core/ query/
Author: arminw
Date: Fri Mar 30 16:14:00 2007
New Revision: 524320
URL: http://svn.apache.org/viewvc?view=rev&rev=524320
Log:
introduce new method Query.hasPrefetchedRelationships()
Modified:
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/IdentityFactory.java
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/RsIterator.java
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/core/IdentityFactoryImpl.java
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/query/AbstractQueryImpl.java
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/query/Query.java
db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/query/QueryByCriteria.java
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/IdentityFactory.java
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/IdentityFactory.java?view=diff&rev=524320&r1=524319&r2=524320
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/IdentityFactory.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/IdentityFactory.java Fri Mar 30 16:14:00 2007
@@ -76,23 +76,25 @@
* Convenience shortcut method for
* {@link #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 {@link Identity} object based on given arguments - NOTE: There
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java?view=diff&rev=524320&r1=524319&r2=524320
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/JdbcAccessImpl.java Fri Mar 30 16:14:00 2007
@@ -24,6 +24,7 @@
import java.util.Iterator;
import java.util.Map;
+import org.apache.commons.lang.ArrayUtils;
import org.apache.ojb.broker.Identity;
import org.apache.ojb.broker.OptimisticLockException;
import org.apache.ojb.broker.PersistenceBrokerException;
@@ -44,7 +45,6 @@
import org.apache.ojb.broker.util.logging.Logger;
import org.apache.ojb.broker.util.logging.LoggerFactory;
import org.apache.ojb.broker.util.sequence.SequenceManagerException;
-import org.apache.commons.lang.ArrayUtils;
/**
* JdbcAccess is responsible for establishing performing SQL Queries against remote
@@ -263,17 +263,14 @@
query.preprocess(broker);
/*
- * 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.
+ MBAIRD: we should create a scrollable resultset if the start at
+ index or end at index is set
+ OR if the prefetching of relationships is being used.
*/
- if (query != null && query.getPrefetchedRelationships() != null && !query.getPrefetchedRelationships().isEmpty())
- {
- scrollable = true;
- }
+ boolean scrollable = (query.getStartAtIndex() > Query.NO_START_AT_INDEX)
+ || (query.getEndAtIndex() > Query.NO_END_AT_INDEX)
+ || query.hasPrefetchedRelationships();
+
final StatementManagerIF sm = broker.serviceStatementManager();
final SelectStatement sql = broker.serviceSqlGenerator().getPreparedSelectStatement(query, cld);
PreparedStatement stmt = null;
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/RsIterator.java
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/RsIterator.java?view=diff&rev=524320&r1=524319&r2=524320
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/RsIterator.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/accesslayer/RsIterator.java Fri Mar 30 16:14:00 2007
@@ -340,7 +340,7 @@
String relName;
RelationshipPrefetcher[] prefetchers;
- if (query == null || query.getPrefetchedRelationships() == null || query.getPrefetchedRelationships().isEmpty())
+ if (query == null || !query.hasPrefetchedRelationships())
{
return;
}
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/core/IdentityFactoryImpl.java
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/core/IdentityFactoryImpl.java?view=diff&rev=524320&r1=524319&r2=524320
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/core/IdentityFactoryImpl.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/core/IdentityFactoryImpl.java Fri Mar 30 16:14:00 2007
@@ -20,6 +20,7 @@
import org.apache.commons.collections.map.ReferenceIdentityMap;
import org.apache.commons.lang.ArrayUtils;
import org.apache.commons.lang.SystemUtils;
+import org.apache.commons.lang.StringUtils;
import org.apache.commons.lang.exception.ExceptionUtils;
import org.apache.ojb.broker.Identity;
import org.apache.ojb.broker.IdentityFactory;
@@ -177,7 +178,12 @@
else
{
// in other more complex cases we do several check
- FieldDescriptor[] flds = broker.getClassDescriptor(realClass).getPkFields();
+ ClassDescriptor cld = broker.getClassDescriptor(realClass);
+ if(StringUtils.isEmpty(cld.getFullTableName()))
+ {
+ cld = cld.getRepository().findFirstConcreteClass(cld);
+ }
+ FieldDescriptor[] flds = cld.getPkFields();
if(!isOrdered(flds, pkFieldNames))
{
orderedPKValues = reorderFieldValues(flds, pkFieldNames, pkValues);
@@ -243,9 +249,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[]) */
@@ -255,9 +261,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/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/query/AbstractQueryImpl.java
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/query/AbstractQueryImpl.java?view=diff&rev=524320&r1=524319&r2=524320
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/query/AbstractQueryImpl.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/query/AbstractQueryImpl.java Fri Mar 30 16:14:00 2007
@@ -119,6 +119,11 @@
return null;
}
+ public boolean hasPrefetchedRelationships()
+ {
+ return false;
+ }
+
public Criteria getCriteria()
{
return null;
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/query/Query.java
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/query/Query.java?view=diff&rev=524320&r1=524319&r2=524320
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/query/Query.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/query/Query.java Fri Mar 30 16:14:00 2007
@@ -61,6 +61,13 @@
public List getPrefetchedRelationships();
/**
+ * Check for prefetched relationships.
+ *
+ * @return <tt>True</tt> if relationships marked for prefetching.
+ */
+ public boolean hasPrefetchedRelationships();
+
+ /**
* Return the criteria of the query if present or <tt>null</tt>.
*/
public Criteria getCriteria();
Modified: db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/query/QueryByCriteria.java
URL: http://svn.apache.org/viewvc/db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/query/QueryByCriteria.java?view=diff&rev=524320&r1=524319&r2=524320
==============================================================================
--- db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/query/QueryByCriteria.java (original)
+++ db/ojb/branches/OJB_1_0_RELEASE/src/java/org/apache/ojb/broker/query/QueryByCriteria.java Fri Mar 30 16:14:00 2007
@@ -491,11 +491,16 @@
{
temp.addAll(getCriteria().getPrefetchedRelationships());
}
-
return temp;
}
- /**
+ public boolean hasPrefetchedRelationships()
+ {
+ return m_prefetchedRelationships.size() > 0 ||
+ (getCriteria() != null && getCriteria().getPrefetchedRelationships().size() > 0);
+ }
+
+ /**
* Get a Collection containing all Paths having an Outer-Joins-Setting
* @return a Collection containing the Paths (Strings)
*/
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org