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(), params));
} else if (condition instanceof ConditionList) {
ConditionList cl = (ConditionList) condition;
List<EntityCondition> conditions = FastList.newInstance();
for (Condition subCondition: cl) {
conditions.add(parse(subCondition, params));
}
return EntityCondition.makeCondition(conditions, cl.getJoiner() == Joiner.AND ? EntityOperator.AND : EntityOperator.OR);
} else {
throw new UnsupportedOperationException(condition.toString());
}
}