THIS IS A TEST INSTANCE. ALL YOUR CHANGES WILL BE LOST!!!!
...
To achieve reverseRange and reverseAll, we can generate a new class like below, we can also reuse lots of code from `RangeQuery`
RangeQuery
, to simplify the code we choose reuse the `RangeQuery`
RangeQuery
Code.
Code Block | ||||
---|---|---|---|---|
| ||||
@Evolving public final class ReverseRangeQuery<K, V> implements Query<KeyValueIterator<K, V>> { private final Optional<K> lower; private final Optional<K> upper; private ReverseRangeQuery(final Optional<K> lower, final Optional<K> upper) { this.lower = lower; this.upper = upper; } /** * Interactive range query using a lower and upper bound to filter the keys returned. * @param lower The key that specifies the lower bound of the range * @param upper The key that specifies the upper bound of the range * @param <K> The key type * @param <V> The value type */ public static <K, V> ReverseRangeQuery<K, V> withRange(final K lower, final K upper) { return new ReverseRangeQuery<>(Optional.ofNullable(lower), Optional.ofNullable(upper)); } /** * Interactive range query using an upper bound to filter the keys returned. * If both <K,V> are null, RangQuery returns a full range scan. * @param upper The key that specifies the upper bound of the range * @param <K> The key type * @param <V> The value type */ public static <K, V> ReverseRangeQuery<K, V> withUpperBound(final K upper) { return new ReverseRangeQuery<>(Optional.empty(), Optional.of(upper)); } /** * Interactive range query using a lower bound to filter the keys returned. * @param lower The key that specifies the lower bound of the range * @param <K> The key type * @param <V> The value type */ public static <K, V> ReverseRangeQuery<K, V> withLowerBound(final K lower) { return new ReverseRangeQuery<>(Optional.of(lower), Optional.empty()); } /** * Interactive scan query that returns all records in the store. * @param <K> The key type * @param <V> The value type */ public static <K, V> ReverseRangeQuery<K, V> withNoBounds() { return new ReverseRangeQuery<>(Optional.empty(), Optional.empty()); } /** * The lower bound of the query, if specified. */ public Optional<K> getLowerBound() { return lower; } /** * The upper bound of the query, if specified */ public Optional<K> getUpperBound() { return upper; } } |
...