package org.infinispan.objectfilter.impl.syntax;
/**
* A constant boolean expression (tautology or contradiction).
*
* @author anistor@redhat.com
* @since 7.0
*/
public final class ConstantBooleanExpr implements PrimaryPredicateExpr {
public static final ConstantBooleanExpr TRUE = new ConstantBooleanExpr(true);
public static final ConstantBooleanExpr FALSE = new ConstantBooleanExpr(false);
private final boolean constantValue;
public static ConstantBooleanExpr forBoolean(boolean value) {
return value ? TRUE : FALSE;
}
private ConstantBooleanExpr(boolean constantValue) {
this.constantValue = constantValue;
}
@Override
public ValueExpr getChild() {
return null;
}
public boolean getValue() {
return constantValue;
}
public ConstantBooleanExpr negate() {
return constantValue ? FALSE : TRUE;
}
@Override
public <T> T acceptVisitor(Visitor<?, ?> visitor) {
return (T) visitor.visit(this);
}
@Override
public boolean equals(Object o) {
if (this == o) return true;
if (o == null || getClass() != o.getClass()) return false;
ConstantBooleanExpr other = (ConstantBooleanExpr) o;
return constantValue == other.constantValue;
}
@Override
public int hashCode() {
return constantValue ? 1 : 0;
}
@Override
public String toString() {
return constantValue ? "CONST_TRUE" : "CONST_FALSE";
}
@Override
public String toQueryString() {
return constantValue ? "TRUE" : "FALSE";
}
}