From dec4de6da2b69f2129d44a81ee8b714516c376b5 Mon Sep 17 00:00:00 2001 From: John Blum Date: Tue, 30 Jan 2018 15:15:41 -0800 Subject: [PATCH] DATACASS-522 - Polish. --- .../core/CassandraAdminOperations.java | 42 ++++++++++++------- .../core/CassandraAdminTemplate.java | 20 +++++++-- .../cql/generator/DropTableCqlGenerator.java | 9 +++- .../cql/keyspace/DropTableSpecification.java | 2 +- 4 files changed, 52 insertions(+), 21 deletions(-) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraAdminOperations.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraAdminOperations.java index a03371784..0d14dd9fa 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraAdminOperations.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraAdminOperations.java @@ -19,6 +19,7 @@ import java.util.Map; import java.util.Optional; import org.springframework.data.cassandra.core.cql.CqlIdentifier; +import org.springframework.data.cassandra.core.mapping.Table; import com.datastax.driver.core.KeyspaceMetadata; import com.datastax.driver.core.TableMetadata; @@ -48,29 +49,40 @@ public interface CassandraAdminOperations extends CassandraOperations { Map optionsByName); /** - * Drops the named table. + * Drops a table based on the given {@link Class entity type}. * - * @param tableName The name of the table. + * The name of the table is derived from either the simple name of the {@link Class entity class} + * or name of the table specified with the {@link Table} mapping annotation. + * + * @param entityType {@link Class type} of the entity for which the table will be dropped. + */ + void dropTable(Class entityType); + + /** + * Drops the {@link String named} table. + * + * @param tableName {@link String Name} of the table to drop. + * @see #dropTable(boolean, CqlIdentifier) */ void dropTable(CqlIdentifier tableName); /** - * Drops the named table. + * Drops the {@link String named} table. * - * @param ifExists If true, will only drop the table if it exists, else the create operation will be ignored. - * @param tableName The name of the table. + * @param ifExists If {@literal true}, will only drop the table if it exists, + * else the drop operation will be ignored. + * @param tableName {@link String Name} of the table to drop. * @since 2.1 */ void dropTable(boolean ifExists, CqlIdentifier tableName); /** - * Lookup {@link TableMetadata}. + * Drops a user type. * - * @param keyspace must not be empty or {@literal null}. - * @param tableName must not be {@literal null}. - * @return the {@link TableMetadata} or {@literal null}. + * @param typeName must not be {@literal null}. + * @since 1.5 */ - Optional getTableMetadata(String keyspace, CqlIdentifier tableName); + void dropUserType(CqlIdentifier typeName); /** * Returns {@link KeyspaceMetadata} for the current keyspace. @@ -81,10 +93,12 @@ public interface CassandraAdminOperations extends CassandraOperations { KeyspaceMetadata getKeyspaceMetadata(); /** - * Drops a user type. + * Lookup {@link TableMetadata}. * - * @param typeName must not be {@literal null}. - * @since 1.5 + * @param keyspace must not be empty or {@literal null}. + * @param tableName must not be {@literal null}. + * @return the {@link TableMetadata} or {@literal null}. */ - void dropUserType(CqlIdentifier typeName); + Optional getTableMetadata(String keyspace, CqlIdentifier tableName); + } diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraAdminTemplate.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraAdminTemplate.java index f4c119f0d..e5f82768c 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraAdminTemplate.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraAdminTemplate.java @@ -44,6 +44,8 @@ import com.datastax.driver.core.TableMetadata; */ public class CassandraAdminTemplate extends CassandraTemplate implements CassandraAdminOperations { + protected static final boolean DEFAULT_DROP_TABLE_IF_EXISTS = false; + /** * Constructor used for a basic template configuration. * @@ -79,6 +81,10 @@ public class CassandraAdminTemplate extends CassandraTemplate implements Cassand getCqlOperations().execute(CreateTableCqlGenerator.toCql(createTableSpecification)); } + /* (non-Javadoc) + * @see org.springframework.data.cassandra.core.CassandraAdminOperations#dropTable(java.lang.Class) + */ + @Override public void dropTable(Class entityClass) { dropTable(getTableName(entityClass)); } @@ -88,7 +94,7 @@ public class CassandraAdminTemplate extends CassandraTemplate implements Cassand */ @Override public void dropTable(CqlIdentifier tableName) { - dropTable(false, tableName); + dropTable(DEFAULT_DROP_TABLE_IF_EXISTS, tableName); } /* (non-Javadoc) @@ -96,8 +102,11 @@ public class CassandraAdminTemplate extends CassandraTemplate implements Cassand */ @Override public void dropTable(boolean ifExists, CqlIdentifier tableName) { - getCqlOperations() - .execute(DropTableCqlGenerator.toCql(DropTableSpecification.dropTable(tableName).ifExists(ifExists))); + + String dropTableCql = + DropTableCqlGenerator.toCql(DropTableSpecification.dropTable(tableName).ifExists(ifExists)); + + getCqlOperations().execute(dropTableCql); } /* (non-Javadoc) @@ -108,7 +117,10 @@ public class CassandraAdminTemplate extends CassandraTemplate implements Cassand Assert.notNull(typeName, "Type name must not be null"); - getCqlOperations().execute(DropUserTypeCqlGenerator.toCql(DropUserTypeSpecification.dropType(typeName))); + String dropUserTypeCql = + DropUserTypeCqlGenerator.toCql(DropUserTypeSpecification.dropType(typeName)); + + getCqlOperations().execute(dropUserTypeCql); } /* (non-Javadoc) diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/generator/DropTableCqlGenerator.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/generator/DropTableCqlGenerator.java index d27bbad56..3bd4989f9 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/generator/DropTableCqlGenerator.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/cql/generator/DropTableCqlGenerator.java @@ -22,6 +22,8 @@ import org.springframework.data.cassandra.core.cql.keyspace.DropTableSpecificati * * @author Matthew T. Adams * @author Mark Paluch + * @see org.springframework.data.cassandra.core.cql.generator.TableNameCqlGenerator + * @see org.springframework.data.cassandra.core.cql.keyspace.DropTableSpecification */ public class DropTableCqlGenerator extends TableNameCqlGenerator { @@ -35,8 +37,11 @@ public class DropTableCqlGenerator extends TableNameCqlGenerator