/** * */ package squill.functions; import static java.util.Arrays.asList; import java.util.List; import squill.query.Expression; import squill.query.MultiPartExpression; import squill.query.QueryContext; import squill.query.select.SimpleSelectExpression; public class BinaryOperatorSelectExpression<RETURN_TYPE, T1, T2> extends SimpleSelectExpression<RETURN_TYPE> implements MultiPartExpression<RETURN_TYPE> { private final Expression<T1> exp1; private final String operator; private final Expression<T2> exp2; public BinaryOperatorSelectExpression(final Class<RETURN_TYPE> type, final Expression<T1> exp1, final String operator, final Expression<T2> exp2) { super(type); this.exp1 = exp1; this.operator = operator; this.exp2 = exp2; } @Override public String getDefaultSql() { StringBuilder sql = new StringBuilder(); sql.append(exp1.getDefaultSql()); sql.append(operator); sql.append(exp2.getDefaultSql()); return sql.toString(); } @Override public List<Object> getSqlArguments() { return OperationsHelper.concat(exp1.getSqlArguments(), exp2.getSqlArguments()); } public List<? extends Expression<?>> getParts() { return asList(exp1,exp2); } public String getOperator() { return operator; } @Override public void setQueryContext(QueryContext ctx) { super.setQueryContext(ctx); exp1.setQueryContext(ctx); exp2.setQueryContext(ctx); } }