Author: doogie
Date: Tue Nov 17 08:28:35 2009 New Revision: 881190 URL: http://svn.apache.org/viewvc?rev=881190&view=rev Log: Move the condition parsing code to a separate class. Added: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/sql/EntityConditionPlanner.java Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/sql/EntityPlanner.java Added: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/sql/EntityConditionPlanner.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/sql/EntityConditionPlanner.java?rev=881190&view=auto ============================================================================== --- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/sql/EntityConditionPlanner.java (added) +++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/sql/EntityConditionPlanner.java Tue Nov 17 08:28:35 2009 @@ -0,0 +1,79 @@ +/* + * Licensed to the Apache Software Foundation (ASF) under one + * or more contributor license agreements. See the NOTICE file + * distributed with this work for additional information + * regarding copyright ownership. The ASF licenses this file + * to you under the Apache License, Version 2.0 (the + * "License"); you may not use this file except in compliance + * with the License. You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, + * software distributed under the License is distributed on an + * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY + * KIND, either express or implied. See the License for the + * specific language governing permissions and limitations + * under the License. + */ +package org.ofbiz.entity.sql; + +import java.util.List; + +import javolution.util.FastList; + +import org.ofbiz.entity.condition.EntityFieldValue; +import org.ofbiz.entity.condition.EntityCondition; +import org.ofbiz.entity.condition.EntityConditionValue; +import org.ofbiz.entity.condition.EntityOperator; + +import org.ofbiz.sql.BooleanCondition; +import org.ofbiz.sql.Condition; +import org.ofbiz.sql.ConditionList; +import org.ofbiz.sql.FieldValue; +import org.ofbiz.sql.Joiner; +import org.ofbiz.sql.NumberValue; +import org.ofbiz.sql.StringValue; +import org.ofbiz.sql.Value; + +public final class EntityConditionPlanner { + public EntityCondition buildCondition(Condition condition) { + if (condition == null) return null; + if (condition instanceof BooleanCondition) { + BooleanCondition bc = (BooleanCondition) condition; + return EntityCondition.makeCondition(buildFieldValue(bc.getLeft()), EntityOperator.lookupComparison(bc.getOp()), buildValue(bc.getRight())); + } else if (condition instanceof ConditionList) { + ConditionList cl = (ConditionList) condition; + List<EntityCondition> conditions = FastList.newInstance(); + for (Condition subCondition: cl) { + conditions.add(buildCondition(subCondition)); + } + return EntityCondition.makeCondition(conditions, cl.getJoiner() == Joiner.AND ? EntityOperator.AND : EntityOperator.OR); + } else { + throw new UnsupportedOperationException(condition.toString()); + } + } + + public EntityFieldValue buildFieldValue(Value value) { + if (value instanceof FieldValue) { + FieldValue fv = (FieldValue) value; + return EntityFieldValue.makeFieldValue(fv.getFieldName(), fv.getTableName(), null, null); + } + throw new UnsupportedOperationException(value.toString()); + } + + public Object buildValue(Object value) { + if (value instanceof NumberValue) { + return ((NumberValue) value).getNumber(); + } else if (value instanceof StringValue) { + return ((StringValue) value).getString(); + } else if (value instanceof List) { + List<Object> values = FastList.newInstance(); + for (Object sqlValue: (List) value) { + values.add(buildValue(sqlValue)); + } + return values; + } + throw new UnsupportedOperationException(value.toString()); + } +} Modified: ofbiz/trunk/framework/entity/src/org/ofbiz/entity/sql/EntityPlanner.java URL: http://svn.apache.org/viewvc/ofbiz/trunk/framework/entity/src/org/ofbiz/entity/sql/EntityPlanner.java?rev=881190&r1=881189&r2=881190&view=diff ============================================================================== --- ofbiz/trunk/framework/entity/src/org/ofbiz/entity/sql/EntityPlanner.java (original) +++ ofbiz/trunk/framework/entity/src/org/ofbiz/entity/sql/EntityPlanner.java Tue Nov 17 08:28:35 2009 @@ -64,6 +64,8 @@ import org.ofbiz.sql.Value; public class EntityPlanner extends Planner<EntityPlanner, EntityDeletePlan, EntityInsertPlan, EntitySelectPlan, EntityUpdatePlan, EntityViewPlan> { + private final EntityConditionPlanner conditionPlanner = new EntityConditionPlanner(); + public EntityDeletePlan plan(SQLDelete<?> deleteStatement) { return null; } @@ -211,43 +213,7 @@ return entityKeyMaps; } - private static EntityCondition buildCondition(Condition condition) { - if (condition == null) return null; - if (condition instanceof BooleanCondition) { - BooleanCondition bc = (BooleanCondition) condition; - return EntityCondition.makeCondition(buildFieldValue(bc.getLeft()), EntityOperator.lookupComparison(bc.getOp()), buildValue(bc.getRight())); - } else if (condition instanceof ConditionList) { - ConditionList cl = (ConditionList) condition; - List<EntityCondition> conditions = FastList.newInstance(); - for (Condition subCondition: cl) { - conditions.add(buildCondition(subCondition)); - } - return EntityCondition.makeCondition(conditions, cl.getJoiner() == Joiner.AND ? EntityOperator.AND : EntityOperator.OR); - } else { - throw new UnsupportedOperationException(condition.toString()); - } - } - - private static EntityFieldValue buildFieldValue(Value value) { - if (value instanceof FieldValue) { - FieldValue fv = (FieldValue) value; - return EntityFieldValue.makeFieldValue(fv.getFieldName(), fv.getTableName(), null, null); - } - throw new UnsupportedOperationException(value.toString()); - } - - private static Object buildValue(Object value) { - if (value instanceof NumberValue) { - return ((NumberValue) value).getNumber(); - } else if (value instanceof StringValue) { - return ((StringValue) value).getString(); - } else if (value instanceof List) { - List<Object> values = FastList.newInstance(); - for (Object sqlValue: (List) value) { - values.add(buildValue(sqlValue)); - } - return values; - } - throw new UnsupportedOperationException(value.toString()); + protected EntityCondition buildCondition(Condition condition) { + return conditionPlanner.buildCondition(condition); } } |
Free forum by Nabble | Edit this page |