Class 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
    • 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 interface org.datanucleus.store.schema.StoreSchemaHandler
        Overrides:
        createDatabase in class org.datanucleus.store.schema.AbstractStoreSchemaHandler
        Parameters:
        catalogName - Unused
        schemaName - Name of the schema
        props - Any properties defining the new keyspace
      • createSchemaForClasses

        public void createSchemaForClasses​(Set<String> classNames,
                                           Properties props,
                                           Object connection)
        Specified by:
        createSchemaForClasses in interface org.datanucleus.store.schema.StoreSchemaHandler
        Overrides:
        createSchemaForClasses in class org.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 class
        session - Session to use for checking of existence in datastore
        clr - ClassLoader resolver
        tableStmts - List to add any table CQL statements to
        constraintStmts - 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 interface org.datanucleus.store.schema.StoreSchemaHandler
        Overrides:
        deleteDatabase in class org.datanucleus.store.schema.AbstractStoreSchemaHandler
        Parameters:
        catalogName - Unused
        schemaName - Name of the schema (keyspace).
        props - Any properties controlling deletion
        connection - 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 interface org.datanucleus.store.schema.StoreSchemaHandler
        Overrides:
        deleteSchemaForClasses in class org.datanucleus.store.schema.AbstractStoreSchemaHandler
      • validateSchema

        public void validateSchema​(Set<String> classNames,
                                   Properties props,
                                   Object connection)
        Specified by:
        validateSchema in interface org.datanucleus.store.schema.StoreSchemaHandler
        Overrides:
        validateSchema in class org.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)