com.sleepycat.util.keyrange

Class KeyRange

public class KeyRange extends Object

Encapsulates a key range for use with a RangeCursor.
Field Summary
static byte[]ZERO_LENGTH_BYTE_ARRAY
Constructor Summary
KeyRange(Comparator comparator)
Creates an unconstrained key range.
Method Summary
booleancheck(DatabaseEntry key)
Returns whether a given key is within range.
booleancheck(DatabaseEntry key, boolean inclusive)
Returns whether a given key is within range.
booleancheckBegin(DatabaseEntry key, boolean inclusive)
Returns whether the given key is within range with respect to the beginning of the range.
booleancheckEnd(DatabaseEntry key, boolean inclusive)
Returns whether the given key is within range with respect to the end of the range.
intcompare(DatabaseEntry key1, DatabaseEntry key2)
Compares two keys, using the user comparator if there is one.
static intcompareBytes(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 DatabaseEntrycopy(DatabaseEntry from)
Returns a copy of an entry.
static voidcopy(DatabaseEntry from, DatabaseEntry to)
Copies one entry to another.
static byte[]copyBytes(byte[] bytes)
Copies a byte array.
static booleanequalBytes(byte[] data1, int offset1, int size1, byte[] data2, int offset2, int size2)
Compares two byte arrays for equality.
static booleanequalBytes(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.
DatabaseEntrygetSingleKey()
Returns the key of a single-key range, or null if not a single-key range.
booleanhasBound()
Returns whether this range has a begin or end bound.
booleanisSingleKey()
Returns whether this is a single-key range.
KeyRangesubRange(DatabaseEntry key)
Creates a range for a single key.
KeyRangesubRange(DatabaseEntry beginKey, boolean beginInclusive, DatabaseEntry endKey, boolean endInclusive)
Creates a range that is the intersection of this range and the given range parameters.
StringtoString()
Formats this range as a string for debugging.
static StringtoString(DatabaseEntry dbt)
Converts the byte array of this thang to space-separated integers, and suffixed by the record number if applicable.

Field Detail

ZERO_LENGTH_BYTE_ARRAY

public static final byte[] ZERO_LENGTH_BYTE_ARRAY

Constructor Detail

KeyRange

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

Method Detail

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.

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.

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.

copyBytes

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

equalBytes

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

equalBytes

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

getByteArray

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

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.

isSingleKey

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

subRange

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

subRange

public 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.

toString

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

toString

public static 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. the resulting string.