package org.infinispan.objectfilter.impl.predicateindex;
import org.infinispan.objectfilter.impl.util.Interval;
/**
* A predicate attached to an attribute. It comes in two flavors: condition predicate or interval predicate. An interval
* predicate represents a range of values (possibly infinite at one end but not both). It requires that the attribute
* domain is Comparable, otherwise the notion of interval is meaningless. A condition predicate on the other hand can
* have any arbitrary condition and does not require the attribute value to be Comparable.
*
* @author anistor@redhat.com
* @since 7.0
*/
public final class IntervalPredicate<AttributeDomain extends Comparable<AttributeDomain>> extends Predicate<AttributeDomain> {
/**
* The interval.
*/
private final Interval<AttributeDomain> interval;
public IntervalPredicate(boolean isRepeated, Interval<AttributeDomain> interval) {
super(isRepeated, new IntervalCondition<>(interval));
this.interval = interval;
}
public Interval<AttributeDomain> getInterval() {
return interval;
}
}