@Override protected OperationBuilder<T> apply( Between between, boolean negated ) { T lower = converter.toLowerValue(between.getLowerBound(), variables); T upper = converter.toUpperValue(between.getUpperBound(), variables); boolean isLowerIncluded = between.isLowerBoundIncluded(); boolean isUpperIncluded = between.isUpperBoundIncluded(); if (negated) { OperationBuilder<T> lowerOp = create(keysByValue.headMap(lower, !isLowerIncluded)); OperationBuilder<T> upperOp = create(keysByValue.tailMap(upper, !isUpperIncluded)); return new DualOperationBuilder<>(lowerOp, upperOp); } return create(keysByValue.subMap(lower, isLowerIncluded, upper, isUpperIncluded)); }
@Override protected OperationBuilder<T> apply( Between between, boolean negated ) { T lower = converter.toLowerValue(between.getLowerBound(), variables); T upper = converter.toUpperValue(between.getUpperBound(), variables); boolean isLowerIncluded = between.isLowerBoundIncluded(); boolean isUpperIncluded = between.isUpperBoundIncluded(); if (negated) { OperationBuilder<T> lowerOp = create(keysByValue.headMap(lower, !isLowerIncluded)); OperationBuilder<T> upperOp = create(keysByValue.tailMap(upper, !isUpperIncluded)); return new DualOperationBuilder<>(lowerOp, upperOp); } return create(keysByValue.subMap(lower, isLowerIncluded, upper, isUpperIncluded)); }
String field = (String)operand(between.getOperand()).apply(between.getOperand(), variables); Object low = staticOperand(between.getLowerBound()).apply(field, between.getLowerBound(), variables); Object high = staticOperand(between.getUpperBound()).apply(field, between.getUpperBound(), variables);