package org.infinispan.objectfilter.impl.syntax;
/**
* @author anistor@redhat.com
* @since 9.0
*/
public final class FullTextRangeExpr implements PrimaryPredicateExpr {
private final ValueExpr leftChild;
private final boolean includeLower;
private final Object lower;
private final boolean includeUpper;
private final Object upper;
public FullTextRangeExpr(ValueExpr leftChild, boolean includeLower, Object lower, Object upper, boolean includeUpper) {
this.leftChild = leftChild;
this.includeLower = includeLower;
this.lower = lower;
this.upper = upper;
this.includeUpper = includeUpper;
}
public boolean isIncludeLower() {
return includeLower;
}
public boolean isIncludeUpper() {
return includeUpper;
}
public Object getLower() {
return lower;
}
public Object getUpper() {
return upper;
}
@Override
public String toString() {
return leftChild.toString() + ":" +
(includeLower ? '[' : '{') + (lower == null ? "*" : lower) +
" TO " +
(upper == null ? "*" : upper) + (includeUpper ? ']' : '}');
}
@Override
public String toQueryString() {
return leftChild.toQueryString() + ":" +
(includeLower ? '[' : '{') + (lower == null ? "*" : lower) +
" TO " +
(upper == null ? "*" : upper) + (includeUpper ? ']' : '}');
}
@Override
public <T> T acceptVisitor(Visitor<?, ?> visitor) {
return (T) visitor.visit(this);
}
@Override
public ValueExpr getChild() {
return leftChild;
}
}