package squill.query; import static squill.functions.Operations.and; import java.util.Collections; import java.util.List; import squill.query.where.WhereExpression; import squill.tree.QueryPartHandler; import squill.tree.TreeTraverser; public class WherePart implements QueryPart { private WhereExpression whereClause; private final QueryContext ctx; public WherePart(QueryContext ctx) { this.ctx = ctx; } public List<Object> getSqlArguments() { if (whereClause == null) { return Collections.emptyList(); } return whereClause.getSqlArguments(); } public String getDefaultSql() { if (whereClause == null) { return ""; // if there is no where clauses or when it is INSERT going on } return " WHERE " + whereClause.getDefaultSql(); } public <T> T traverse(final QueryPartHandler<T> handler, final T collectingParameter) { final TreeTraverser traverser = new TreeTraverser(); traverser.traverse(this, handler, collectingParameter); traverser.traverse(whereClause, handler, collectingParameter); return collectingParameter; } public void addWhereClause(final WhereExpression whereClause) { whereClause.setQueryContext(ctx); if (this.whereClause==null) this.whereClause=whereClause; else this.whereClause=and(this.whereClause,whereClause); } public WhereExpression getWhereClause() { return whereClause; } public void setQueryContext(QueryContext ctx) { whereClause.setQueryContext(ctx); } }