Author: jleroux
Date: Sat Jun 18 15:17:22 2011
New Revision: 1137201
URL:
http://svn.apache.org/viewvc?rev=1137201&view=revLog:
A patch from Leon "Trivial patch to ModelViewEntity class to make view entity able to handle entity condition between field from one entity and another"
https://issues.apache.org/jira/browse/OFBIZ-4321In view entity definition, we can use <condition-expr> to create a filter condition between field and some value using specific operator. It should be also possible to make condition between field and rel-field through some kind operator. Such as:
<view-entity entity-name="xxx" package-name="xxx">
...
<entity-condition>
<condition-expr entity-alias="A" field-name="a" operator="equals" rel-entity-alias="B" rel-field-name="b" />
</entity-condition>
</view-entity>
But there's a trivial defect in current ModelViewEntity which prevent this case working.
} else if ( value == null && (operator.equals(EntityOperator.EQUALS) || operator.equals(EntityOperator.NOT_EQUAL))) {
return EntityCondition.makeCondition(lhs, UtilGenerics.<EntityComparisonOperator<?,?>>cast(operator), null);
} else {
In the above code extracted from ModelViewEntity, it does not consider the condition that the relField could be defined when value==null.
JLR:I checked that || should not be used in <<value == null && this.relFieldName>>, it was not obvious to me but is correct
Modified:
ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelViewEntity.java
Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelViewEntity.java
URL:
http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelViewEntity.java?rev=1137201&r1=1137200&r2=1137201&view=diff==============================================================================
--- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelViewEntity.java (original)
+++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/model/ModelViewEntity.java Sat Jun 18 15:17:22 2011
@@ -1300,7 +1300,7 @@ public class ModelViewEntity extends Mod
EntityOperator.OR,
EntityCondition.makeCondition(lhs, EntityOperator.EQUALS, null));
}
- } else if ( value == null && (operator.equals(EntityOperator.EQUALS) || operator.equals(EntityOperator.NOT_EQUAL))) {
+ } else if ( value == null && this.relFieldName == null && (operator.equals(EntityOperator.EQUALS) || operator.equals(EntityOperator.NOT_EQUAL))) {
return EntityCondition.makeCondition(lhs, UtilGenerics.<EntityComparisonOperator<?,?>>cast(operator), null);
} else {
if (ignoreCase) {