public abstract class AbstractGettableData extends Object implements GettableData
Modifier and Type | Field and Description |
---|---|
protected ProtocolVersion |
protocolVersion |
Modifier | Constructor and Description |
---|---|
protected |
AbstractGettableData(ProtocolVersion protocolVersion)
Creates a new AbstractGettableData object.
|
Modifier and Type | Method and Description |
---|---|
protected void |
checkType(int i,
DataType.Name actual) |
protected <T> TypeCodec<T> |
codecFor(int i) |
protected <T> TypeCodec<T> |
codecFor(int i,
Class<T> javaClass) |
protected <T> TypeCodec<T> |
codecFor(int i,
T value) |
protected <T> TypeCodec<T> |
codecFor(int i,
TypeToken<T> javaType) |
<T> T |
get(int i,
Class<T> targetClass)
Returns the
i th value converted to the given Java type. |
<T> T |
get(int i,
TypeCodec<T> codec)
Returns the
i th value converted using the given TypeCodec . |
<T> T |
get(int i,
TypeToken<T> targetType)
Returns the
i th value converted to the given Java type. |
<T> T |
get(String name,
Class<T> targetClass)
Returns the value for
name converted to the given Java type. |
<T> T |
get(String name,
TypeCodec<T> codec)
Returns the value for
name converted using the given TypeCodec . |
<T> T |
get(String name,
TypeToken<T> targetType)
Returns the value for
name converted to the given Java type. |
boolean |
getBool(int i)
Returns the
i th value as a boolean. |
boolean |
getBool(String name)
Returns the value for
name as a boolean. |
byte |
getByte(int i)
Returns the
i th value as a byte. |
byte |
getByte(String name)
Returns the value for
name as a byte. |
ByteBuffer |
getBytes(int i)
Returns the
i th value as a byte array. |
ByteBuffer |
getBytes(String name)
Returns the value for
name as a byte array. |
ByteBuffer |
getBytesUnsafe(int i)
Returns the
i th value as a ByteBuffer . |
ByteBuffer |
getBytesUnsafe(String name)
Returns the value for
name as a ByteBuffer. |
protected abstract CodecRegistry |
getCodecRegistry() |
LocalDate |
getDate(int i)
Returns the
i th value as a date (without time). |
LocalDate |
getDate(String name)
Returns the value for
name as a date (without time). |
BigDecimal |
getDecimal(int i)
Returns the
i th value as a variable length decimal. |
BigDecimal |
getDecimal(String name)
Returns the value for
name as a variable length decimal. |
double |
getDouble(int i)
Returns the
i th value as a double. |
double |
getDouble(String name)
Returns the value for
name as a double. |
float |
getFloat(int i)
Returns the
i th value as a float. |
float |
getFloat(String name)
Returns the value for
name as a float. |
protected abstract int |
getIndexOf(String name)
Returns the index corresponding to a given name.
|
InetAddress |
getInet(int i)
Returns the
i th value as an InetAddress. |
InetAddress |
getInet(String name)
Returns the value for
name as an InetAddress. |
int |
getInt(int i)
Returns the
i th value as an integer. |
int |
getInt(String name)
Returns the value for
name as an integer. |
<T> List<T> |
getList(int i,
Class<T> elementsClass)
Returns the
i th value as a list. |
<T> List<T> |
getList(int i,
TypeToken<T> elementsType)
Returns the
i th value as a list. |
<T> List<T> |
getList(String name,
Class<T> elementsClass)
Returns the value for
name as a list. |
<T> List<T> |
getList(String name,
TypeToken<T> elementsType)
Returns the value for
name as a list. |
long |
getLong(int i)
Returns the
i th value as a long. |
long |
getLong(String name)
Returns the value for
name as a long. |
<K,V> Map<K,V> |
getMap(int i,
Class<K> keysClass,
Class<V> valuesClass)
Returns the
i th value as a map. |
<K,V> Map<K,V> |
getMap(int i,
TypeToken<K> keysType,
TypeToken<V> valuesType)
Returns the
i th value as a map. |
<K,V> Map<K,V> |
getMap(String name,
Class<K> keysClass,
Class<V> valuesClass)
Returns the value for
name as a map. |
<K,V> Map<K,V> |
getMap(String name,
TypeToken<K> keysType,
TypeToken<V> valuesType)
Returns the value for
name as a map. |
protected abstract String |
getName(int i)
Returns the name corresponding to the value at index
i . |
Object |
getObject(int i)
Returns the
i th value as the Java type matching its CQL type. |
Object |
getObject(String name)
Returns the value for
name as the Java type matching its CQL type. |
<T> Set<T> |
getSet(int i,
Class<T> elementsClass)
Returns the
i th value as a set. |
<T> Set<T> |
getSet(int i,
TypeToken<T> elementsType)
Returns the
i th value as a set. |
<T> Set<T> |
getSet(String name,
Class<T> elementsClass)
Returns the value for
name as a set. |
<T> Set<T> |
getSet(String name,
TypeToken<T> elementsType)
Returns the value for
name as a set. |
short |
getShort(int i)
Returns the
i th value as a short. |
short |
getShort(String name)
Returns the value for
name as a short. |
String |
getString(int i)
Returns the
i th value as a string. |
String |
getString(String name)
Returns the value for
name as a string. |
long |
getTime(int i)
Returns the
i th value as a long in nanoseconds since midnight. |
long |
getTime(String name)
Returns the value for
name as a long in nanoseconds since midnight. |
Date |
getTimestamp(int i)
Returns the
i th value as a date. |
Date |
getTimestamp(String name)
Returns the value for
name as a date. |
TupleValue |
getTupleValue(int i)
Return the
i th value as a tuple value. |
TupleValue |
getTupleValue(String name)
Return the value for
name as a tuple value. |
protected abstract DataType |
getType(int i)
Returns the type for the value at index
i . |
UDTValue |
getUDTValue(int i)
Return the
i th value as a UDT value. |
UDTValue |
getUDTValue(String name)
Return the value for
name as a UDT value. |
UUID |
getUUID(int i)
Returns the
i th value as a UUID. |
UUID |
getUUID(String name)
Returns the value for
name as a UUID. |
protected abstract ByteBuffer |
getValue(int i)
Returns the value at index
i . |
BigInteger |
getVarint(int i)
Returns the
i th value as a variable length integer. |
BigInteger |
getVarint(String name)
Returns the value for
name as a variable length integer. |
boolean |
isNull(int i)
Returns whether the
i th value is NULL. |
boolean |
isNull(String name)
Returns whether the value for
name is NULL. |
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
get, get, get, getBool, getByte, getBytes, getBytesUnsafe, getDate, getDecimal, getDouble, getFloat, getInet, getInt, getList, getList, getLong, getMap, getMap, getObject, getSet, getSet, getShort, getString, getTime, getTimestamp, getTupleValue, getUDTValue, getUUID, getVarint, isNull
protected final ProtocolVersion protocolVersion
protected AbstractGettableData(ProtocolVersion protocolVersion)
protocolVersion
- the protocol version in which values returned by getValue(int)
will
be returned. This must be a protocol version supported by this driver. In general, the
correct value will be the value returned by ProtocolOptions.getProtocolVersion()
.IllegalArgumentException
- if protocolVersion
is not a valid protocol version.protected abstract int getIndexOf(String name)
name
- the name for which to return the index of.name
.IllegalArgumentException
- if name
is not valid name for this object.public boolean isNull(String name)
name
is NULL.isNull
in interface GettableByNameData
name
- the name to check.name
is NULL.public boolean getBool(String name)
name
as a boolean.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a Java boolean
(for CQL type boolean
, this will be the built-in codec).
getBool
in interface GettableByNameData
name
- the name to retrieve.name
. If the value is NULL, false
is returned. If
you need to distinguish NULL and false values, check first with GettableByNameData.isNull(String)
or
use get(name, Boolean.class)
.public byte getByte(String name)
name
as a byte.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a Java byte
(for CQL type tinyint
, this will be the built-in codec).
getByte
in interface GettableByNameData
name
- the name to retrieve.name
as a byte. If the value is NULL, 0
is returned. If
you need to distinguish NULL and 0, check first with GettableByNameData.isNull(String)
or use get(name, Byte.class)
. 0
is returned.public short getShort(String name)
name
as a short.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a Java short
(for CQL type smallint
, this will be the built-in codec).
getShort
in interface GettableByNameData
name
- the name to retrieve.name
as a short. If the value is NULL, 0
is returned. If
you need to distinguish NULL and 0, check first with GettableByNameData.isNull(String)
or use get(name, Short.class)
. 0
is returned.public int getInt(String name)
name
as an integer.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a Java int
(for CQL type int
, this will be the built-in codec).
getInt
in interface GettableByNameData
name
- the name to retrieve.name
as an integer. If the value is NULL, 0
is returned.
If you need to distinguish NULL and 0, check first with GettableByNameData.isNull(String)
or use
get(name, Integer.class)
. 0
is returned.public long getLong(String name)
name
as a long.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a Java byte
(for CQL types bigint
and counter
, this will be the
built-in codec).
getLong
in interface GettableByNameData
name
- the name to retrieve.name
as a long. If the value is NULL, 0L
is returned. If
you need to distinguish NULL and 0L, check first with GettableByNameData.isNull(String)
or use get(name, Long.class)
.public Date getTimestamp(String name)
name
as a date.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a Date
(for CQL type timestamp
, this will be the built-in codec).
getTimestamp
in interface GettableByNameData
name
- the name to retrieve.name
as a date. If the value is NULL, null
is returned.public LocalDate getDate(String name)
name
as a date (without time).
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a LocalDate
(for CQL type date
, this will be the built-in codec).
getDate
in interface GettableByNameData
name
- the name to retrieve.name
as a date. If the value is NULL, null
is returned.public long getTime(String name)
name
as a long in nanoseconds since midnight.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a Java long
(for CQL type time
, this will be the built-in codec).
getTime
in interface GettableByNameData
name
- the name to retrieve.name
as a long. If the value is NULL, 0L
is returned.public float getFloat(String name)
name
as a float.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a Java float
(for CQL type float
, this will be the built-in codec).
getFloat
in interface GettableByNameData
name
- the name to retrieve.name
as a float. If the value is NULL, 0.0f
is returned.
If you need to distinguish NULL and 0.0f, check first with GettableByNameData.isNull(String)
or use
get(name, Float.class)
.public double getDouble(String name)
name
as a double.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a Java double
(for CQL type double
, this will be the built-in codec).
getDouble
in interface GettableByNameData
name
- the name to retrieve.name
as a double. If the value is NULL, 0.0
is returned.
If you need to distinguish NULL and 0.0, check first with GettableByNameData.isNull(String)
or use
get(name, Double.class)
.public ByteBuffer getBytesUnsafe(String name)
name
as a ByteBuffer.
This method does not use any codec; it returns a copy of the binary representation of the value. It is up to the caller to convert the returned value appropriately.
Note: this method always return the bytes composing the value, even if the column is not of type BLOB. That is, this method never throw an InvalidTypeException. However, if the type is not BLOB, it is up to the caller to handle the returned value correctly.
getBytesUnsafe
in interface GettableByNameData
name
- the name to retrieve.name
as a ByteBuffer. If the value is NULL, null
is
returned.public ByteBuffer getBytes(String name)
name
as a byte array.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a Java ByteBuffer
(for CQL type blob
, this will be the built-in codec).
getBytes
in interface GettableByNameData
name
- the name to retrieve.name
as a byte array. If the value is NULL, null
is
returned.public String getString(String name)
name
as a string.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a Java string (for CQL types text
, varchar
and ascii
, this will
be the built-in codec).
getString
in interface GettableByNameData
name
- the name to retrieve.name
as a string. If the value is NULL, null
is returned.public BigInteger getVarint(String name)
name
as a variable length integer.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a BigInteger
(for CQL type varint
, this will be the built-in codec).
getVarint
in interface GettableByNameData
name
- the name to retrieve.name
as a variable length integer. If the value is NULL, null
is returned.public BigDecimal getDecimal(String name)
name
as a variable length decimal.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a BigDecimal
(for CQL type decimal
, this will be the built-in codec).
getDecimal
in interface GettableByNameData
name
- the name to retrieve.name
as a variable length decimal. If the value is NULL, null
is returned.public UUID getUUID(String name)
name
as a UUID.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a UUID
(for CQL types uuid
and timeuuid
, this will be the
built-in codec).
getUUID
in interface GettableByNameData
name
- the name to retrieve.name
as a UUID. If the value is NULL, null
is returned.public InetAddress getInet(String name)
name
as an InetAddress.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to an InetAddress
(for CQL type inet
, this will be the built-in codec).
getInet
in interface GettableByNameData
name
- the name to retrieve.name
as an InetAddress. If the value is NULL, null
is
returned.public <T> List<T> getList(String name, Class<T> elementsClass)
name
as a list.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a list of the specified type.
If the type of the elements is generic, use GettableByNameData.getList(String, TypeToken)
.
Implementation note: the actual List
implementation will depend on the codec
being used; therefore, callers should make no assumptions concerning its
mutability nor its thread-safety. Furthermore, the behavior of this method in respect to CQL
NULL
values is also codec-dependent. By default, the driver will return mutable
instances, and a CQL NULL
will mapped to an empty collection (note that Cassandra makes
no distinction between NULL
and an empty collection).
getList
in interface GettableByNameData
name
- the name to retrieve.elementsClass
- the class for the elements of the list to retrieve.i
th element as a list of T
objects.public <T> List<T> getList(String name, TypeToken<T> elementsType)
name
as a list.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a list of the specified type.
Use this variant with nested collections, which produce a generic element type:
List<List<String>> l = row.getList("theColumn", new TypeToken<List<String>>() {});
Implementation note: the actual List
implementation will depend on the codec
being used; therefore, callers should make no assumptions concerning its
mutability nor its thread-safety. Furthermore, the behavior of this method in respect to CQL
NULL
values is also codec-dependent. By default, the driver will return mutable
instances, and a CQL NULL
will mapped to an empty collection (note that Cassandra makes
no distinction between NULL
and an empty collection).
getList
in interface GettableByNameData
name
- the name to retrieve.elementsType
- the type for the elements of the list to retrieve.i
th element as a list of T
objects.public <T> Set<T> getSet(String name, Class<T> elementsClass)
name
as a set.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a set of the specified type.
If the type of the elements is generic, use GettableByNameData.getSet(String, TypeToken)
.
Implementation note: the actual Set
implementation will depend on the codec
being used; therefore, callers should make no assumptions concerning its
mutability nor its thread-safety. Furthermore, the behavior of this method in respect to CQL
NULL
values is also codec-dependent. By default, the driver will return mutable
instances, and a CQL NULL
will mapped to an empty collection (note that Cassandra makes
no distinction between NULL
and an empty collection).
getSet
in interface GettableByNameData
name
- the name to retrieve.elementsClass
- the class for the elements of the set to retrieve.i
th element as a set of T
objects.public <T> Set<T> getSet(String name, TypeToken<T> elementsType)
name
as a set.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a set of the specified type.
Use this variant with nested collections, which produce a generic element type:
Set<List<String>> l = row.getSet("theColumn", new TypeToken<List<String>>() {});
Implementation note: the actual Set
implementation will depend on the codec
being used; therefore, callers should make no assumptions concerning its
mutability nor its thread-safety. Furthermore, the behavior of this method in respect to CQL
NULL
values is also codec-dependent. By default, the driver will return mutable
instances, and a CQL NULL
will mapped to an empty collection (note that Cassandra makes
no distinction between NULL
and an empty collection).
getSet
in interface GettableByNameData
name
- the name to retrieve.elementsType
- the type for the elements of the set to retrieve.i
th element as a set of T
objects.public <K,V> Map<K,V> getMap(String name, Class<K> keysClass, Class<V> valuesClass)
name
as a map.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a map of the specified types.
If the type of the keys and/or values is generic, use GettableByNameData.getMap(String, TypeToken,
TypeToken)
.
Implementation note: the actual Map
implementation will depend on the codec
being used; therefore, callers should make no assumptions concerning its
mutability nor its thread-safety. Furthermore, the behavior of this method in respect to CQL
NULL
values is also codec-dependent. By default, the driver will return mutable
instances, and a CQL NULL
will mapped to an empty collection (note that Cassandra makes
no distinction between NULL
and an empty collection).
getMap
in interface GettableByNameData
name
- the name to retrieve.keysClass
- the class for the keys of the map to retrieve.valuesClass
- the class for the values of the map to retrieve.name
as a map of K
to V
objects.public <K,V> Map<K,V> getMap(String name, TypeToken<K> keysType, TypeToken<V> valuesType)
name
as a map.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a map of the specified types.
Use this variant with nested collections, which produce a generic element type:
Map<Int, List<String>> l = row.getMap("theColumn", TypeToken.of(Integer.class), new TypeToken<List<String>>() {});
Implementation note: the actual Map
implementation will depend on the codec
being used; therefore, callers should make no assumptions concerning its
mutability nor its thread-safety. Furthermore, the behavior of this method in respect to CQL
NULL
values is also codec-dependent. By default, the driver will return mutable
instances, and a CQL NULL
will mapped to an empty collection (note that Cassandra makes
no distinction between NULL
and an empty collection).
getMap
in interface GettableByNameData
name
- the name to retrieve.keysType
- the class for the keys of the map to retrieve.valuesType
- the class for the values of the map to retrieve.name
as a map of K
to V
objects.public UDTValue getUDTValue(String name)
name
as a UDT value.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a UDTValue
(if the CQL type is a UDT, the registry will generate a codec
automatically).
getUDTValue
in interface GettableByNameData
name
- the name to retrieve.name
as a UDT value. If the value is NULL, then null
will
be returned.public TupleValue getTupleValue(String name)
name
as a tuple value.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a TupleValue
(if the CQL type is a tuple, the registry will generate a codec
automatically).
getTupleValue
in interface GettableByNameData
name
- the name to retrieve.name
as a tuple value. If the value is NULL, then null
will be returned.public Object getObject(String name)
name
as the Java type matching its CQL type.
This method uses the CodecRegistry
to find the first codec that handles the
underlying CQL type. The Java type of the returned object will be determined by the codec that
was selected.
Use this method to dynamically inspect elements when types aren't known in advance, for
instance if you're writing a generic row logger. If you know the target Java type, it is
generally preferable to use typed getters, such as the ones for built-in types (GettableByNameData.getBool(String)
, GettableByNameData.getInt(String)
, etc.), or GettableByNameData.get(String, Class)
and GettableByNameData.get(String, TypeToken)
for custom types.
getObject
in interface GettableByNameData
name
- the name to retrieve.name
as the Java type matching its CQL type. If the value is NULL
and is a simple type, UDT or tuple, null
is returned. If it is NULL and is a
collection type, an empty (immutable) collection is returned.CodecRegistry.codecFor(DataType)
public <T> T get(String name, Class<T> targetClass)
name
converted to the given Java type.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to the given Java type.
If the target type is generic, use GettableByNameData.get(String, TypeToken)
.
Implementation note: the actual object returned by this method will depend on the codec
being used; therefore, callers should make no assumptions concerning its
mutability nor its thread-safety. Furthermore, the behavior of this method in respect to CQL
NULL
values is also codec-dependent; by default, a CQL NULL
value translates to
null
for simple CQL types, UDTs and tuples, and to empty collections for all CQL
collection types.
get
in interface GettableByNameData
name
- the name to retrieve.targetClass
- The Java type the value should be converted to.name
value converted to the given Java type.public <T> T get(String name, TypeToken<T> targetType)
name
converted to the given Java type.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to the given Java type.
Implementation note: the actual object returned by this method will depend on the codec
being used; therefore, callers should make no assumptions concerning its
mutability nor its thread-safety. Furthermore, the behavior of this method in respect to CQL
NULL
values is also codec-dependent; by default, a CQL NULL
value translates to
null
for simple CQL types, UDTs and tuples, and to empty collections for all CQL
collection types.
get
in interface GettableByNameData
name
- the name to retrieve.targetType
- The Java type the value should be converted to.name
value converted to the given Java type.public <T> T get(String name, TypeCodec<T> codec)
name
converted using the given TypeCodec
.
This method entirely bypasses the CodecRegistry
and forces the driver to use the
given codec instead. This can be useful if the codec would collide with a previously registered
one, or if you want to use the codec just once without registering it.
It is the caller's responsibility to ensure that the given codec accepts
the underlying CQL type; failing to do so may result in
InvalidTypeException
s being thrown.
Implementation note: the actual object returned by this method will depend on the codec
being used; therefore, callers should make no assumptions concerning its
mutability nor its thread-safety. Furthermore, the behavior of this method in respect to CQL
NULL
values is also codec-dependent; by default, a CQL NULL
value translates to
null
for simple CQL types, UDTs and tuples, and to empty collections for all CQL
collection types.
get
in interface GettableByNameData
name
- the name to retrieve.codec
- The TypeCodec
to use to deserialize the value; may not be null
.i
th value converted using the given TypeCodec
.protected abstract DataType getType(int i)
i
.i
- the index of the type to fetch.i
.IndexOutOfBoundsException
- if i
is not a valid index.protected abstract String getName(int i)
i
.i
- the index of the name to fetch.i
.IndexOutOfBoundsException
- if i
is not a valid index.protected abstract ByteBuffer getValue(int i)
i
.i
- the index to fetch.i
.IndexOutOfBoundsException
- if i
is not a valid index.protected abstract CodecRegistry getCodecRegistry()
protected <T> TypeCodec<T> codecFor(int i)
protected <T> TypeCodec<T> codecFor(int i, T value)
protected void checkType(int i, DataType.Name actual)
public boolean isNull(int i)
i
th value is NULL.isNull
in interface GettableByIndexData
i
- the index (0 <= i < size()
) of the value to check.i
th value is NULL.public boolean getBool(int i)
i
th value as a boolean.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a Java boolean
(for CQL type boolean
, this will be the built-in codec).
getBool
in interface GettableByIndexData
i
- the index (0 <= i < size()
) to retrieve.i
th element. If the value is NULL, false
is
returned. If you need to distinguish NULL and false values, check first with GettableByIndexData.isNull(int)
or use get(i, Boolean.class)
.public byte getByte(int i)
i
th value as a byte.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a Java byte
(for CQL type tinyint
, this will be the built-in codec).
getByte
in interface GettableByIndexData
i
- the index (0 <= i < size()
) to retrieve.i
th element as a byte. If the value is NULL, 0
is
returned. If you need to distinguish NULL and 0, check first with GettableByIndexData.isNull(int)
or
use get(i, Byte.class)
.public short getShort(int i)
i
th value as a short.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a Java short
(for CQL type smallint
, this will be the built-in codec).
getShort
in interface GettableByIndexData
i
- the index (0 <= i < size()
) to retrieve.i
th element as a short. If the value is NULL, 0
is
returned. If you need to distinguish NULL and 0, check first with GettableByIndexData.isNull(int)
or
use get(i, Short.class)
.public int getInt(int i)
i
th value as an integer.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a Java int
(for CQL type int
, this will be the built-in codec).
getInt
in interface GettableByIndexData
i
- the index (0 <= i < size()
) to retrieve.i
th element as an integer. If the value is NULL, 0
is
returned. If you need to distinguish NULL and 0, check first with GettableByIndexData.isNull(int)
or
use get(i, Integer.class)
.public long getLong(int i)
i
th value as a long.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a Java byte
(for CQL types bigint
and counter
, this will be the
built-in codec).
getLong
in interface GettableByIndexData
i
- the index (0 <= i < size()
) to retrieve.i
th element as a long. If the value is NULL, 0L
is
returned. If you need to distinguish NULL and 0L, check first with GettableByIndexData.isNull(int)
or
use get(i, Long.class)
.public Date getTimestamp(int i)
i
th value as a date.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a Date
(for CQL type timestamp
, this will be the built-in codec).
getTimestamp
in interface GettableByIndexData
i
- the index (0 <= i < size()
) to retrieve.i
th element as a data. If the value is NULL, null
is
returned.public LocalDate getDate(int i)
i
th value as a date (without time).
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a LocalDate
(for CQL type date
, this will be the built-in codec).
getDate
in interface GettableByIndexData
i
- the index (0 <= i < size()
) to retrieve.i
th element as an date. If the value is NULL, null
is
returned.public long getTime(int i)
i
th value as a long in nanoseconds since midnight.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a Java long
(for CQL type time
, this will be the built-in codec).
getTime
in interface GettableByIndexData
i
- the index (0 <= i < size()
) to retrieve.i
th element as a long. If the value is NULL, 0L
is
returned.public float getFloat(int i)
i
th value as a float.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a Java float
(for CQL type float
, this will be the built-in codec).
getFloat
in interface GettableByIndexData
i
- the index (0 <= i < size()
) to retrieve.i
th element as a float. If the value is NULL, 0.0f
is
returned. If you need to distinguish NULL and 0.0f, check first with GettableByIndexData.isNull(int)
or use get(i, Float.class)
.public double getDouble(int i)
i
th value as a double.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a Java double
(for CQL type double
, this will be the built-in codec).
getDouble
in interface GettableByIndexData
i
- the index (0 <= i < size()
) to retrieve.i
th element as a double. If the value is NULL, 0.0
is
returned. If you need to distinguish NULL and 0.0, check first with GettableByIndexData.isNull(int)
or
use get(i, Double.class)
.public ByteBuffer getBytesUnsafe(int i)
i
th value as a ByteBuffer
.
This method does not use any codec; it returns a copy of the binary representation of the value. It is up to the caller to convert the returned value appropriately.
getBytesUnsafe
in interface GettableByIndexData
i
- the index (0 <= i < size()
) to retrieve.i
th element as a ByteBuffer. If the value is NULL, null
is returned.public ByteBuffer getBytes(int i)
i
th value as a byte array.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a Java ByteBuffer
(for CQL type blob
, this will be the built-in codec).
getBytes
in interface GettableByIndexData
i
- the index (0 <= i < size()
) to retrieve.i
th element as a byte array. If the value is NULL, null
is returned.public String getString(int i)
i
th value as a string.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a Java string (for CQL types text
, varchar
and ascii
, this will
be the built-in codec).
getString
in interface GettableByIndexData
i
- the index (0 <= i < size()
) to retrieve.i
th element as a string. If the value is NULL, null
is
returned.public BigInteger getVarint(int i)
i
th value as a variable length integer.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a BigInteger
(for CQL type varint
, this will be the built-in codec).
getVarint
in interface GettableByIndexData
i
- the index (0 <= i < size()
) to retrieve.i
th element as a variable length integer. If the value is
NULL, null
is returned.public BigDecimal getDecimal(int i)
i
th value as a variable length decimal.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a BigDecimal
(for CQL type decimal
, this will be the built-in codec).
getDecimal
in interface GettableByIndexData
i
- the index (0 <= i < size()
) to retrieve.i
th element as a variable length decimal. If the value is
NULL, null
is returned.public UUID getUUID(int i)
i
th value as a UUID.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a UUID
(for CQL types uuid
and timeuuid
, this will be the
built-in codec).
getUUID
in interface GettableByIndexData
i
- the index (0 <= i < size()
) to retrieve.i
th element as a UUID. If the value is NULL, null
is
returned.public InetAddress getInet(int i)
i
th value as an InetAddress.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to an InetAddress
(for CQL type inet
, this will be the built-in codec).
getInet
in interface GettableByIndexData
i
- the index (0 <= i < size()
) to retrieve.i
th element as an InetAddress. If the value is NULL, null
is returned.public <T> List<T> getList(int i, Class<T> elementsClass)
i
th value as a list.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a list of the specified type.
If the type of the elements is generic, use GettableByIndexData.getList(int, TypeToken)
.
Implementation note: the actual List
implementation will depend on the codec
being used; therefore, callers should make no assumptions concerning its
mutability nor its thread-safety. Furthermore, the behavior of this method in respect to CQL
NULL
values is also codec-dependent. By default, the driver will return mutable
instances, and a CQL NULL
will be mapped to an empty collection (note that Cassandra
makes no distinction between NULL
and an empty collection).
getList
in interface GettableByIndexData
i
- the index (0 <= i < size()
) to retrieve.elementsClass
- the class for the elements of the list to retrieve.i
th element as a list of T
objects.public <T> List<T> getList(int i, TypeToken<T> elementsType)
i
th value as a list.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a list of the specified type.
Use this variant with nested collections, which produce a generic element type:
List<List<String>> l = row.getList(1, new TypeToken<List<String>>() {});
Implementation note: the actual List
implementation will depend on the codec
being used; therefore, callers should make no assumptions concerning its
mutability nor its thread-safety. Furthermore, the behavior of this method in respect to CQL
NULL
values is also codec-dependent. By default, the driver will return mutable
instances, and a CQL NULL
will mapped to an empty collection (note that Cassandra makes
no distinction between NULL
and an empty collection).
getList
in interface GettableByIndexData
i
- the index (0 <= i < size()
) to retrieve.elementsType
- the type of the elements of the list to retrieve.i
th element as a list of T
objects.public <T> Set<T> getSet(int i, Class<T> elementsClass)
i
th value as a set.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a set of the specified type.
If the type of the elements is generic, use GettableByIndexData.getSet(int, TypeToken)
.
Implementation note: the actual Set
implementation will depend on the codec
being used; therefore, callers should make no assumptions concerning its
mutability nor its thread-safety. Furthermore, the behavior of this method in respect to CQL
NULL
values is also codec-dependent. By default, the driver will return mutable
instances, and a CQL NULL
will mapped to an empty collection (note that Cassandra makes
no distinction between NULL
and an empty collection).
getSet
in interface GettableByIndexData
i
- the index (0 <= i < size()
) to retrieve.elementsClass
- the class for the elements of the set to retrieve.i
th element as a set of T
objects.public <T> Set<T> getSet(int i, TypeToken<T> elementsType)
i
th value as a set.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a set of the specified type.
Use this variant with nested collections, which produce a generic element type:
Set<List<String>> l = row.getSet(1, new TypeToken<List<String>>() {});
Implementation note: the actual Set
implementation will depend on the codec
being used; therefore, callers should make no assumptions concerning its
mutability nor its thread-safety. Furthermore, the behavior of this method in respect to CQL
NULL
values is also codec-dependent. By default, the driver will return mutable
instances, and a CQL NULL
will mapped to an empty collection (note that Cassandra makes
no distinction between NULL
and an empty collection).
getSet
in interface GettableByIndexData
i
- the index (0 <= i < size()
) to retrieve.elementsType
- the type for the elements of the set to retrieve.i
th element as a set of T
objects.public <K,V> Map<K,V> getMap(int i, Class<K> keysClass, Class<V> valuesClass)
i
th value as a map.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a map of the specified types.
If the type of the keys and/or values is generic, use GettableByIndexData.getMap(int, TypeToken,
TypeToken)
.
Implementation note: the actual Map
implementation will depend on the codec
being used; therefore, callers should make no assumptions concerning its
mutability nor its thread-safety. Furthermore, the behavior of this method in respect to CQL
NULL
values is also codec-dependent. By default, the driver will return mutable
instances, and a CQL NULL
will mapped to an empty collection (note that Cassandra makes
no distinction between NULL
and an empty collection).
getMap
in interface GettableByIndexData
i
- the index (0 <= i < size()
) to retrieve.keysClass
- the class for the keys of the map to retrieve.valuesClass
- the class for the values of the map to retrieve.i
th element as a map of K
to V
objects.public <K,V> Map<K,V> getMap(int i, TypeToken<K> keysType, TypeToken<V> valuesType)
i
th value as a map.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a map of the specified types.
Use this variant with nested collections, which produce a generic element type:
Map<Int, List<String>> l = row.getMap(1, TypeToken.of(Integer.class), new TypeToken<List<String>>() {});
Implementation note: the actual Map
implementation will depend on the codec
being used; therefore, callers should make no assumptions concerning its
mutability nor its thread-safety. Furthermore, the behavior of this method in respect to CQL
NULL
values is also codec-dependent. By default, the driver will return mutable
instances, and a CQL NULL
will mapped to an empty collection (note that Cassandra makes
no distinction between NULL
and an empty collection).
getMap
in interface GettableByIndexData
i
- the index (0 <= i < size()
) to retrieve.keysType
- the type for the keys of the map to retrieve.valuesType
- the type for the values of the map to retrieve.i
th element as a map of K
to V
objects.public UDTValue getUDTValue(int i)
i
th value as a UDT value.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a UDTValue
(if the CQL type is a UDT, the registry will generate a codec
automatically).
getUDTValue
in interface GettableByIndexData
i
- the index (0 <= i < size()
) to retrieve.i
th element as a UDT value. If the value is NULL, then null
will be returned.public TupleValue getTupleValue(int i)
i
th value as a tuple value.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to a TupleValue
(if the CQL type is a tuple, the registry will generate a codec
automatically).
getTupleValue
in interface GettableByIndexData
i
- the index (0 <= i < size()
) to retrieve.i
th element as a tuple value. If the value is NULL, then
null
will be returned.public Object getObject(int i)
i
th value as the Java type matching its CQL type.
This method uses the CodecRegistry
to find the first codec that handles the
underlying CQL type. The Java type of the returned object will be determined by the codec that
was selected.
Use this method to dynamically inspect elements when types aren't known in advance, for
instance if you're writing a generic row logger. If you know the target Java type, it is
generally preferable to use typed getters, such as the ones for built-in types (GettableByIndexData.getBool(int)
, GettableByIndexData.getInt(int)
, etc.), or GettableByIndexData.get(int, Class)
and GettableByIndexData.get(int,
TypeToken)
for custom types.
getObject
in interface GettableByIndexData
i
- the index to retrieve.i
th value as the Java type matching its CQL type.CodecRegistry.codecFor(DataType)
public <T> T get(int i, Class<T> targetClass)
GettableByIndexData
i
th value converted to the given Java type.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to the given Java type.
If the target type is generic, use GettableByIndexData.get(int, TypeToken)
.
Implementation note: the actual object returned by this method will depend on the codec
being used; therefore, callers should make no assumptions concerning its
mutability nor its thread-safety. Furthermore, the behavior of this method in respect to CQL
NULL
values is also codec-dependent; by default, a CQL NULL
value translates to
null
for simple CQL types, UDTs and tuples, and to empty collections for all CQL
collection types.
get
in interface GettableByIndexData
i
- the index to retrieve.targetClass
- The Java type the value should be converted to.i
th value converted to the given Java type.public <T> T get(int i, TypeToken<T> targetType)
GettableByIndexData
i
th value converted to the given Java type.
This method uses the CodecRegistry
to find a codec to convert the underlying CQL
type to the given Java type.
Implementation note: the actual object returned by this method will depend on the codec
being used; therefore, callers should make no assumptions concerning its
mutability nor its thread-safety. Furthermore, the behavior of this method in respect to CQL
NULL
values is also codec-dependent; by default, a CQL NULL
value translates to
null
for simple CQL types, UDTs and tuples, and to empty collections for all CQL
collection types.
get
in interface GettableByIndexData
i
- the index to retrieve.targetType
- The Java type the value should be converted to.i
th value converted to the given Java type.public <T> T get(int i, TypeCodec<T> codec)
GettableByIndexData
i
th value converted using the given TypeCodec
.
This method entirely bypasses the CodecRegistry
and forces the driver to use the
given codec instead. This can be useful if the codec would collide with a previously registered
one, or if you want to use the codec just once without registering it.
It is the caller's responsibility to ensure that the given codec accepts
the underlying CQL type; failing to do so may result in
InvalidTypeException
s being thrown.
Implementation note: the actual object returned by this method will depend on the codec
being used; therefore, callers should make no assumptions concerning its
mutability nor its thread-safety. Furthermore, the behavior of this method in respect to CQL
NULL
values is also codec-dependent; by default, a CQL NULL
value translates to
null
for simple CQL types, UDTs and tuples, and to empty collections for all CQL
collection types.
get
in interface GettableByIndexData
i
- the index to retrieve.codec
- The TypeCodec
to use to deserialize the value; may not be null
.i
th value converted using the given TypeCodec
.Copyright © 2012–2020. All rights reserved.