Author: pgil
Date: Fri Jan 4 14:50:59 2019 New Revision: 1850373 URL: http://svn.apache.org/viewvc?rev=1850373&view=rev Log: Refactoring ‘EntityCondition’ - Turn EntityCondition into an interface (OFBIZ-10691) This is done in the spirit of favouring abstraction over implementation. To achieve that the following change has been made: * The useless ‘EntityCondition#eval’ methods has been removed * The ‘PriceServices#calculatePurchasePrice’ method has been fixed to refer to ‘EntityCondition#makeCondition’ instead of ‘EntityExpr#makeCondition’. Additionally, the genericity of the ‘makeCondition’ methods has been improved to allow having a hierarchy of class between the ‘EntityCondition’ type and the subtypes. Exceptionally a ‘serialVersionUID’ has been used instead of suppressing the 'serial' warning for the ‘EntityCondition’ interface to satisfy both Eclipse and OpenJDK linting features which disagree on the validity of using the ‘@SuppressWarnings’ annotation in the case of interfaces extending ‘Serializable’. Thanks Mathieu for the contribution Modified: ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/price/PriceServices.java ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityCondition.java ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityConditionBuilder.java ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityConditionFunction.java ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityConditionList.java ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityConditionListBase.java ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityDateFilterCondition.java ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityExpr.java ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityWhereString.java Modified: ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/price/PriceServices.java URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/price/PriceServices.java?rev=1850373&r1=1850372&r2=1850373&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/price/PriceServices.java (original) +++ ofbiz/ofbiz-framework/trunk/applications/product/src/main/java/org/apache/ofbiz/product/price/PriceServices.java Fri Jan 4 14:50:59 2019 @@ -40,7 +40,6 @@ import org.apache.ofbiz.entity.Delegator import org.apache.ofbiz.entity.GenericEntityException; import org.apache.ofbiz.entity.GenericValue; import org.apache.ofbiz.entity.condition.EntityCondition; -import org.apache.ofbiz.entity.condition.EntityExpr; import org.apache.ofbiz.entity.condition.EntityOperator; import org.apache.ofbiz.entity.util.EntityQuery; import org.apache.ofbiz.entity.util.EntityUtil; @@ -1225,12 +1224,11 @@ public class PriceServices { if (UtilValidate.isNotEmpty(agreementId)) { //TODO Search before if agreement is associate to SupplierProduct. //confirm that agreement is price application on purchase type and contains a value for the product - EntityCondition cond = EntityCondition.makeCondition( - UtilMisc.toList( - EntityExpr.makeCondition("agreementId", agreementId), - EntityExpr.makeCondition("agreementItemTypeId", "AGREEMENT_PRICING_PR"), - EntityExpr.makeCondition("agreementTypeId", "PURCHASE_AGREEMENT"), - EntityExpr.makeCondition("productId", productId))); + EntityCondition cond = EntityCondition.makeConditionMap( + "agreementId", agreementId, + "agreementItemTypeId", "AGREEMENT_PRICING_PR", + "agreementTypeId", "PURCHASE_AGREEMENT", + "productId", productId); try { List<GenericValue> agreementPrices = delegator.findList("AgreementItemAndProductAppl", cond, UtilMisc.toSet("price", "currencyUomId"), null, null, true); if (UtilValidate.isNotEmpty(agreementPrices)) { Modified: ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityCondition.java URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityCondition.java?rev=1850373&r1=1850372&r2=1850373&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityCondition.java (original) +++ ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityCondition.java Fri Jan 4 14:50:59 2019 @@ -32,121 +32,253 @@ import org.apache.ofbiz.entity.config.mo import org.apache.ofbiz.entity.model.ModelEntity; /** - * <p>Represents the conditions to be used to constrain a query.</p> - * <p>An EntityCondition can represent various type of constraints, including:</p> + * Represents a condition expression that can be used in a SQL 'WHERE' clause + * which is used to constrain a SQL query. + * <p> + * An EntityCondition can represent various type of constraints, including: * <ul> * <li>EntityConditionList: a list of EntityConditions, combined with the operator specified * <li>EntityExpr: for simple expressions or expressions that combine EntityConditions * <li>EntityFieldMap: a map of fields where the field (key) equals the value, combined with the operator specified * </ul> * These can be used in various combinations using the EntityConditionList and EntityExpr objects. - * */ -@SuppressWarnings("serial") -public abstract class EntityCondition implements IsEmpty, Serializable { +public interface EntityCondition extends IsEmpty, Serializable { - public static <L,R,LL,RR> EntityExpr makeCondition(L lhs, EntityComparisonOperator<LL,RR> operator, R rhs) { + static final long serialVersionUID = -7601205800717391212L; + + /** + * Constructs a condition expression to represent a comparison between two elements. + * + * @param lhs the left hand side element + * @param operator the binary infix operator + * @param rhs the right hand side element + * @return a condition expression representing a comparison between two elements + */ + static <L,R,LL,RR> EntityExpr makeCondition(L lhs, EntityComparisonOperator<LL,RR> operator, R rhs) { return new EntityExpr(lhs, operator, rhs); } - public static <R> EntityExpr makeCondition(String fieldName, R value) { + /** + * Constructs a condition expression to represent a equality comparison between a field and a value. + * + * @param fieldName the name of the field to compare + * @param value the value to find in field + * @return a condition expression representing a equality comparison + */ + static <R> EntityExpr makeCondition(String fieldName, R value) { return new EntityExpr(fieldName, EntityOperator.EQUALS, value); } - public static EntityExpr makeCondition(EntityCondition lhs, EntityJoinOperator operator, EntityCondition rhs) { + /** + * Constructs a condition expression to represent a combination of two condition expressions. + * + * @param lhs the left hand side condition + * @param operator the binary infix operator used to combine {@code lhs} and {@code rhs} conditions + * @param rhs the right hand side condition + * @return a condition expression representing a combination of condition expression + */ + static EntityExpr makeCondition(EntityCondition lhs, EntityJoinOperator operator, EntityCondition rhs) { return new EntityExpr(lhs, operator, rhs); } + /** + * Constructs a condition expression to represent a combination of condition expressions. + * + * @param operator the binary infix operator used to join every elements of {@code conditionList} + * @param conditionList the list of condition expressions to join + * @return a condition expression representing a combination of condition expressions. + */ @SafeVarargs - public static <T extends EntityCondition> EntityConditionList<T> makeCondition(EntityJoinOperator operator, T... conditionList) { - return new EntityConditionList<>(Arrays.<T>asList(conditionList), operator); + static <R extends EntityCondition, T extends R> + EntityConditionList<R> makeCondition(EntityJoinOperator operator, T... conditionList) { + return new EntityConditionList<>(Arrays.asList(conditionList), operator); } + /** + * Constructs a condition expression to represent a conjunction of condition expressions + * + * @param conditionList the condition expressions to join with {@link EntityOperator#AND} + * @return a condition expression representing a conjunction of condition expressions + */ @SafeVarargs - public static <T extends EntityCondition> EntityConditionList<T> makeCondition(T... conditionList) { - return new EntityConditionList<>(Arrays.<T>asList(conditionList), EntityOperator.AND); + static <R extends EntityCondition, T extends R> + EntityConditionList<R> makeCondition(T... conditionList) { + return new EntityConditionList<>(Arrays.asList(conditionList), EntityOperator.AND); } - public static <T extends EntityCondition> EntityConditionList<T> makeCondition(List<T> conditionList, EntityJoinOperator operator) { + /** + * Constructs a condition expression to represent a combination of condition expressions. + * + * @param conditionList the list of condition expressions to join + * @param operator the binary infix operator used to join every elements of {@code conditionList} + * @return a condition expression representing a combination of condition expressions. + */ + static <T extends EntityCondition> + EntityConditionList<T> makeCondition(List<? extends T> conditionList, EntityJoinOperator operator) { return new EntityConditionList<>(conditionList, operator); } - public static <T extends EntityCondition> EntityConditionList<T> makeCondition(List<T> conditionList) { + /** + * Constructs a condition expression to represent a conjunction of condition expressions + * + * @param conditionList the condition expressions to join with {@link EntityOperator#AND} + * @return a condition expression representing a conjunction of condition expressions + */ + static <T extends EntityCondition> EntityConditionList<T> makeCondition(List<? extends T> conditionList) { return new EntityConditionList<>(conditionList, EntityOperator.AND); } - public static <L,R> EntityFieldMap makeCondition(Map<String, ? extends Object> fieldMap, EntityComparisonOperator<L,R> compOp, EntityJoinOperator joinOp) { + /** + * Constructs a condition expression to represent a combination of field/value comparisons. + * + * @param fieldMap the map associating a field to the value to match + * @param compOp the binary infix operator used to compare the field and the value + * @param joinOp the binary infix operator used to join the field/value comparisons + * @return a condition expression representing a combination of field/value comparisons + */ + static <L,R> EntityFieldMap makeCondition(Map<String, ? extends Object> fieldMap, + EntityComparisonOperator<L,R> compOp, EntityJoinOperator joinOp) { return new EntityFieldMap(fieldMap, compOp, joinOp); } - public static EntityFieldMap makeCondition(Map<String, ? extends Object> fieldMap, EntityJoinOperator joinOp) { + /** + * Constructs a condition expression to represent a combination of field/value equality comparisons. + * + * @param fieldMap the map associating a field to the value to match with {@link EntityOperator#EQUALS} + * @param joinOp the binary infix operator used to join the field/value equality comparisons + * @return a condition expression representing a combination of field/value equality comparisons + */ + static EntityFieldMap makeCondition(Map<String, ? extends Object> fieldMap, EntityJoinOperator joinOp) { return new EntityFieldMap(fieldMap, EntityOperator.EQUALS, joinOp); } - public static EntityFieldMap makeCondition(Map<String, ? extends Object> fieldMap) { + /** + * Constructs a condition expression to represent a conjunction of field/value equality comparisons. + * + * @param fieldMap the map associating a field to the value to match with {@link EntityOperator#EQUALS} + * @return a condition expression representing a conjunction of field/value equality comparisons + */ + static EntityFieldMap makeCondition(Map<String, ? extends Object> fieldMap) { return new EntityFieldMap(fieldMap, EntityOperator.EQUALS, EntityOperator.AND); } - public static <L,R> EntityFieldMap makeCondition(EntityComparisonOperator<L,R> compOp, EntityJoinOperator joinOp, Object... keysValues) { + /** + * Constructs a condition expression to represent a combination of field/value comparisons. + * + * @param compOp the binary infix operator used to compare the field and the value + * @param joinOp the binary infix operator used to join the field/value comparisons + * @param keysValues the field/values pairs to match + * @return a condition expression representing a combination of field/value comparisons + */ + static <L,R> EntityFieldMap makeCondition(EntityComparisonOperator<L,R> compOp, EntityJoinOperator joinOp, + Object... keysValues) { return new EntityFieldMap(compOp, joinOp, keysValues); } - public static EntityFieldMap makeCondition(EntityJoinOperator joinOp, Object... keysValues) { + /** + * Constructs a condition expression to represent a combination of field/value equality comparisons. + * + * @param joinOp the binary infix operator used to join the field/value equality comparisons + * @param keysValues the field/values pairs to match with {@link EntityOperator#EQUALS} + * @return a condition expression representing a combination of field/value equality comparisons + */ + static EntityFieldMap makeCondition(EntityJoinOperator joinOp, Object... keysValues) { return new EntityFieldMap(EntityOperator.EQUALS, joinOp, keysValues); } - public static EntityFieldMap makeConditionMap(Object... keysValues) { + /** + * Constructs a condition expression to represent a conjunction of field/value equality comparisons. + * + * @param keysValues the field/values pairs to match with {@link EntityOperator#EQUALS} + * @return a condition expression representing a conjunction of field/value equality comparisons + */ + static EntityFieldMap makeConditionMap(Object... keysValues) { return new EntityFieldMap(EntityOperator.EQUALS, EntityOperator.AND, keysValues); } - public static EntityDateFilterCondition makeConditionDate(String fromDateName, String thruDateName) { + /** + * Constructs a condition expression to filter rows that are currently valid. + * + * This means that we remove rows whose from/thru date range does not match the current date. + * The <i>current date</i> is the one computed when the SQL query is generated. + * + * @param fromDateName the name of the field corresponding to the from date + * @param thruDateName the name of the field corresponding to the thru date + * @return a condition expression filtering rows that are currently valid + */ + static EntityDateFilterCondition makeConditionDate(String fromDateName, String thruDateName) { return new EntityDateFilterCondition(fromDateName, thruDateName); } - public static EntityWhereString makeConditionWhere(String sqlString) { + /** + * Constructs a condition expression backed by a raw SQL string + * + * @param sqlString the SQL string + * @return a raw SQL string condition expression + */ + static EntityWhereString makeConditionWhere(String sqlString) { return new EntityWhereString(sqlString); } - @Override - public String toString() { - return makeWhereString(null, new ArrayList<EntityConditionParam>(), null); - } - /** * Applies a visitor to this condition. * * @param visitor the visitor to be applied */ - abstract public void accept(EntityConditionVisitor visitor); + void accept(EntityConditionVisitor visitor); - abstract public String makeWhereString(ModelEntity modelEntity, List<EntityConditionParam> entityConditionParams, Datasource datasourceInfo); + /** + * Dumps the corresponding SQL string. + * + * @param modelEntity the model of the entity + * @param entityConditionParams the effective parameters used to substitute '?' parameters + * @param datasourceInfo the model of the data source interpreting the SQL + * @return the corresponding SQL string + */ + String makeWhereString(ModelEntity modelEntity, List<EntityConditionParam> entityConditionParams, + Datasource datasourceInfo); - abstract public void checkCondition(ModelEntity modelEntity) throws GenericModelException; + /** + * Verifies that this condition expression is valid. + * + * @param modelEntity the model of the entity + * @throws GenericModelException when this condition expression is not valid + */ + void checkCondition(ModelEntity modelEntity) throws GenericModelException; - public boolean entityMatches(GenericEntity entity) { + /** + * Checks that this condition expression matches a particular entity. + * + * @param entity the entity to match + * @return {@code true} if this condition expression matches {@code entity} + */ + default boolean entityMatches(GenericEntity entity) { return mapMatches(entity.getDelegator(), entity); } - public Boolean eval(GenericEntity entity) { - return eval(entity.getDelegator(), entity); - } - - public Boolean eval(Delegator delegator, Map<String, ? extends Object> map) { - return mapMatches(delegator, map) ? Boolean.TRUE : Boolean.FALSE; - } - - abstract public boolean mapMatches(Delegator delegator, Map<String, ? extends Object> map); - - abstract public EntityCondition freeze(); + /** + * Checks that this condition expression matches a particular entity. + * + * @param delegator the delegator used to match + * @param map the entity definition to match + * @return {@code true} if this condition expression matches {@code map} when using {@code delegator} + */ + boolean mapMatches(Delegator delegator, Map<String, ? extends Object> map); - @Override - public boolean equals(Object obj) { - throw new UnsupportedOperationException("equals:" + getClass().getName()); - } + /** + * Create a Frozen condition expression corresponding to this condition expression. + * + * @return the frozen condition expression + */ + EntityCondition freeze(); - @Override - public int hashCode() { - throw new UnsupportedOperationException("hashCode: " + getClass().getName()); + /** + * Dumps the corresponding SQL string without substituting '?' parameters. + * + * @return the corresponding SQL string + */ + default String makeWhereString() { + return makeWhereString(null, new ArrayList<EntityConditionParam>(), null); } - } Modified: ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityConditionBuilder.java URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityConditionBuilder.java?rev=1850373&r1=1850372&r2=1850373&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityConditionBuilder.java (original) +++ ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityConditionBuilder.java Fri Jan 4 14:50:59 2019 @@ -37,7 +37,7 @@ public class EntityConditionBuilder exte public static final String module = EntityConditionBuilder.class.getName(); @SuppressWarnings("serial") - private static class ConditionHolder extends EntityCondition { + private static class ConditionHolder implements EntityCondition { protected EntityCondition condition; protected ConditionHolder(EntityCondition condition) { @@ -75,6 +75,11 @@ public class EntityConditionBuilder exte public void accept(EntityConditionVisitor visitor) { throw new IllegalArgumentException(getClass().getName() + ".accept not implemented"); } + + @Override + public String toString() { + return makeWhereString(); + } } @Override Modified: ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityConditionFunction.java URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityConditionFunction.java?rev=1850373&r1=1850372&r2=1850373&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityConditionFunction.java (original) +++ ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityConditionFunction.java Fri Jan 4 14:50:59 2019 @@ -32,7 +32,7 @@ import org.apache.ofbiz.entity.model.Mod * */ @SuppressWarnings("serial") -public abstract class EntityConditionFunction extends EntityCondition { +public abstract class EntityConditionFunction implements EntityCondition { public static final int ID_NOT = 1; @@ -116,4 +116,9 @@ public abstract class EntityConditionFun public void checkCondition(ModelEntity modelEntity) throws GenericModelException { condition.checkCondition(modelEntity); } + + @Override + public String toString() { + return makeWhereString(); + } } Modified: ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityConditionList.java URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityConditionList.java?rev=1850373&r1=1850372&r2=1850373&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityConditionList.java (original) +++ ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityConditionList.java Fri Jan 4 14:50:59 2019 @@ -27,7 +27,7 @@ import java.util.List; */ @SuppressWarnings("serial") public class EntityConditionList<T extends EntityCondition> extends EntityConditionListBase<T> { - public EntityConditionList(List<T> conditionList, EntityJoinOperator operator) { + public EntityConditionList(List<? extends T> conditionList, EntityJoinOperator operator) { super(conditionList, operator); } Modified: ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityConditionListBase.java URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityConditionListBase.java?rev=1850373&r1=1850372&r2=1850373&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityConditionListBase.java (original) +++ ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityConditionListBase.java Fri Jan 4 14:50:59 2019 @@ -33,13 +33,13 @@ import org.apache.ofbiz.entity.model.Mod * */ @SuppressWarnings("serial") -public abstract class EntityConditionListBase<T extends EntityCondition> extends EntityCondition { +public abstract class EntityConditionListBase<T extends EntityCondition> implements EntityCondition { public static final String module = EntityConditionListBase.class.getName(); - protected final List<T> conditionList; + protected final List<? extends T> conditionList; protected final EntityJoinOperator operator; - protected EntityConditionListBase(List<T> conditionList, EntityJoinOperator operator) { + protected EntityConditionListBase(List<? extends T> conditionList, EntityJoinOperator operator) { this.conditionList = conditionList; this.operator = operator; } @@ -56,8 +56,9 @@ public abstract class EntityConditionLis return this.conditionList.size(); } + @SuppressWarnings("unchecked") protected Iterator<T> getConditionIterator() { - return this.conditionList.iterator(); + return (Iterator<T>)this.conditionList.iterator(); } @Override @@ -101,4 +102,9 @@ public abstract class EntityConditionLis public int hashCode() { return conditionList.hashCode() + operator.hashCode(); } + + @Override + public String toString() { + return makeWhereString(); + } } Modified: ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityDateFilterCondition.java URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityDateFilterCondition.java?rev=1850373&r1=1850372&r2=1850373&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityDateFilterCondition.java (original) +++ ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityDateFilterCondition.java Fri Jan 4 14:50:59 2019 @@ -35,7 +35,7 @@ import org.apache.ofbiz.entity.model.Mod * */ @SuppressWarnings("serial") -public final class EntityDateFilterCondition extends EntityCondition { +public final class EntityDateFilterCondition implements EntityCondition { private final String fromDateName; private final String thruDateName; @@ -96,6 +96,11 @@ public final class EntityDateFilterCondi return makeCondition(UtilDateTime.nowTimestamp(), fromDateName, thruDateName); } + @Override + public String toString() { + return makeWhereString(); + } + public static EntityExpr makeCondition(Timestamp moment, String fromDateName, String thruDateName) { return EntityCondition.makeCondition( EntityCondition.makeCondition( Modified: ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityExpr.java URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityExpr.java?rev=1850373&r1=1850372&r2=1850373&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityExpr.java (original) +++ ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityExpr.java Fri Jan 4 14:50:59 2019 @@ -42,7 +42,7 @@ import org.apache.ofbiz.entity.model.Mod * */ @SuppressWarnings("serial") -public final class EntityExpr extends EntityCondition { +public final class EntityExpr implements EntityCondition { public static final String module = EntityExpr.class.getName(); private final Object lhs; @@ -263,4 +263,9 @@ public final class EntityExpr extends En public int hashCode() { return Objects.hashCode(lhs) + Objects.hashCode(operator) + Objects.hashCode(rhs); } + + @Override + public String toString() { + return makeWhereString(); + } } Modified: ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityWhereString.java URL: http://svn.apache.org/viewvc/ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityWhereString.java?rev=1850373&r1=1850372&r2=1850373&view=diff ============================================================================== --- ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityWhereString.java (original) +++ ofbiz/ofbiz-framework/trunk/framework/entity/src/main/java/org/apache/ofbiz/entity/condition/EntityWhereString.java Fri Jan 4 14:50:59 2019 @@ -41,7 +41,7 @@ import org.apache.ofbiz.entity.model.Mod * */ @SuppressWarnings("serial") -public final class EntityWhereString extends EntityCondition { +public final class EntityWhereString implements EntityCondition { private final String sqlString; @@ -100,4 +100,9 @@ public final class EntityWhereString ext public int hashCode() { return Objects.hashCode(sqlString); } + + @Override + public String toString() { + return makeWhereString(); + } } |
Free forum by Nabble | Edit this page |