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.AbstractStoreSchemaHandlerHandler 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 voidcreateDatabase(String catalogName, String schemaName, Properties props, Object connection)Method to create a database (keyspace) in Cassandra.protected StringcreateIndexCQL(String indexName, String schemaName, String tableName, String columnName, org.datanucleus.metadata.IndexMetaData idxmd)protected voidcreateSchemaForClass(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.voidcreateSchemaForClasses(Set<String> classNames, Properties props, Object connection)voiddeleteDatabase(String catalogName, String schemaName, Properties props, Object connection)Method to drop a database (keyspace) in Cassandra.voiddeleteSchemaForClasses(Set<String> classNames, Properties props, Object connection)protected com.datastax.oss.driver.api.core.metadata.schema.ColumnMetadatagetColumnMetadataForColumn(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.ColumnMetadatagetColumnMetadataForColumnName(com.datastax.oss.driver.api.core.metadata.schema.TableMetadata tmd, String colName)protected com.datastax.oss.driver.api.core.metadata.schema.IndexMetadatagetIndexMetadataForColumn(com.datastax.oss.driver.api.core.metadata.schema.TableMetadata tmd, String colName)static com.datastax.oss.driver.api.core.metadata.schema.KeyspaceMetadatagetKeyspaceMetadata(com.datastax.oss.driver.api.core.CqlSession session, String schemaName)static com.datastax.oss.driver.api.core.metadata.schema.TableMetadatagetTableMetadata(com.datastax.oss.driver.api.core.CqlSession session, String schemaName, String tableName)protected StringgetTypeNameForColumn(com.datastax.oss.driver.api.core.metadata.schema.ColumnMetadata colmd)voidvalidateSchema(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:
createDatabasein interfaceorg.datanucleus.store.schema.StoreSchemaHandler- Overrides:
createDatabasein 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:
createSchemaForClassesin interfaceorg.datanucleus.store.schema.StoreSchemaHandler- Overrides:
createSchemaForClassesin 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:
deleteDatabasein interfaceorg.datanucleus.store.schema.StoreSchemaHandler- Overrides:
deleteDatabasein 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:
deleteSchemaForClassesin interfaceorg.datanucleus.store.schema.StoreSchemaHandler- Overrides:
deleteSchemaForClassesin classorg.datanucleus.store.schema.AbstractStoreSchemaHandler
-
validateSchema
public void validateSchema(Set<String> classNames, Properties props, Object connection)
- Specified by:
validateSchemain interfaceorg.datanucleus.store.schema.StoreSchemaHandler- Overrides:
validateSchemain 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)
-
-