package org.tax.expression;
import org.tax.datatypes.QLBoolean;
import org.tax.datatypes.QLNumber;
//public class BooleanCompExpr extends BooleanExpr {
public class BooleanCompExpr extends Expression<QLBoolean> {
Expression<QLNumber<Number>> left, right;
String op;
public BooleanCompExpr(Expression<QLNumber<Number>> left, Expression<QLNumber<Number>> right,
String op) {
this.left = left;
this.right = right;
this.op = op;
}
@Override
public QLBoolean evaluate() {
if (op.equals("=")) {
return new QLBoolean(left.evaluate().compareTo(right.evaluate().getValue()) == 0);
}
if (op.equals("<=")) {
return new QLBoolean(left.evaluate().compareTo(right.evaluate().getValue()) <= 0);
}
if (op.equals(">=")) {
return new QLBoolean(left.evaluate().compareTo(right.evaluate().getValue()) >= 0);
}
if (op.equals("!=")) {
return new QLBoolean(left.evaluate().compareTo(right.evaluate().getValue()) != 0);
}
if (op.equals(">")) {
return new QLBoolean(left.evaluate().compareTo(right.evaluate().getValue()) > 0);
}
if (op.equals("<")) {
return new QLBoolean(left.evaluate().compareTo(right.evaluate().getValue()) < 0);
}
return null;
}
}