package hdgl.db.query.expression; import hdgl.db.query.condition.AbstractCondition; import hdgl.db.query.condition.AbstractValue; import hdgl.db.query.condition.EqualTo; import hdgl.db.query.condition.LargerThan; import hdgl.db.query.condition.LargerThanOrEqualTo; import hdgl.db.query.condition.LessThan; import hdgl.db.query.condition.LessThanOrEqualTo; import hdgl.db.query.condition.NotEqualTo; import hdgl.db.query.visitor.Visitor; public class Condition extends Expression { String label; String op; AbstractValue value; public String getLabel() { return label; } public void setLabel(String label) { this.label = label; } public String getOp() { return op; } public void setOp(String op) { this.op = op; } public AbstractValue getValue() { return value; } public void setValue(AbstractValue value) { this.value = value; } @Override public String toString() { return "["+label+op+value+"]"; } @Override public <TR, TA> TR accept(Visitor<TR, TA> visitor, TA... arguments) { return visitor.visitCondition(this, arguments); } public AbstractCondition getCondition(){ if(op.equals("=")){ return new EqualTo(getLabel(), getValue()); }else if(op.equals("<>")){ return new NotEqualTo(getLabel(), getValue()); }else if(op.equals("<=")){ return new LessThanOrEqualTo(getLabel(), getValue()); }else if(op.equals("<")){ return new LessThan(getLabel(), getValue()); }else if(op.equals(">=")){ return new LargerThanOrEqualTo(getLabel(), getValue()); }else if(op.equals(">")){ return new LargerThan(getLabel(), getValue()); }else{ throw new IllegalArgumentException(op); } } }