package com.googlecode.tawus.search; import java.util.ArrayList; import java.util.List; @SuppressWarnings("unchecked") public class Condition implements ICondition { private static final long serialVersionUID = 1L; private ConditionType conditionType; @SuppressWarnings("rawtypes") private List args = new ArrayList(); private boolean join; private boolean property; private Condition(ConditionType conditionType, String... exprs) { this.conditionType = conditionType; this.join = false; this.property = true; for(String expr : exprs) { getArgs().add(expr); } } private Condition(ConditionType conditionType, boolean property, Object... exprs) { this.conditionType = conditionType; this.join = false; this.property = property; for(Object expr : exprs) { getArgs().add(expr); } } private Condition(ConditionType conditionType, ICondition... conditions) { this.conditionType = conditionType; this.join = true; this.property = true; for(ICondition condition : conditions) { getArgs().add(condition); } } public Condition setProperty(boolean property) { this.property = property; return this; } public boolean isProperty() { return property; } public ConditionType getType() { return conditionType; } @SuppressWarnings("rawtypes") public List getArgs() { return args; } public boolean isJoin() { return join; } public static ICondition eq(final String expr1, final String expr2) { return new Condition(ConditionType.EQ, expr1, expr2); } public static ICondition eqValue(final String expr1, final Object value) { return new Condition(ConditionType.EQ, false, expr1, value); } public static ICondition eq(final String expr) { return new Condition(ConditionType.EQ, expr); } public static ICondition like(final String expr) { return new Condition(ConditionType.LIKE, expr); } public static ICondition likeValue(final String expr1, final Object value) { return new Condition(ConditionType.LIKE, false, expr1, value); } public static ICondition ne(final String expr1, final String expr2) { return new Condition(ConditionType.NE, expr1, expr2); } public static ICondition neValue(final String expr1, final Object value) { return new Condition(ConditionType.NE, false, expr1, value); } public static ICondition ne(final String expr) { return new Condition(ConditionType.NE, expr); } public static ICondition notLike(final String expr) { return new Condition(ConditionType.NOT_LIKE, expr); } public static ICondition notLikeValue(final String expr1, final Object value) { return new Condition(ConditionType.NOT_LIKE, false, expr1, value); } public static ICondition lt(final String expr1, final String expr2) { return new Condition(ConditionType.LT, expr1, expr2); } public static ICondition ltValue(final String expr1, final Object value) { return new Condition(ConditionType.LT, false, expr1, value); } public static ICondition lt(final String expr) { return new Condition(ConditionType.LT, expr); } public static ICondition le(final String expr1, final String expr2) { return new Condition(ConditionType.LE, expr1, expr2); } public static ICondition leValue(final String expr1, final Object value) { return new Condition(ConditionType.LE, false, expr1, value); } public static ICondition le(final String expr) { return new Condition(ConditionType.LE, expr); } public static ICondition gt(final String expr1, final String expr2) { return new Condition(ConditionType.GT, expr1, expr2); } public static ICondition gtValue(final String expr1, final Object value) { return new Condition(ConditionType.GT, false, expr1, value); } public static ICondition gt(final String expr) { return new Condition(ConditionType.GT, expr); } public static ICondition ge(final String expr1, final String expr2) { return new Condition(ConditionType.GE, expr1, expr2); } public static ICondition geValue(final String expr1, final Object value) { return new Condition(ConditionType.GE, false, expr1, value); } public static ICondition ge(final String expr) { return new Condition(ConditionType.GE, expr); } public static ICondition isNull(final String expr) { return new Condition(ConditionType.IS_NULL, expr); } public static ICondition isNotNull(final String expr) { return new Condition(ConditionType.NOT_NULL, expr); } public static ICondition and(final ICondition... conditions) { return new Condition(ConditionType.AND, conditions); } public static ICondition or(final ICondition... conditions) { return new Condition(ConditionType.OR, conditions); } public static ICondition not(final ICondition condition) { return new Condition(ConditionType.NOT, condition); } }