boolean matchesRange(Comparable<Object> value) { if (min != NoValue.INSTANCE) { int cmp = EntityProtoComparators.MULTI_TYPE_COMPARATOR.compare(value, min); if (cmp < 0 || (cmp == 0 && !minInclusive)) { return false; } } if (max != NoValue.INSTANCE) { int cmp = EntityProtoComparators.MULTI_TYPE_COMPARATOR.compare(value, max); if (cmp > 0 || (cmp == 0 && !maxInclusive)) { return false; } } return true; }
public void addFilter(Filter filter) { Comparable<Object> value = DataTypeTranslator.getComparablePropertyValue(filter.getProperty(0)); switch (filter.getOpEnum()) { case EQUAL: equalValues.add(value); break; case GREATER_THAN: if (min == NoValue.INSTANCE || EntityProtoComparators.MULTI_TYPE_COMPARATOR.compare(min, value) <= 0) { min = value; minInclusive = false; } break; case GREATER_THAN_OR_EQUAL: if (min == NoValue.INSTANCE || EntityProtoComparators.MULTI_TYPE_COMPARATOR.compare(min, value) < 0) { min = value; minInclusive = true; } break; case LESS_THAN: if (max == NoValue.INSTANCE || EntityProtoComparators.MULTI_TYPE_COMPARATOR.compare(max, value) >= 0) { max = value; maxInclusive = false; } break; case LESS_THAN_OR_EQUAL: if (max == NoValue.INSTANCE || EntityProtoComparators.MULTI_TYPE_COMPARATOR.compare(max, value) > 0) { max = value; maxInclusive = true; } break; case EXISTS: break; default: throw new IllegalArgumentException( "Unable to perform filter using operator " + filter.getOp()); } }