com.sleepycat.util.keyrange
Class KeyRange

java.lang.Object
  extended by com.sleepycat.util.keyrange.KeyRange

public class KeyRange
extends java.lang.Object

Encapsulates a key range for use with a RangeCursor.


Field Summary
static byte[] ZERO_LENGTH_BYTE_ARRAY
           
 
Constructor Summary
KeyRange(java.util.Comparator comparator)
          Creates an unconstrained key range.
 
Method Summary
 boolean check(DatabaseEntry key)
          Returns whether a given key is within range.
 boolean check(DatabaseEntry key, boolean inclusive)
          Returns whether a given key is within range.
 boolean checkBegin(DatabaseEntry key, boolean inclusive)
          Returns whether the given key is within range with respect to the beginning of the range.
 boolean checkEnd(DatabaseEntry key, boolean inclusive)
          Returns whether the given key is within range with respect to the end of the range.
 int compare(DatabaseEntry key1, DatabaseEntry key2)
          Compares two keys, using the user comparator if there is one.
static int compareBytes(byte[] data1, int offset1, int size1, byte[] data2, int offset2, int size2)
          Compares two keys as unsigned byte arrays, which is the default comparison used by JE/DB.
static DatabaseEntry copy(DatabaseEntry from)
          Returns a copy of an entry.
static void copy(DatabaseEntry from, DatabaseEntry to)
          Copies one entry to another.
static byte[] copyBytes(byte[] bytes)
          Copies a byte array.
static boolean equalBytes(byte[] data1, int offset1, int size1, byte[] data2, int offset2, int size2)
          Compares two byte arrays for equality.
static boolean equalBytes(DatabaseEntry e1, DatabaseEntry e2)
          Returns the two DatabaseEntry objects have the same data value.
static byte[] getByteArray(DatabaseEntry entry)
          Returns an entry's byte array, copying it if the entry offset is non-zero.
static byte[] getByteArray(DatabaseEntry entry, int maxBytes)
           
 DatabaseEntry getSingleKey()
          Returns the key of a single-key range, or null if not a single-key range.
 boolean hasBound()
          Returns whether this range has a begin or end bound.
 boolean isSingleKey()
          Returns whether this is a single-key range.
 KeyRange subRange(DatabaseEntry key)
          Creates a range for a single key.
 KeyRange subRange(DatabaseEntry beginKey, boolean beginInclusive, DatabaseEntry endKey, boolean endInclusive)
          Creates a range that is the intersection of this range and the given range parameters.
 java.lang.String toString()
          Formats this range as a string for debugging.
static java.lang.String toString(DatabaseEntry dbt)
          Converts the byte array of this thang to space-separated integers, and suffixed by the record number if applicable.
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 

Field Detail

ZERO_LENGTH_BYTE_ARRAY

public static final byte[] ZERO_LENGTH_BYTE_ARRAY
Constructor Detail

KeyRange

public KeyRange(java.util.Comparator comparator)
Creates an unconstrained key range.

Method Detail

subRange

public KeyRange subRange(DatabaseEntry key)
                  throws KeyRangeException
Creates a range for a single key.

Throws:
KeyRangeException

subRange

public KeyRange subRange(DatabaseEntry beginKey,
                         boolean beginInclusive,
                         DatabaseEntry endKey,
                         boolean endInclusive)
                  throws KeyRangeException
Creates a range that is the intersection of this range and the given range parameters.

Throws:
KeyRangeException

isSingleKey

public final boolean isSingleKey()
Returns whether this is a single-key range.


getSingleKey

public final DatabaseEntry getSingleKey()
Returns the key of a single-key range, or null if not a single-key range.


hasBound

public final boolean hasBound()
Returns whether this range has a begin or end bound.


toString

public java.lang.String toString()
Formats this range as a string for debugging.

Overrides:
toString in class java.lang.Object

check

public boolean check(DatabaseEntry key)
Returns whether a given key is within range.


check

public boolean check(DatabaseEntry key,
                     boolean inclusive)
Returns whether a given key is within range.


checkBegin

public boolean checkBegin(DatabaseEntry key,
                          boolean inclusive)
Returns whether the given key is within range with respect to the beginning of the range.

The inclusive parameter should be true for checking a key read from the database; this will require that the key is within range. When inclusive=false the key is allowed to be equal to the beginKey for the range; this is used for checking a new exclusive bound of a sub-range.

Note that when inclusive=false and beginInclusive=true our check is not exactly correct because in theory we should allow the key to be "one less" than the existing bound; however, checking for "one less" is impossible so we do the best we can and test the bounds conservatively.


checkEnd

public boolean checkEnd(DatabaseEntry key,
                        boolean inclusive)
Returns whether the given key is within range with respect to the end of the range. See checkBegin for details.


compare

public int compare(DatabaseEntry key1,
                   DatabaseEntry key2)
Compares two keys, using the user comparator if there is one.


copyBytes

public static byte[] copyBytes(byte[] bytes)
Copies a byte array.


compareBytes

public static int compareBytes(byte[] data1,
                               int offset1,
                               int size1,
                               byte[] data2,
                               int offset2,
                               int size2)
Compares two keys as unsigned byte arrays, which is the default comparison used by JE/DB.


equalBytes

public static boolean equalBytes(byte[] data1,
                                 int offset1,
                                 int size1,
                                 byte[] data2,
                                 int offset2,
                                 int size2)
Compares two byte arrays for equality.


copy

public static DatabaseEntry copy(DatabaseEntry from)
Returns a copy of an entry.


copy

public static void copy(DatabaseEntry from,
                        DatabaseEntry to)
Copies one entry to another.


getByteArray

public static byte[] getByteArray(DatabaseEntry entry)
Returns an entry's byte array, copying it if the entry offset is non-zero.


getByteArray

public static byte[] getByteArray(DatabaseEntry entry,
                                  int maxBytes)

equalBytes

public static boolean equalBytes(DatabaseEntry e1,
                                 DatabaseEntry e2)
Returns the two DatabaseEntry objects have the same data value.


toString

public static java.lang.String toString(DatabaseEntry dbt)
Converts the byte array of this thang to space-separated integers, and suffixed by the record number if applicable.

Parameters:
dbt - the thang to convert.
Returns:
the resulting string.