Author: doogie Date: Fri Jun 28 19:08:39 2013 New Revision: 1497893 URL: http://svn.apache.org/r1497893 Log: FEATURE: Allow constant numbers to be directly added to a query, instead of having to deal with some kind of map/generic value. This makes it simpler to use full-text-search queries thru the entity engine(postgresql and oracle).
Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/condition/EntityConditionValue.java Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/condition/EntityConditionValue.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/condition/EntityConditionValue.java?rev=1497893&r1=1497892&r2=1497893&view=diff ============================================================================== --- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/condition/EntityConditionValue.java (original) +++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/condition/EntityConditionValue.java Fri Jun 28 19:08:39 2013 @@ -22,6 +22,9 @@ import java.util.ArrayList; import java.util.List; import java.util.Map; +import javolution.context.ObjectFactory; +import javolution.lang.Reusable; + import org.ofbiz.entity.Delegator; import org.ofbiz.entity.GenericEntity; import org.ofbiz.entity.GenericModelException; @@ -36,6 +39,65 @@ import org.ofbiz.entity.model.ModelField @SuppressWarnings("serial") public abstract class EntityConditionValue extends EntityConditionBase { + public static EntityConditionValue CONSTANT_NUMBER(Number value) { return ConstantNumberValue.createConstantNumberValue(value); } + public static class ConstantNumberValue extends EntityConditionValue implements Reusable { + protected static ConstantNumberValue createConstantNumberValue(Number value) { + ConstantNumberValue cnv = factory.object(); + cnv.init(value); + return cnv; + } + protected static final ObjectFactory<ConstantNumberValue> factory = new ObjectFactory<ConstantNumberValue>() { + protected ConstantNumberValue create() { + return new ConstantNumberValue(); + } + }; + + private Number value; + + protected void init(Number value) { + this.value = value; + } + + @Override + public void accept(EntityConditionVisitor visitor) { + visitor.acceptEntityConditionValue(this); + } + + @Override + public void addSqlValue(StringBuilder sql, Map<String, String> tableAliases, ModelEntity modelEntity, List<EntityConditionParam> entityConditionParams, boolean includeTableNamePrefix, Datasource datasourceinfo) { + sql.append(value); + } + + @Override + public EntityConditionValue freeze() { + return this; + } + + @Override + public ModelField getModelField(ModelEntity modelEntity) { + return null; + } + + @Override + public Object getValue(Delegator delegator, Map<String, ? extends Object> map) { + return value; + } + + @Override + public void reset() { + this.value = value; + } + + @Override + public void validateSql(org.ofbiz.entity.model.ModelEntity modelEntity) { + } + + @Override + public void visit(EntityConditionVisitor visitor) { + visitor.acceptObject(value); + } + } + public abstract ModelField getModelField(ModelEntity modelEntity); public void addSqlValue(StringBuilder sql, ModelEntity modelEntity, List<EntityConditionParam> entityConditionParams, boolean includeTableNamePrefix,