Author: jonesde
Date: Fri Jul 3 05:14:00 2009
New Revision: 790791
URL: http://svn.apache.org/viewvc?rev=790791&view=rev
Log:
Fixed bug reported by Hans and Adrian that broke the ByAndFinder class where
string because method that overrides one on ListFinder wasn't doing that any
more because the ListFinder method signature had changed; also did a few little
cleanups related to this
Modified:
ofbiz/trunk/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java
ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/ByAndFinder.java
ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelEntity.java
Modified:
ofbiz/trunk/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java?rev=790791&r1=790790&r2=790791&view=diff
==============================================================================
---
ofbiz/trunk/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java
(original)
+++
ofbiz/trunk/framework/entity/src/org/ofbiz/entity/datasource/GenericDAO.java
Fri Jul 3 05:14:00 2009
@@ -674,14 +674,13 @@
sqlBuffer.append(SqlJdbcUtil.makeFromClause(modelEntity,
datasourceInfo));
// WHERE clause
- StringBuilder whereString = new StringBuilder();
- String entityCondWhereString = "";
List<EntityConditionParam> whereEntityConditionParams =
FastList.newInstance();
+
+ String entityCondWhereString = "";
if (whereEntityCondition != null) {
entityCondWhereString =
whereEntityCondition.makeWhereString(modelEntity, whereEntityConditionParams,
this.datasourceInfo);
}
- String viewClause = SqlJdbcUtil.makeViewWhereClause(modelEntity,
datasourceInfo.joinStyle);
String viewEntityCondWhereString = null;
if (modelViewEntity != null && modelViewEntity.getByConditionFinder()
!= null) {
EntityCondition viewWhereEntityCondition =
modelViewEntity.getByConditionFinder().getWhereEntityCondition(FastMap.<String,
Object>newInstance(), modelEntity, this.modelFieldTypeReader);
@@ -690,22 +689,33 @@
}
}
+ String viewClause = SqlJdbcUtil.makeViewWhereClause(modelEntity,
datasourceInfo.joinStyle);
+
+ StringBuilder whereString = new StringBuilder();
if (entityCondWhereString.length() > 0) {
- whereString.append("(");
+ boolean addParens = false;
+ if (entityCondWhereString.charAt(0) != '(') addParens = true;
+ if (addParens) whereString.append("(");
whereString.append(entityCondWhereString);
- whereString.append(")");
+ if (addParens) whereString.append(")");
}
if (UtilValidate.isNotEmpty(viewEntityCondWhereString)) {
if (whereString.length() > 0) whereString.append(" AND ");
- whereString.append("(");
+ boolean addParens = false;
+ if (viewEntityCondWhereString.charAt(0) != '(') addParens = true;
+ if (addParens) whereString.append("(");
whereString.append(viewEntityCondWhereString);
- whereString.append(")");
+ if (addParens) whereString.append(")");
}
if (viewClause.length() > 0) {
if (whereString.length() > 0) whereString.append(" AND ");
+ boolean addParens = false;
+ if (viewClause.charAt(0) != '(') addParens = true;
+ if (addParens) whereString.append("(");
whereString.append(viewClause);
+ if (addParens) whereString.append(")");
}
if (whereString.length() > 0) {
@@ -740,15 +750,19 @@
StringBuilder havingString = new StringBuilder();
if (UtilValidate.isNotEmpty(entityCondHavingString)) {
- havingString.append("(");
+ boolean addParens = false;
+ if (entityCondHavingString.charAt(0) != '(') addParens = true;
+ if (addParens) havingString.append("(");
havingString.append(entityCondHavingString);
- havingString.append(")");
+ if (addParens) havingString.append(")");
}
if (UtilValidate.isNotEmpty(viewEntityCondHavingString)) {
if (havingString.length() > 0) havingString.append(" AND ");
- havingString.append("(");
+ boolean addParens = false;
+ if (viewEntityCondHavingString.charAt(0) != '(') addParens = true;
+ if (addParens) havingString.append("(");
havingString.append(viewEntityCondHavingString);
- havingString.append(")");
+ if (addParens) havingString.append(")");
}
if (havingString.length() > 0) {
@@ -802,9 +816,9 @@
if (Debug.timingOn()) {
long queryEndTime = System.currentTimeMillis();
long queryTotalTime = queryEndTime - queryStartTime;
- if (queryTotalTime > 150) {
+ //if (queryTotalTime > 150) {
Debug.logTiming("Ran query in " + queryTotalTime + "
milli-seconds: " + sql, module);
- }
+ //}
}
return new EntityListIterator(sqlP, modelEntity, selectFields,
modelFieldTypeReader);
}
Modified:
ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/ByAndFinder.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/ByAndFinder.java?rev=790791&r1=790790&r2=790791&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/ByAndFinder.java
(original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/finder/ByAndFinder.java
Fri Jul 3 05:14:00 2009
@@ -23,17 +23,16 @@
import javolution.util.FastMap;
import org.ofbiz.base.util.collections.FlexibleMapAccessor;
-import org.ofbiz.entity.GenericDelegator;
-import org.ofbiz.entity.condition.EntityFieldMap;
-import org.ofbiz.entity.condition.EntityOperator;
import org.ofbiz.entity.condition.EntityCondition;
import org.ofbiz.entity.model.ModelEntity;
+import org.ofbiz.entity.model.ModelFieldTypeReader;
import org.w3c.dom.Element;
/**
* Uses the delegator to find entity values by a and
*
*/
+...@suppresswarnings("serial")
public class ByAndFinder extends ListFinder {
public static final String module = ByAndFinder.class.getName();
@@ -47,12 +46,12 @@
this.fieldMap = EntityFinderUtil.makeFieldMap(element);
}
- protected EntityCondition getWhereEntityCondition(Map<String, Object>
context, ModelEntity modelEntity, GenericDelegator delegator) {
+ public EntityCondition getWhereEntityCondition(Map<String, Object>
context, ModelEntity modelEntity, ModelFieldTypeReader modelFieldTypeReader) {
// create the by and map
Map<String, Object> entityContext = FastMap.newInstance();
EntityFinderUtil.expandFieldMapToContext(this.fieldMap, context,
entityContext);
// then convert the types...
- modelEntity.convertFieldMapInPlace(entityContext, delegator);
+ modelEntity.convertFieldMapInPlace(entityContext,
modelFieldTypeReader);
return EntityCondition.makeCondition(entityContext);
}
}
Modified:
ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelEntity.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelEntity.java?rev=790791&r1=790790&r2=790791&view=diff
==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelEntity.java
(original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelEntity.java
Fri Jul 3 05:14:00 2009
@@ -1254,13 +1254,16 @@
}
public void convertFieldMapInPlace(Map<String, Object> inContext,
GenericDelegator delegator) {
+ convertFieldMapInPlace(inContext,
delegator.getModelFieldTypeReader(this));
+ }
+ public void convertFieldMapInPlace(Map<String, Object> inContext,
ModelFieldTypeReader modelFieldTypeReader) {
Iterator<ModelField> modelFields = this.getFieldsIterator();
while (modelFields.hasNext()) {
ModelField modelField = modelFields.next();
String fieldName = modelField.getName();
Object oldValue = inContext.get(fieldName);
if (oldValue != null) {
- inContext.put(fieldName, this.convertFieldValue(modelField,
oldValue, delegator, inContext));
+ inContext.put(fieldName, this.convertFieldValue(modelField,
oldValue, modelFieldTypeReader, inContext));
}
}
}