package org.dayatang.domain.internal.criterion; import org.dayatang.domain.CriterionBuilder; import org.dayatang.domain.QueryCriterion; import java.util.Collection; /** * 一个工具类,作为各种查询条件的工厂 * * @author yyang (<a href="mailto:gdyangyu@gmail.com">gdyangyu@gmail.com</a>) */ public class CriterionBuilderImpl implements CriterionBuilder { public QueryCriterion eq(String propName, Object value) { return new EqCriterion(propName, value); } public QueryCriterion notEq(String propName, Object value) { return new NotEqCriterion(propName, value); } public QueryCriterion ge(String propName, Comparable<?> value) { return new GeCriterion(propName, value); } public QueryCriterion gt(String propName, Comparable<?> value) { return new GtCriterion(propName, value); } public QueryCriterion le(String propName, Comparable<?> value) { return new LeCriterion(propName, value); } public QueryCriterion lt(String propName, Comparable<?> value) { return new LtCriterion(propName, value); } public QueryCriterion eqProp(String propName, String otherPropName) { return new EqPropCriterion(propName, otherPropName); } public QueryCriterion notEqProp(String propName, String otherPropName) { return new NotEqPropCriterion(propName, otherPropName); } public QueryCriterion gtProp(String propName, String otherPropName) { return new GtPropCriterion(propName, otherPropName); } public QueryCriterion geProp(String propName, String otherPropName) { return new GePropCriterion(propName, otherPropName); } public QueryCriterion ltProp(String propName, String otherPropName) { return new LtPropCriterion(propName, otherPropName); } public QueryCriterion leProp(String propName, String otherPropName) { return new LePropCriterion(propName, otherPropName); } public QueryCriterion sizeEq(String propName, int size) { return new SizeEqCriterion(propName, size); } public QueryCriterion sizeNotEq(String propName, int size) { return new SizeNotEqCriterion(propName, size); } public QueryCriterion sizeGt(String propName, int size) { return new SizeGtCriterion(propName, size); } public QueryCriterion sizeGe(String propName, int size) { return new SizeGeCriterion(propName, size); } public QueryCriterion sizeLt(String propName, int size) { return new SizeLtCriterion(propName, size); } public QueryCriterion sizeLe(String propName, int size) { return new SizeLeCriterion(propName, size); } public QueryCriterion containsText(String propName, String value) { return new ContainsTextCriterion(propName, value); } public QueryCriterion startsWithText(String propName, String value) { return new StartsWithTextCriterion(propName, value); } public QueryCriterion in(String propName, Collection<?> value) { return new InCriterion(propName, value); } public QueryCriterion in(String propName, Object[] value) { return new InCriterion(propName, value); } public QueryCriterion notIn(String propName, Collection<?> value) { return new NotInCriterion(propName, value); } public QueryCriterion notIn(String propName, Object[] value) { return new NotInCriterion(propName, value); } public QueryCriterion between(String propName, Comparable<?> from, Comparable<?> to) { return new BetweenCriterion(propName, from, to); } public QueryCriterion isNull(String propName) { return new IsNullCriterion(propName); } public QueryCriterion notNull(String propName) { return new NotNullCriterion(propName); } public QueryCriterion isEmpty(String propName) { return new IsEmptyCriterion(propName); } public QueryCriterion notEmpty(String propName) { return new NotEmptyCriterion(propName); } public QueryCriterion isTrue(String propName) { return eq(propName, true); } public QueryCriterion isFalse(String propName) { return eq(propName, false); } public QueryCriterion isBlank(String propName) { return or(isNull(propName), eq(propName, "")); } public QueryCriterion notBlank(String propName) { return and(notNull(propName), notEq(propName, "")); } public QueryCriterion not(QueryCriterion criterion) { return new NotCriterion(criterion); } public QueryCriterion and(QueryCriterion... criteria) { return new AndCriterion(criteria); } public QueryCriterion or(QueryCriterion... criteria) { return new OrCriterion(criteria); } @Override public QueryCriterion empty() { return EmptyCriterion.singleton(); } }