Package org.datanucleus.store.cassandra
Class CassandraSchemaHandler
- java.lang.Object
-
- org.datanucleus.store.schema.AbstractStoreSchemaHandler
-
- org.datanucleus.store.cassandra.CassandraSchemaHandler
-
- All Implemented Interfaces:
org.datanucleus.store.schema.StoreSchemaHandler
public class CassandraSchemaHandler extends org.datanucleus.store.schema.AbstractStoreSchemaHandler
Handler for schema management with Cassandra. Supports the following metadata extensions- ClassMetaData extension "cassandra.createTable.options" specifies any OPTIONS for a CREATE TABLE statement (comma-separated value if wanting multiple options)
- IndexMetaData extension "cassandra.createIndex.using" specifies any USING clause for a CREATE INDEX statement
-
-
Constructor Summary
Constructors Constructor Description CassandraSchemaHandler(CassandraStoreManager storeMgr)
-
Method Summary
All Methods Static Methods Instance Methods Concrete Methods Modifier and Type Method Description void
createDatabase(String catalogName, String schemaName, Properties props, Object connection)
Method to create a database (keyspace) in Cassandra.protected String
createIndexCQL(String indexName, String schemaName, String tableName, String columnName, org.datanucleus.metadata.IndexMetaData idxmd)
protected void
createSchemaForClass(org.datanucleus.metadata.AbstractClassMetaData cmd, com.datastax.oss.driver.api.core.CqlSession session, org.datanucleus.ClassLoaderResolver clr, List<String> tableStmts, List<String> constraintStmts)
Method to generate the necessary CQL to create the schema (table/indexes) for the specified class.void
createSchemaForClasses(Set<String> classNames, Properties props, Object connection)
void
deleteDatabase(String catalogName, String schemaName, Properties props, Object connection)
Method to drop a database (keyspace) in Cassandra.void
deleteSchemaForClasses(Set<String> classNames, Properties props, Object connection)
protected com.datastax.oss.driver.api.core.metadata.schema.ColumnMetadata
getColumnMetadataForColumn(com.datastax.oss.driver.api.core.metadata.schema.TableMetadata tmd, org.datanucleus.store.schema.table.Column col)
protected com.datastax.oss.driver.api.core.metadata.schema.ColumnMetadata
getColumnMetadataForColumnName(com.datastax.oss.driver.api.core.metadata.schema.TableMetadata tmd, String colName)
protected com.datastax.oss.driver.api.core.metadata.schema.IndexMetadata
getIndexMetadataForColumn(com.datastax.oss.driver.api.core.metadata.schema.TableMetadata tmd, String colName)
static com.datastax.oss.driver.api.core.metadata.schema.KeyspaceMetadata
getKeyspaceMetadata(com.datastax.oss.driver.api.core.CqlSession session, String schemaName)
static com.datastax.oss.driver.api.core.metadata.schema.TableMetadata
getTableMetadata(com.datastax.oss.driver.api.core.CqlSession session, String schemaName, String tableName)
protected String
getTypeNameForColumn(com.datastax.oss.driver.api.core.metadata.schema.ColumnMetadata colmd)
void
validateSchema(Set<String> classNames, Properties props, Object connection)
-
Methods inherited from class org.datanucleus.store.schema.AbstractStoreSchemaHandler
clear, enableSchemaGeneration, getSchemaData, getStoreManager, isAutoCreateColumns, isAutoCreateConstraints, isAutoCreateDatabase, isAutoCreateTables, isAutoCreateWarnOnError, isAutoDeleteColumns, isValidateColumns, isValidateConstraints, isValidateTables, resetSchemaGeneration
-
-
-
-
Constructor Detail
-
CassandraSchemaHandler
public CassandraSchemaHandler(CassandraStoreManager storeMgr)
-
-
Method Detail
-
createDatabase
public void createDatabase(String catalogName, String schemaName, Properties props, Object connection)
Method to create a database (keyspace) in Cassandra. Accepts properties with names "replication", "durable_writes" (case sensitive).- Specified by:
createDatabase
in interfaceorg.datanucleus.store.schema.StoreSchemaHandler
- Overrides:
createDatabase
in classorg.datanucleus.store.schema.AbstractStoreSchemaHandler
- Parameters:
catalogName
- UnusedschemaName
- Name of the schemaprops
- Any properties defining the new keyspace
-
createSchemaForClasses
public void createSchemaForClasses(Set<String> classNames, Properties props, Object connection)
- Specified by:
createSchemaForClasses
in interfaceorg.datanucleus.store.schema.StoreSchemaHandler
- Overrides:
createSchemaForClasses
in classorg.datanucleus.store.schema.AbstractStoreSchemaHandler
-
createSchemaForClass
protected void createSchemaForClass(org.datanucleus.metadata.AbstractClassMetaData cmd, com.datastax.oss.driver.api.core.CqlSession session, org.datanucleus.ClassLoaderResolver clr, List<String> tableStmts, List<String> constraintStmts)
Method to generate the necessary CQL to create the schema (table/indexes) for the specified class.- Parameters:
cmd
- Metadata for the classsession
- Session to use for checking of existence in datastoreclr
- ClassLoader resolvertableStmts
- List to add any table CQL statements toconstraintStmts
- List to add any constraint CQL statements to
-
deleteDatabase
public void deleteDatabase(String catalogName, String schemaName, Properties props, Object connection)
Method to drop a database (keyspace) in Cassandra.- Specified by:
deleteDatabase
in interfaceorg.datanucleus.store.schema.StoreSchemaHandler
- Overrides:
deleteDatabase
in classorg.datanucleus.store.schema.AbstractStoreSchemaHandler
- Parameters:
catalogName
- UnusedschemaName
- Name of the schema (keyspace).props
- Any properties controlling deletionconnection
- Connection to use (null implies this will obtain its own connection)
-
deleteSchemaForClasses
public void deleteSchemaForClasses(Set<String> classNames, Properties props, Object connection)
- Specified by:
deleteSchemaForClasses
in interfaceorg.datanucleus.store.schema.StoreSchemaHandler
- Overrides:
deleteSchemaForClasses
in classorg.datanucleus.store.schema.AbstractStoreSchemaHandler
-
validateSchema
public void validateSchema(Set<String> classNames, Properties props, Object connection)
- Specified by:
validateSchema
in interfaceorg.datanucleus.store.schema.StoreSchemaHandler
- Overrides:
validateSchema
in classorg.datanucleus.store.schema.AbstractStoreSchemaHandler
-
createIndexCQL
protected String createIndexCQL(String indexName, String schemaName, String tableName, String columnName, org.datanucleus.metadata.IndexMetaData idxmd)
-
getTableMetadata
public static com.datastax.oss.driver.api.core.metadata.schema.TableMetadata getTableMetadata(com.datastax.oss.driver.api.core.CqlSession session, String schemaName, String tableName)
-
getKeyspaceMetadata
public static com.datastax.oss.driver.api.core.metadata.schema.KeyspaceMetadata getKeyspaceMetadata(com.datastax.oss.driver.api.core.CqlSession session, String schemaName)
-
getTypeNameForColumn
protected String getTypeNameForColumn(com.datastax.oss.driver.api.core.metadata.schema.ColumnMetadata colmd)
-
getColumnMetadataForColumn
protected com.datastax.oss.driver.api.core.metadata.schema.ColumnMetadata getColumnMetadataForColumn(com.datastax.oss.driver.api.core.metadata.schema.TableMetadata tmd, org.datanucleus.store.schema.table.Column col)
-
getColumnMetadataForColumnName
protected com.datastax.oss.driver.api.core.metadata.schema.ColumnMetadata getColumnMetadataForColumnName(com.datastax.oss.driver.api.core.metadata.schema.TableMetadata tmd, String colName)
-
getIndexMetadataForColumn
protected com.datastax.oss.driver.api.core.metadata.schema.IndexMetadata getIndexMetadataForColumn(com.datastax.oss.driver.api.core.metadata.schema.TableMetadata tmd, String colName)
-
-