package railo.runtime.sql; import java.util.ArrayList; import java.util.List; import railo.runtime.sql.exp.Column; import railo.runtime.sql.exp.Expression; import railo.runtime.sql.exp.op.Operation; import railo.runtime.sql.exp.value.ValueNumber; public class Select { private List selects=new ArrayList(); private List froms=new ArrayList(); private Operation where; private List groupbys=new ArrayList(); private Operation having; private ValueNumber top; private boolean distinct; private boolean unionDistinct; public void addSelectExpression(Expression select) { selects.add(select); select.setIndex(selects.size()); } public void addFromExpression(Column exp) { froms.add(exp); exp.setIndex(froms.size()); } public void setWhereExpression(Operation where) { this.where=where; } public void addGroupByExpression(Column col) { this.groupbys.add(col); } public void setTop(ValueNumber top) { this.top=top; } /** * @return the froms */ public Column[] getFroms() { return (Column[]) froms.toArray(new Column[froms.size()]); } /** * @return the groupbys */ public Column[] getGroupbys() { if(groupbys==null) return new Column[0]; return (Column[]) groupbys.toArray(new Column[groupbys.size()]); } /** * @return the havings */ public Operation getHaving() { return having; } /** * @return the selects */ public Expression[] getSelects() { return (Expression[]) selects.toArray(new Expression[selects.size()]); } /** * @return the where */ public Operation getWhere() { return where; } public boolean isUnionDistinct() { return unionDistinct; } public boolean isDistinct() { return distinct; } public void setDistinct(boolean b) { this.distinct=b; } public void setUnionDistinct(boolean b) { //print.out("-"+b); this.unionDistinct=b; } /** * @param having the having to set */ public void setHaving(Operation having) { this.having = having; } /** * @return the top */ public ValueNumber getTop() { return top; } }