Package com.apple.foundationdb
Class KeySelector
- java.lang.Object
-
- com.apple.foundationdb.KeySelector
-
public class KeySelector extends java.lang.ObjectAKeySelectoridentifies a particular key in the database. FoundationDB's lexicographically ordered data model permits finding keys based on their order (for example, finding the first key in the database greater than a given key). Key selectors represent a description of a key in the database that could be resolved to an actual key byTransaction'sgetKey()or used directly as the beginning or end of a range inTransaction'sgetRange().
For more about how key selectors work in practice, see the KeySelector documentation. Note that the way the key selectors are resolved is somewhat non-intuitive, so users who wish to use a key selector other than the default ones described below should probably consult that documentation before proceeding.
Generally one of the following static methods should be used to construct aKeySelector:
This is an immutable class. Theadd(int)call does not modify internal state, but returns a new instance.
-
-
Constructor Summary
Constructors Constructor Description KeySelector(byte[] key, boolean orEqual, int offset)Constructs a newKeySelectorfrom the given parameters.
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description KeySelectoradd(int offset)Returns a newKeySelectoroffset by a given number of keys from this one.static KeySelectorfirstGreaterOrEqual(byte[] key)Creates aKeySelectorthat picks the first key greater than or equal to the parameterstatic KeySelectorfirstGreaterThan(byte[] key)Creates aKeySelectorthat picks the first key greater than the parameterbyte[]getKey()Returns a copy of the key that serves as the anchor for thisKeySelector.intgetOffset()Returns the key offset parameter for thisKeySelector.static KeySelectorlastLessOrEqual(byte[] key)Creates aKeySelectorthat picks the last key less than or equal to the parameterstatic KeySelectorlastLessThan(byte[] key)Creates aKeySelectorthat picks the last key less than the parameterbooleanorEqual()Returns the orEqual parameter for thisKeySelector.java.lang.StringtoString()
-
-
-
Constructor Detail
-
KeySelector
public KeySelector(byte[] key, boolean orEqual, int offset)Constructs a newKeySelectorfrom the given parameters. Client code will not generally call this constructor. A key selector can be used to specify a key that will be resolved at runtime based on a starting key and an offset. When this is passed as an argument to aTransaction'sgetKey()orgetRange()methods, the key selector will be resolved to a key within the database. This is done in a manner equivalent to finding the last key that is less than (or less than or equal to, iforEqualistrue) the basekeyspecified here and then returning the key that isoffsetkeys greater than that key.- Parameters:
key- the base key to referenceorEqual-trueif the key selector should resolve tokey(ifkeyis present) before accounting for the offsetoffset- the offset (in number of keys) that the selector will advance after resolving to a key based on thekeyandorEqualparameters
-
-
Method Detail
-
lastLessThan
public static KeySelector lastLessThan(byte[] key)
Creates aKeySelectorthat picks the last key less than the parameter- Parameters:
key- the key to use as the edge of the edge of selection criteria- Returns:
- a newly created
KeySelector
-
lastLessOrEqual
public static KeySelector lastLessOrEqual(byte[] key)
Creates aKeySelectorthat picks the last key less than or equal to the parameter- Parameters:
key- the key to use as the edge of the edge of selection criteria- Returns:
- a newly created
KeySelector
-
firstGreaterThan
public static KeySelector firstGreaterThan(byte[] key)
Creates aKeySelectorthat picks the first key greater than the parameter- Parameters:
key- the key to use as the edge of the edge of selection criteria- Returns:
- a newly created
KeySelector
-
firstGreaterOrEqual
public static KeySelector firstGreaterOrEqual(byte[] key)
Creates aKeySelectorthat picks the first key greater than or equal to the parameter- Parameters:
key- the key to use as the edge of the edge of selection criteria- Returns:
- a newly created
KeySelector
-
add
public KeySelector add(int offset)
Returns a newKeySelectoroffset by a given number of keys from this one. For example, an offset of1means that the newKeySelectorspecifies the key in the database after the key selected by thisKeySelector. The offset can be negative; these will move the selector to previous keys in the database.
Note that large offsets take time O(offset) to resolve, making them a poor choice for iterating through a large range. (Instead, use the keys returned from a range query operation themselves to create a new beginningKeySelector.) For more information see the KeySelector documentation.- Parameters:
offset- the number of keys to offset theKeySelector. This number can be negative.- Returns:
- a newly created
KeySelectorthat is offset by a number of keys.
-
getKey
public byte[] getKey()
Returns a copy of the key that serves as the anchor for thisKeySelector. This is not the key to which thisKeySelectorwould resolve to. For this function seeReadTransaction.getKey(KeySelector).- Returns:
- a copy of the "anchor" key for this
KeySelector.
-
toString
public java.lang.String toString()
- Overrides:
toStringin classjava.lang.Object
-
orEqual
public boolean orEqual()
Returns the orEqual parameter for thisKeySelector. See theKeySelector(byte[], boolean, int)KeySelector constructor} for more details.- Returns:
- the
or-equalparameter of thisKeySelector.
-
getOffset
public int getOffset()
Returns the key offset parameter for thisKeySelector. See theKeySelector constructorfor more details.- Returns:
- the key offset for this
KeySelector
-
-