Class DefaultCqlFactory
- java.lang.Object
-
- cz.o2.proxima.direct.io.cassandra.CacheableCqlFactory
-
- cz.o2.proxima.direct.io.cassandra.DefaultCqlFactory
-
- All Implemented Interfaces:
CqlFactory,java.io.Serializable
public class DefaultCqlFactory extends CacheableCqlFactory
ACqlFactoryused by default. The default behavior is to take name of the attribute and change it from camelCase to underscore_case. The cassandra URI looks like this:
where: * primaryField is the column where primary key (or first part of composite key) is stored * secondaryField is the second part of composite key (optional) * dataField is the name of data field for wildcard attributes (optional) * reversed might bycassandra://<authority>/<table>/?primary=<primaryField> &secondary=<secondaryKeyField>&data=<dataField>&reversed=true*trueif the composite key is sorted in descending order- See Also:
- Serialized Form
-
-
Nested Class Summary
-
Nested classes/interfaces inherited from interface cz.o2.proxima.direct.io.cassandra.CqlFactory
CqlFactory.KvIterable<T>
-
-
Field Summary
-
Fields inherited from class cz.o2.proxima.direct.io.cassandra.CacheableCqlFactory
ttl
-
-
Constructor Summary
Constructors Constructor Description DefaultCqlFactory()
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description protected java.lang.StringcreateDeleteStatement(StreamElement element)Create statement to be prepared for given ingest when deleting attribute.protected java.lang.StringcreateDeleteWildcardStatement(StreamElement what)Create statement to delete wildcard attribute.protected java.lang.StringcreateFetchTokenStatement()Create statement to fetch token for primary key.protected java.lang.StringcreateGetStatement(java.lang.String attribute, AttributeDescriptor<?> desc)Create get statement for key-attribute pair.protected java.lang.StringcreateInsertStatement(StreamElement element)Create statement to be prepared for given ingest.protected java.lang.StringcreateListAllStatement(com.datastax.oss.driver.api.core.CqlSession session)Create statement to list all attributes of this entity.protected java.lang.StringcreateListEntitiesStatement()Create list statement for entity keys.protected java.lang.StringcreateListStatement(AttributeDescriptor<?> attr)Create list statement for key-wildcardAttribute pair.<T> CqlFactory.KvIterable<T>getListAllStatement(java.lang.String key, Offsets.Raw offset, int limit, com.datastax.oss.driver.api.core.CqlSession session)Retrieve wrapped statement to execute to list all attributes of given key.com.datastax.oss.driver.api.core.cql.BoundStatementgetListStatement(java.lang.String key, AttributeDescriptor<?> wildcard, Offsets.Raw offset, int limit, com.datastax.oss.driver.api.core.CqlSession session)Retrieve a CQL query to execute in order to list wildcard attributes.com.datastax.oss.driver.api.core.cql.BoundStatementgetReadStatement(java.lang.String key, java.lang.String attribute, AttributeDescriptor<?> desc, com.datastax.oss.driver.api.core.CqlSession session)Retrieve a CQL query to execute in order to read data.java.util.Optional<com.datastax.oss.driver.api.core.cql.BoundStatement>getWriteStatement(StreamElement element, com.datastax.oss.driver.api.core.CqlSession session)Retrieve a CQL query to execute in order to ingest the request.com.datastax.oss.driver.api.core.cql.StatementscanPartition(java.util.List<AttributeDescriptor<?>> attributes, CassandraPartition partition, com.datastax.oss.driver.api.core.CqlSession session)Retrieve a bound statement to scan data for given attribute and partition.protected voidsetup(java.util.Map<java.lang.String,java.lang.String> query, StringConverter<?> converter)Setup the factory from URI parameters passed in.<T> KeyValue<T>toKeyValue(EntityDescriptor entityDescriptor, AttributeDescriptor<T> attributeDescriptor, java.lang.String key, java.lang.String attribute, long stamp, RandomOffset offset, byte[] serializedValue)Convert the byte[] stored in the database intoKeyValue.-
Methods inherited from class cz.o2.proxima.direct.io.cassandra.CacheableCqlFactory
clearCache, getFetchTokenStatement, getListEntitiesStatement, getPreparedGetStatement, getPreparedListAllStatement, getPreparedListStatement, getPreparedStatement, setup
-
-
-
-
Method Detail
-
setup
protected void setup(java.util.Map<java.lang.String,java.lang.String> query, StringConverter<?> converter)Description copied from class:CacheableCqlFactorySetup the factory from URI parameters passed in.- Overrides:
setupin classCacheableCqlFactory- Parameters:
query- the parsed URI query parametersconverter- converter of payload to string
-
getWriteStatement
public java.util.Optional<com.datastax.oss.driver.api.core.cql.BoundStatement> getWriteStatement(StreamElement element, com.datastax.oss.driver.api.core.CqlSession session)
Description copied from interface:CqlFactoryRetrieve a CQL query to execute in order to ingest the request.- Parameters:
element- input datasession- current session- Returns:
- the statement to execute. When empty, the ingest is silently discarded.
-
getReadStatement
public com.datastax.oss.driver.api.core.cql.BoundStatement getReadStatement(java.lang.String key, java.lang.String attribute, AttributeDescriptor<?> desc, com.datastax.oss.driver.api.core.CqlSession session)Description copied from interface:CqlFactoryRetrieve a CQL query to execute in order to read data.- Parameters:
key- the primary key whose attribute to returnattribute- the attribute to fetchdesc- descriptor of the attributesession- the connection session- Returns:
- the statement to execute
-
getListStatement
public com.datastax.oss.driver.api.core.cql.BoundStatement getListStatement(java.lang.String key, AttributeDescriptor<?> wildcard, @Nullable Offsets.Raw offset, int limit, com.datastax.oss.driver.api.core.CqlSession session)Description copied from interface:CqlFactoryRetrieve a CQL query to execute in order to list wildcard attributes. The prefix is name of wildcard attribute shortened by two last characters (.*).- Parameters:
key- the primary key value (first part of the composite key)wildcard- the wildcard attribute to listoffset- the offset to start from this might be null (start from beginning)limit- maximal number of elements to list (-1 for all)session- the connection session- Returns:
- the statement to execute
-
createInsertStatement
protected java.lang.String createInsertStatement(StreamElement element)
Description copied from class:CacheableCqlFactoryCreate statement to be prepared for given ingest. This will be then stored in cache after call toprepare.- Specified by:
createInsertStatementin classCacheableCqlFactory- Parameters:
element- the input element to create statement for- Returns:
- string representation of the CQL
-
createDeleteStatement
protected java.lang.String createDeleteStatement(StreamElement element)
Description copied from class:CacheableCqlFactoryCreate statement to be prepared for given ingest when deleting attribute.- Specified by:
createDeleteStatementin classCacheableCqlFactory- Parameters:
element- the input element to create statement for- Returns:
- string representation of the CQL
-
createDeleteWildcardStatement
protected java.lang.String createDeleteWildcardStatement(StreamElement what)
Description copied from class:CacheableCqlFactoryCreate statement to delete wildcard attribute.- Specified by:
createDeleteWildcardStatementin classCacheableCqlFactory- Parameters:
what- the input element to create statement for- Returns:
- string representation of the CQL
-
createGetStatement
protected java.lang.String createGetStatement(java.lang.String attribute, AttributeDescriptor<?> desc)Description copied from class:CacheableCqlFactoryCreate get statement for key-attribute pair. The statement must return only single field with value.- Specified by:
createGetStatementin classCacheableCqlFactory- Parameters:
attribute- the input attribute to create get fordesc- the descriptor of the attribute- Returns:
- string representation of the CQL
-
createListStatement
protected java.lang.String createListStatement(AttributeDescriptor<?> attr)
Description copied from class:CacheableCqlFactoryCreate list statement for key-wildcardAttribute pair. The statement must return two fields - attribute, value.- Specified by:
createListStatementin classCacheableCqlFactory- Parameters:
attr- the descriptor of the attribute- Returns:
- string representation of the CQL
-
createListEntitiesStatement
protected java.lang.String createListEntitiesStatement()
Description copied from class:CacheableCqlFactoryCreate list statement for entity keys. The statement must return single field - the entity key.- Specified by:
createListEntitiesStatementin classCacheableCqlFactory- Returns:
- string representation of the CQL
-
createFetchTokenStatement
protected java.lang.String createFetchTokenStatement()
Description copied from class:CacheableCqlFactoryCreate statement to fetch token for primary key. The statement must return only the token as single field in single row.- Specified by:
createFetchTokenStatementin classCacheableCqlFactory- Returns:
- string representation of the CQL
-
createListAllStatement
protected java.lang.String createListAllStatement(com.datastax.oss.driver.api.core.CqlSession session)
Description copied from class:CacheableCqlFactoryCreate statement to list all attributes of this entity.- Specified by:
createListAllStatementin classCacheableCqlFactory- Parameters:
session- the connection session- Returns:
- string representation of the CQL
-
scanPartition
public com.datastax.oss.driver.api.core.cql.Statement scanPartition(java.util.List<AttributeDescriptor<?>> attributes, CassandraPartition partition, com.datastax.oss.driver.api.core.CqlSession session)
Description copied from interface:CqlFactoryRetrieve a bound statement to scan data for given attribute and partition.- Parameters:
attributes- list of attributes to scanpartition- the partition to scansession- connection session- Returns:
- the statement to execute
-
toKeyValue
@Nullable public <T> KeyValue<T> toKeyValue(EntityDescriptor entityDescriptor, AttributeDescriptor<T> attributeDescriptor, java.lang.String key, java.lang.String attribute, long stamp, RandomOffset offset, byte[] serializedValue)
Description copied from interface:CqlFactoryConvert the byte[] stored in the database intoKeyValue.
-
getListAllStatement
public <T> CqlFactory.KvIterable<T> getListAllStatement(java.lang.String key, Offsets.Raw offset, int limit, com.datastax.oss.driver.api.core.CqlSession session)
Description copied from interface:CqlFactoryRetrieve wrapped statement to execute to list all attributes of given key.- Type Parameters:
T- type ofCqlFactory.KvIterable- Parameters:
key- key to list attributes ofoffset- offset to start from (return next attribute)limit- maximum number of items to returnsession- the connection session- Returns:
- iterable over keyvalues
-
-