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/22 10:31:15 UTC
svn commit: r521168 -
/db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteriaImpl.java
Author: arminw
Date: Thu Mar 22 02:31:14 2007
New Revision: 521168
URL: http://svn.apache.org/viewvc?view=rev&rev=521168
Log:
remove dependency to static MetadataManager by using preprocess call to prepare object attribute projection
Modified:
db/ojb/trunk/src/java/org/apache/ojb/broker/query/QueryByCriteriaImpl.java
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=521168&r1=521167&r2=521168
==============================================================================
--- 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 Thu Mar 22 02:31:14 2007
@@ -25,7 +25,6 @@
import org.apache.ojb.broker.PersistenceBrokerInternal;
import org.apache.ojb.broker.metadata.ClassDescriptor;
import org.apache.ojb.broker.metadata.FieldHelper;
-import org.apache.ojb.broker.metadata.MetadataManager;
import org.apache.ojb.broker.metadata.ObjectReferenceDescriptor;
/**
@@ -72,7 +71,7 @@
protected QueryByCriteriaImpl()
{
}
-
+
/**
* Build a Query for class targetClass with criteria.
* Criteriy may be null (will result in a query returning ALL objects from a table)
@@ -132,7 +131,7 @@
public QueryByCriteriaImpl(QueryByCriteriaImpl aQuery)
{
this (aQuery.getSearchClass());
-
+
if (aQuery.getCriteria() != null)
{
setCriteria(new Criteria(aQuery.getCriteria(),true,true,true));
@@ -155,7 +154,7 @@
setWithExtents(aQuery.getWithExtents());
setStartAtIndex(aQuery.getStartAtIndex());
setEndAtIndex(aQuery.getEndAtIndex());
-
+
m_groupby = aQuery.getGroupBy();
m_orderby = aQuery.getOrderBy();
m_objectProjectionAttribute = aQuery.getObjectProjectionAttribute();
@@ -278,29 +277,29 @@
return m_pathClasses;
}
- /**
+ /**
* @see org.apache.ojb.broker.query.QueryByCriteria#setCriteria(org.apache.ojb.broker.query.Criteria)
*/
- public void setCriteria(Criteria criteria)
- {
- m_criteria = criteria;
+ public void setCriteria(Criteria criteria)
+ {
+ m_criteria = criteria;
if (m_criteria != null)
{
m_criteria.setQuery(this);
}
- }
+ }
- /**
+ /**
* @see org.apache.ojb.broker.query.QueryByCriteria#setHavingCriteria(org.apache.ojb.broker.query.Criteria)
*/
- public void setHavingCriteria(Criteria havingCriteria)
- {
- m_havingCriteria = havingCriteria;
+ public void setHavingCriteria(Criteria havingCriteria)
+ {
+ m_havingCriteria = havingCriteria;
if (m_havingCriteria != null)
{
m_havingCriteria.setQuery(this);
}
- }
+ }
/**
* @see org.apache.ojb.broker.query.QueryByCriteria#addGroupBy(java.lang.String)
@@ -335,11 +334,11 @@
}
}
- /**
+ /**
* @see org.apache.ojb.broker.query.QueryByCriteria#getGroupBy()
*/
- public List getGroupBy()
- {
+ public List getGroupBy()
+ {
// BRJ:
// combine data from query and criteria
// TODO: to be removed when Criteria#addGroupBy is removed
@@ -352,7 +351,7 @@
}
return temp;
- }
+ }
/**
* @see org.apache.ojb.broker.query.QueryByCriteria#addOrderBy(java.lang.String, boolean)
@@ -424,14 +423,14 @@
addOrderBy(fieldName, false);
}
- /* (non-Javadoc)
- * @see org.apache.ojb.broker.query.Query#getOrderBy()
- */
- /**
+ /* (non-Javadoc)
+ * @see org.apache.ojb.broker.query.Query#getOrderBy()
+ */
+ /**
* @see org.apache.ojb.broker.query.QueryByCriteria#getOrderBy()
*/
- public List getOrderBy()
- {
+ public List getOrderBy()
+ {
// BRJ:
// combine data from query and criteria
// TODO: to be removed when Criteria#addOrderBy is removed
@@ -444,7 +443,7 @@
}
return temp;
- }
+ }
/**
* @see org.apache.ojb.broker.query.QueryByCriteria#addPrefetchedRelationship(java.lang.String)
@@ -454,11 +453,11 @@
m_prefetchedRelationships.add(aName);
}
- /**
+ /**
* @see org.apache.ojb.broker.query.QueryByCriteria#getPrefetchedRelationships()
*/
- public List getPrefetchedRelationships()
- {
+ public List getPrefetchedRelationships()
+ {
// BRJ:
// combine data from query and criteria
// TODO: to be removed when Criteria#addPrefetchedRelationship is removed
@@ -473,14 +472,14 @@
return temp;
}
- /**
+ /**
* @see org.apache.ojb.broker.query.QueryByCriteria#getOuterJoinPaths()
*/
public Collection getOuterJoinPaths()
{
return m_pathOuterJoins;
}
-
+
/**
* @see org.apache.ojb.broker.query.QueryByCriteria#getObjectProjectionAttribute()
*/
@@ -489,43 +488,46 @@
return m_objectProjectionAttribute;
}
- /**
- * @see org.apache.ojb.broker.query.QueryByCriteria#setObjectProjectionAttribute(java.lang.String)
- */
public void setObjectProjectionAttribute(String objectProjectionAttribute)
{
- ClassDescriptor baseCld = MetadataManager.getInstance().getRepository().getDescriptorFor(getBaseClass());
- ArrayList descs = baseCld.getAttributeDescriptorsForPath(objectProjectionAttribute);
- int pathLen = descs.size();
-
- if ((pathLen > 0) && (descs.get(pathLen - 1) instanceof ObjectReferenceDescriptor))
- {
- ObjectReferenceDescriptor ord =
- ((ObjectReferenceDescriptor) descs.get(pathLen - 1));
- setObjectProjectionAttribute(objectProjectionAttribute,
- ord.getItemClass());
- }
+ m_objectProjectionAttribute = objectProjectionAttribute;
}
/**
* @see org.apache.ojb.broker.query.QueryByCriteria#setObjectProjectionAttribute(java.lang.String, java.lang.Class)
*/
- public void setObjectProjectionAttribute(String objectProjectionAttribute,
- Class objectProjectionClass)
+ public void setObjectProjectionAttribute(String objectProjectionAttribute, Class objectProjectionClass)
{
m_objectProjectionAttribute = objectProjectionAttribute;
setSearchClass(objectProjectionClass);
- }
-
+ }
+
+ private void prepareObjectProjectionAttribute(PersistenceBrokerInternal broker)
+ {
+ if(m_objectProjectionAttribute != null && getSearchClass() == null)
+ {
+ ClassDescriptor baseCld = broker.getDescriptorRepository().getDescriptorFor(getBaseClass());
+ ArrayList descs = baseCld.getAttributeDescriptorsForPath(m_objectProjectionAttribute);
+ int pathLen = descs.size();
+ if ((pathLen > 0) && (descs.get(pathLen - 1) instanceof ObjectReferenceDescriptor))
+ {
+ ObjectReferenceDescriptor ord = ((ObjectReferenceDescriptor) descs.get(pathLen - 1));
+ setObjectProjectionAttribute(m_objectProjectionAttribute, ord.getItemClass());
+ }
+ }
+ }
+
/**
* @see org.apache.ojb.broker.query.Query#preprocess(org.apache.ojb.broker.PersistenceBrokerInternal)
*/
public void preprocess(PersistenceBrokerInternal broker)
{
super.preprocess(broker);
+ // prepare object projection attribute
+ prepareObjectProjectionAttribute(broker);
if (getCriteria() != null)
{
getCriteria().preprocess(broker);
- }
+ }
}
}
---------------------------------------------------------------------
To unsubscribe, e-mail: ojb-dev-unsubscribe@db.apache.org
For additional commands, e-mail: ojb-dev-help@db.apache.org