package org.infinispan.objectfilter.impl.syntax; /** * An expression that represents a range of Comparable values corresponding to the BETWEEN predicate. The lower and * upper bound are included. * * @author anistor@redhat.com * @since 9.0 */ public final class BetweenExpr implements PrimaryPredicateExpr { private final ValueExpr leftChild; private final ValueExpr fromChild; private final ValueExpr toChild; public BetweenExpr(ValueExpr leftChild, ValueExpr fromChild, ValueExpr toChild) { this.leftChild = leftChild; this.fromChild = fromChild; this.toChild = toChild; } @Override public ValueExpr getChild() { return leftChild; } public ValueExpr getLeftChild() { return leftChild; } public ValueExpr getFromChild() { return fromChild; } public ValueExpr getToChild() { return toChild; } @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; BetweenExpr other = (BetweenExpr) o; return leftChild.equals(other.leftChild) && fromChild.equals(other.fromChild) && toChild.equals(other.toChild); } @Override public int hashCode() { return 31 * (31 * leftChild.hashCode() + fromChild.hashCode()) + toChild.hashCode(); } @Override public String toString() { return "BETWEEN(" + leftChild + ", " + fromChild + ", " + toChild + ")"; } @Override public String toQueryString() { return leftChild.toQueryString() + " BETWEEN " + fromChild.toQueryString() + " AND " + toChild.toQueryString(); } }