| FazBrowse GitHub Viewer | Trending | | Home |
| Tools: [Download Repo ZIP] [Original HTTPS Page] |
Immutable once created (although the buffers themselves may not be). * * @param buffer type */ public final class KeyRange { private static final KeyRange BK = new KeyRange(BACKWARD_ALL, null, null); private static final KeyRange FW = new KeyRange(FORWARD_ALL, null, null); private final T start; private final T stop; private final KeyRangeType type; /** * Construct a key range. * *
End user code may find it more expressive to use one of the static methods provided on this * class. * * @param type key type * @param start start key (required if applicable for the passed range type) * @param stop stop key (required if applicable for the passed range type) */ public KeyRange(final KeyRangeType type, final T start, final T stop) { requireNonNull(type, "Key range type is required"); if (type.isStartKeyRequired()) { requireNonNull(start, "Start key is required for this key range type"); } if (type.isStopKeyRequired()) { requireNonNull(stop, "Stop key is required for this key range type"); } this.start = start; this.stop = stop; this.type = type; } /** * Create a {@link KeyRangeType#FORWARD_ALL} range. * * @param buffer type * @return a key range (never null) */ public static KeyRange all() { return (KeyRange) FW; } /** * Create a {@link KeyRangeType#BACKWARD_ALL} range. * * @param buffer type * @return a key range (never null) */ public static KeyRange allBackward() { return (KeyRange) BK; } /** * Create a {@link KeyRangeType#FORWARD_AT_LEAST} range. * * @param buffer type * @param start start key (required) * @return a key range (never null) */ public static KeyRange atLeast(final T start) { return new KeyRange(KeyRangeType.FORWARD_AT_LEAST, start, null); } /** * Create a {@link KeyRangeType#BACKWARD_AT_LEAST} range. * * @param buffer type * @param start start key (required) * @return a key range (never null) */ public static KeyRange atLeastBackward(final T start) { return new KeyRange(KeyRangeType.BACKWARD_AT_LEAST, start, null); } /** * Create a {@link KeyRangeType#FORWARD_AT_MOST} range. * * @param buffer type * @param stop stop key (required) * @return a key range (never null) */ public static KeyRange atMost(final T stop) { return new KeyRange(KeyRangeType.FORWARD_AT_MOST, null, stop); } /** * Create a {@link KeyRangeType#BACKWARD_AT_MOST} range. * * @param buffer type * @param stop stop key (required) * @return a key range (never null) */ public static KeyRange atMostBackward(final T stop) { return new KeyRange(KeyRangeType.BACKWARD_AT_MOST, null, stop); } /** * Create a {@link KeyRangeType#FORWARD_CLOSED} range. * * @param buffer type * @param start start key (required) * @param stop stop key (required) * @return a key range (never null) */ public static KeyRange closed(final T start, final T stop) { return new KeyRange(KeyRangeType.FORWARD_CLOSED, start, stop); } /** * Create a {@link KeyRangeType#BACKWARD_CLOSED} range. * * @param buffer type * @param start start key (required) * @param stop stop key (required) * @return a key range (never null) */ public static KeyRange closedBackward(final T start, final T stop) { return new KeyRange(KeyRangeType.BACKWARD_CLOSED, start, stop); } /** * Create a {@link KeyRangeType#FORWARD_CLOSED_OPEN} range. * * @param buffer type * @param start start key (required) * @param stop stop key (required) * @return a key range (never null) */ public static KeyRange closedOpen(final T start, final T stop) { return new KeyRange(KeyRangeType.FORWARD_CLOSED_OPEN, start, stop); } /** * Create a {@link KeyRangeType#BACKWARD_CLOSED_OPEN} range. * * @param buffer type * @param start start key (required) * @param stop stop key (required) * @return a key range (never null) */ public static KeyRange closedOpenBackward(final T start, final T stop) { return new KeyRange(KeyRangeType.BACKWARD_CLOSED_OPEN, start, stop); } /** * Create a {@link KeyRangeType#FORWARD_GREATER_THAN} range. * * @param buffer type * @param start start key (required) * @return a key range (never null) */ public static KeyRange greaterThan(final T start) { return new KeyRange(KeyRangeType.FORWARD_GREATER_THAN, start, null); } /** * Create a {@link KeyRangeType#BACKWARD_GREATER_THAN} range. * * @param buffer type * @param start start key (required) * @return a key range (never null) */ public static KeyRange greaterThanBackward(final T start) { return new KeyRange(KeyRangeType.BACKWARD_GREATER_THAN, start, null); } /** * Create a {@link KeyRangeType#FORWARD_LESS_THAN} range. * * @param buffer type * @param stop stop key (required) * @return a key range (never null) */ public static KeyRange lessThan(final T stop) { return new KeyRange(KeyRangeType.FORWARD_LESS_THAN, null, stop); } /** * Create a {@link KeyRangeType#BACKWARD_LESS_THAN} range. * * @param buffer type * @param stop stop key (required) * @return a key range (never null) */ public static KeyRange lessThanBackward(final T stop) { return new KeyRange(KeyRangeType.BACKWARD_LESS_THAN, null, stop); } /** * Create a {@link KeyRangeType#FORWARD_OPEN} range. * * @param buffer type * @param start start key (required) * @param stop stop key (required) * @return a key range (never null) */ public static KeyRange open(final T start, final T stop) { return new KeyRange(KeyRangeType.FORWARD_OPEN, start, stop); } /** * Create a {@link KeyRangeType#BACKWARD_OPEN} range. * * @param buffer type * @param start start key (required) * @param stop stop key (required) * @return a key range (never null) */ public static KeyRange openBackward(final T start, final T stop) { return new KeyRange(KeyRangeType.BACKWARD_OPEN, start, stop); } /** * Create a {@link KeyRangeType#FORWARD_OPEN_CLOSED} range. * * @param buffer type * @param start start key (required) * @param stop stop key (required) * @return a key range (never null) */ public static KeyRange openClosed(final T start, final T stop) { return new KeyRange(KeyRangeType.FORWARD_OPEN_CLOSED, start, stop); } /** * Create a {@link KeyRangeType#BACKWARD_OPEN_CLOSED} range. * * @param buffer type * @param start start key (required) * @param stop stop key (required) * @return a key range (never null) */ public static KeyRange openClosedBackward(final T start, final T stop) { return new KeyRange(KeyRangeType.BACKWARD_OPEN_CLOSED, start, stop); } /** * Start key. * * @return start key (may be null) */ public T getStart() { return start; } /** * Stop key. * * @return stop key (may be null) */ public T getStop() { return stop; } /** * Key range type. * * @return type (never null) */ public KeyRangeType getType() { return type; } }
| Back | FazBrowse Home | New Git URL |