From 22b6a53a88d4ba285ed2c9ddbf5e2bf1d81bd598 Mon Sep 17 00:00:00 2001 From: David Webb Date: Mon, 9 Dec 2013 13:30:51 -0500 Subject: [PATCH 1/2] DATACASS-32 : WIP : Removed optionsByName for Query Options override. --- .../cassandra/core/CassandraOperations.java | 210 --------- .../cassandra/core/CassandraTemplate.java | 432 ++++++------------ 2 files changed, 130 insertions(+), 512 deletions(-) diff --git a/spring-cassandra/src/main/java/org/springframework/cassandra/core/CassandraOperations.java b/spring-cassandra/src/main/java/org/springframework/cassandra/core/CassandraOperations.java index 02d8d9ec6..31bee51a9 100644 --- a/spring-cassandra/src/main/java/org/springframework/cassandra/core/CassandraOperations.java +++ b/spring-cassandra/src/main/java/org/springframework/cassandra/core/CassandraOperations.java @@ -66,19 +66,6 @@ public interface CassandraOperations { */ T query(final String cql, ResultSetExtractor rse) throws DataAccessException; - /** - * Executes the provided CQL Query, and extracts the results with the ResultSetExtractor. - * - * @param cql The Query - * @param rse The implementation for extracting the ResultSet - * @param optionsByName Query Options Map - * - * @return - * @throws DataAccessException - */ - T query(final String cql, ResultSetExtractor rse, final Map optionsByName) - throws DataAccessException; - /** * Executes the provided CQL Query, and extracts the results with the ResultSetExtractor. * @@ -101,18 +88,6 @@ public interface CassandraOperations { */ T queryAsynchronously(final String cql, ResultSetFutureExtractor rse) throws DataAccessException; - /** - * Executes the provided CQL Query asynchronously, and extracts the results with the ResultSetFutureExtractor - * - * @param cql The Query - * @param rse The implementation for extracting the future results - * @param optionsByName Query Options Map - * @return - * @throws DataAccessException - */ - T queryAsynchronously(final String cql, ResultSetFutureExtractor rse, final Map optionsByName) - throws DataAccessException; - /** * Executes the provided CQL Query asynchronously, and extracts the results with the ResultSetFutureExtractor * @@ -134,17 +109,6 @@ public interface CassandraOperations { */ void query(final String cql, RowCallbackHandler rch) throws DataAccessException; - /** - * Executes the provided CQL Query, and then processes the results with the RowCallbackHandler. - * - * @param cql The Query - * @param rch The implementation for processing the rows returned. - * @param options Query Options Map - * @throws DataAccessException - */ - void query(final String cql, RowCallbackHandler rch, final Map optionsByName) - throws DataAccessException; - /** * Executes the provided CQL Query, and then processes the results with the RowCallbackHandler. * @@ -176,18 +140,6 @@ public interface CassandraOperations { */ List query(final String cql, RowMapper rowMapper) throws DataAccessException; - /** - * Executes the provided CQL Query, and maps all Rows returned with the supplied RowMapper. - * - * @param cql The Query - * @param rowMapper The implementation for mapping all rows - * @param optionsByName Query Options Map - * @return List of processed by the RowMapper - * @throws DataAccessException - */ - List query(final String cql, RowMapper rowMapper, final Map optionsByName) - throws DataAccessException; - /** * Executes the provided CQL Query, and maps all Rows returned with the supplied RowMapper. * @@ -363,9 +315,6 @@ public interface CassandraOperations { */ T query(final String cql, PreparedStatementBinder psb, ResultSetExtractor rse) throws DataAccessException; - T query(final String cql, PreparedStatementBinder psb, ResultSetExtractor rse, - final Map optionsByName) throws DataAccessException; - T query(final String cql, PreparedStatementBinder psb, ResultSetExtractor rse, final QueryOptions options) throws DataAccessException; @@ -381,20 +330,6 @@ public interface CassandraOperations { */ void query(final String cql, PreparedStatementBinder psb, RowCallbackHandler rch) throws DataAccessException; - /** - * Converts the CQL provided into a {@link SimplePreparedStatementCreator}. Then, the PreparedStatementBinder will - * bind its values to the bind variables in the provided CQL String. The results of the PreparedStatement are - * processed with the RowCallbackHandler implementation provided and nothing is returned. - * - * @param cql The Query to Prepare - * @param psb The Binding implementation - * @param rch The RowCallbackHandler for processing the ResultSet - * @param optionsByName The Query Options Map - * @throws DataAccessException - */ - void query(final String cql, PreparedStatementBinder psb, RowCallbackHandler rch, - final Map optionsByName) throws DataAccessException; - /** * Converts the CQL provided into a {@link SimplePreparedStatementCreator}. Then, the PreparedStatementBinder will * bind its values to the bind variables in the provided CQL String. The results of the PreparedStatement are @@ -423,22 +358,6 @@ public interface CassandraOperations { */ List query(final String cql, PreparedStatementBinder psb, RowMapper rowMapper) throws DataAccessException; - /** - * Converts the CQL provided into a {@link SimplePreparedStatementCreator}. Then, the PreparedStatementBinder will - * bind its values to the bind variables in the provided CQL String. The results of the PreparedStatement are - * processed with the RowMapper implementation provided and a List is returned with elements of Type for each Row - * returned. - * - * @param cql The Query to Prepare - * @param psb The Binding implementation - * @param rowMapper The implementation for Mapping a Row to Type - * @param optionsByName The Query Options Map - * @return List of for each Row returned from the Query. - * @throws DataAccessException - */ - List query(final String cql, PreparedStatementBinder psb, RowMapper rowMapper, - final Map optionsByName) throws DataAccessException; - /** * Converts the CQL provided into a {@link SimplePreparedStatementCreator}. Then, the PreparedStatementBinder will * bind its values to the bind variables in the provided CQL String. The results of the PreparedStatement are @@ -467,20 +386,6 @@ public interface CassandraOperations { */ T query(PreparedStatementCreator psc, ResultSetExtractor rse) throws DataAccessException; - /** - * Uses the provided PreparedStatementCreator to prepare a new Session call. This can only be used for CQL - * Statements that do not have data binding. The results of the PreparedStatement are processed with - * ResultSetExtractor implementation provided by the Application Code. - * - * @param psc The implementation to create the PreparedStatement - * @param rse Implementation for extracting from the ResultSet - * @param optionsByName The Query Options Map - * @return Type which is the output of the ResultSetExtractor - * @throws DataAccessException - */ - T query(PreparedStatementCreator psc, ResultSetExtractor rse, final Map optionsByName) - throws DataAccessException; - /** * Uses the provided PreparedStatementCreator to prepare a new Session call. This can only be used for CQL * Statements that do not have data binding. The results of the PreparedStatement are processed with @@ -506,19 +411,6 @@ public interface CassandraOperations { */ void query(PreparedStatementCreator psc, RowCallbackHandler rch) throws DataAccessException; - /** - * Uses the provided PreparedStatementCreator to prepare a new Session call. This can only be used for CQL - * Statements that do not have data binding. The results of the PreparedStatement are processed with - * RowCallbackHandler and nothing is returned. - * - * @param psc The implementation to create the PreparedStatement - * @param rch The implementation to process Results - * @param optionsByName The Query Options Map - * @throws DataAccessException - */ - void query(PreparedStatementCreator psc, RowCallbackHandler rch, final Map optionsByName) - throws DataAccessException; - /** * Uses the provided PreparedStatementCreator to prepare a new Session call. This can only be used for CQL * Statements that do not have data binding. The results of the PreparedStatement are processed with @@ -544,20 +436,6 @@ public interface CassandraOperations { */ List query(PreparedStatementCreator psc, RowMapper rowMapper) throws DataAccessException; - /** - * Uses the provided PreparedStatementCreator to prepare a new Session call. This can only be used for CQL - * Statements that do not have data binding. The results of the PreparedStatement are processed with RowMapper - * implementation provided and a List is returned with elements of Type for each Row returned. - * - * @param psc The implementation to create the PreparedStatement - * @param rowMapper The implementation for mapping each Row returned. - * @param optionsByName The Query Options Map - * @return List of Type mapped from each Row in the Results - * @throws DataAccessException - */ - List query(PreparedStatementCreator psc, RowMapper rowMapper, final Map optionsByName) - throws DataAccessException; - /** * Uses the provided PreparedStatementCreator to prepare a new Session call. This can only be used for CQL * Statements that do not have data binding. The results of the PreparedStatement are processed with RowMapper @@ -572,21 +450,6 @@ public interface CassandraOperations { List query(PreparedStatementCreator psc, RowMapper rowMapper, final QueryOptions options) throws DataAccessException; - /** - * Uses the provided PreparedStatementCreator to prepare a new Session call. Binds the values from the - * PreparedStatementBinder to the available bind variables. The results of the PreparedStatement are processed with - * ResultSetExtractor implementation provided by the Application Code. - * - * @param psc The implementation to create the PreparedStatement - * @param psb The implementation to bind variables to values - * @param rse Implementation for extracting from the ResultSet - * @param optionsByName The Query Options Map - * @return Type which is the output of the ResultSetExtractor - * @throws DataAccessException - */ - T query(PreparedStatementCreator psc, final PreparedStatementBinder psb, final ResultSetExtractor rse, - final Map optionsByName) throws DataAccessException; - /** * Uses the provided PreparedStatementCreator to prepare a new Session call. Binds the values from the * PreparedStatementBinder to the available bind variables. The results of the PreparedStatement are processed with @@ -616,21 +479,6 @@ public interface CassandraOperations { T query(PreparedStatementCreator psc, final PreparedStatementBinder psb, final ResultSetExtractor rse) throws DataAccessException; - /** - * Uses the provided PreparedStatementCreator to prepare a new Session call. Binds the values from the - * PreparedStatementBinder to the available bind variables. The results of the PreparedStatement are processed with - * RowCallbackHandler and nothing is returned. - * - * @param psc The implementation to create the PreparedStatement - * @param psb The implementation to bind variables to values - * @param rch The implementation to process Results - * @param optionsByName The Query Options Map - * @return Type which is the output of the ResultSetExtractor - * @throws DataAccessException - */ - void query(PreparedStatementCreator psc, final PreparedStatementBinder psb, final RowCallbackHandler rch, - final Map optionsByName) throws DataAccessException; - /** * Uses the provided PreparedStatementCreator to prepare a new Session call. Binds the values from the * PreparedStatementBinder to the available bind variables. The results of the PreparedStatement are processed with @@ -660,21 +508,6 @@ public interface CassandraOperations { void query(PreparedStatementCreator psc, final PreparedStatementBinder psb, final RowCallbackHandler rch) throws DataAccessException; - /** - * Uses the provided PreparedStatementCreator to prepare a new Session call. Binds the values from the - * PreparedStatementBinder to the available bind variables. The results of the PreparedStatement are processed with - * RowMapper implementation provided and a List is returned with elements of Type for each Row returned. - * - * @param psc The implementation to create the PreparedStatement - * @param psb The implementation to bind variables to values - * @param rowMapper The implementation for mapping each Row returned. - * @param optionsByName The Query Options Map - * @return Type which is the output of the ResultSetExtractor - * @throws DataAccessException - */ - List query(PreparedStatementCreator psc, final PreparedStatementBinder psb, final RowMapper rowMapper, - final Map optionsByName) throws DataAccessException; - /** * Uses the provided PreparedStatementCreator to prepare a new Session call. Binds the values from the * PreparedStatementBinder to the available bind variables. The results of the PreparedStatement are processed with @@ -729,21 +562,6 @@ public interface CassandraOperations { */ Session getSession(); - /** - * This is an operation designed for high performance writes. The cql is used to create a PreparedStatement once, then - * all row values are bound to the single PreparedStatement and executed against the Session. - * - *

- * This is used internally by the other ingest() methods, but can be used if you want to write your own RowIterator. - * The Object[] length returned by the next() implementation must match the number of bind variables in the CQL. - *

- * - * @param cql The CQL - * @param rowIterator Implementation to provide the Object[] to be bound to the CQL. - * @param optionsByName The Query Options Map - */ - void ingest(String cql, RowIterator rowIterator, Map optionsByName); - /** * This is an operation designed for high performance writes. The cql is used to create a PreparedStatement once, then * all row values are bound to the single PreparedStatement and executed against the Session. @@ -773,20 +591,6 @@ public interface CassandraOperations { */ void ingest(String cql, RowIterator rowIterator); - /** - * This is an operation designed for high performance writes. The cql is used to create a PreparedStatement once, then - * all row values are bound to the single PreparedStatement and executed against the Session. - * - *

- * The List length must match the number of bind variables in the CQL. - *

- * - * @param cql The CQL - * @param rows List of List with data to bind to the CQL. - * @param optionsByName The Query Options Map - */ - void ingest(String cql, List> rows, Map optionsByName); - /** * This is an operation designed for high performance writes. The cql is used to create a PreparedStatement once, then * all row values are bound to the single PreparedStatement and executed against the Session. @@ -814,20 +618,6 @@ public interface CassandraOperations { */ void ingest(String cql, List> rows); - /** - * This is an operation designed for high performance writes. The cql is used to create a PreparedStatement once, then - * all row values are bound to the single PreparedStatement and executed against the Session. - * - *

- * The Object[] length of the nested array must match the number of bind variables in the CQL. - *

- * - * @param cql The CQL - * @param rows Object array of Object array of values to bind to the CQL. - * @param optionsByName The Query Options Map - */ - void ingest(String cql, Object[][] rows, Map optionsByName); - /** * This is an operation designed for high performance writes. The cql is used to create a PreparedStatement once, then * all row values are bound to the single PreparedStatement and executed against the Session. diff --git a/spring-cassandra/src/main/java/org/springframework/cassandra/core/CassandraTemplate.java b/spring-cassandra/src/main/java/org/springframework/cassandra/core/CassandraTemplate.java index fb3dc87d7..cb0d43913 100644 --- a/spring-cassandra/src/main/java/org/springframework/cassandra/core/CassandraTemplate.java +++ b/spring-cassandra/src/main/java/org/springframework/cassandra/core/CassandraTemplate.java @@ -17,7 +17,6 @@ package org.springframework.cassandra.core; import java.util.ArrayList; import java.util.Collection; -import java.util.Collections; import java.util.HashMap; import java.util.Iterator; import java.util.List; @@ -31,7 +30,6 @@ import org.springframework.util.Assert; import com.datastax.driver.core.BoundStatement; import com.datastax.driver.core.ColumnDefinitions; import com.datastax.driver.core.ColumnDefinitions.Definition; -import com.datastax.driver.core.DataType; import com.datastax.driver.core.Host; import com.datastax.driver.core.Metadata; import com.datastax.driver.core.PreparedStatement; @@ -92,33 +90,23 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe */ @Override public void execute(final String cql) throws DataAccessException { - doExecute(cql, Collections. emptyMap()); - } - - /* (non-Javadoc) - * @see org.springframework.cassandra.core.CassandraOperations#queryAsynchronously(java.lang.String, org.springframework.cassandra.core.ResultSetFutureExtractor, java.util.Map) - */ - @Override - public T queryAsynchronously(final String cql, ResultSetFutureExtractor rse, - final Map optionsByName) throws DataAccessException { - return rse.extractData(execute(new SessionCallback() { - @Override - public ResultSetFuture doInSession(Session s) throws DataAccessException { - Statement statement = new SimpleStatement(cql); - addQueryOptions(statement, optionsByName); - return s.executeAsync(statement); - } - })); + doExecute(cql, null); } /* (non-Javadoc) * @see org.springframework.cassandra.core.CassandraOperations#queryAsynchronously(java.lang.String, org.springframework.cassandra.core.ResultSetFutureExtractor, org.springframework.cassandra.core.QueryOptions) */ @Override - public T queryAsynchronously(String cql, ResultSetFutureExtractor rse, QueryOptions options) + public T queryAsynchronously(final String cql, ResultSetFutureExtractor rse, final QueryOptions options) throws DataAccessException { - Assert.notNull(options); - return queryAsynchronously(cql, rse, options.toMap()); + return rse.extractData(execute(new SessionCallback() { + @Override + public ResultSetFuture doInSession(Session s) throws DataAccessException { + Statement statement = new SimpleStatement(cql); + addQueryOptions(statement, options); + return s.executeAsync(statement); + } + })); } /* (non-Javadoc) @@ -126,18 +114,7 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe */ @Override public T queryAsynchronously(final String cql, ResultSetFutureExtractor rse) throws DataAccessException { - return queryAsynchronously(cql, rse, Collections. emptyMap()); - } - - /* (non-Javadoc) - * @see org.springframework.cassandra.core.CassandraOperations#query(java.lang.String, org.springframework.cassandra.core.ResultSetExtractor) - */ - public T query(String cql, ResultSetExtractor rse, Map optionsByName) - throws DataAccessException { - Assert.notNull(cql); - Assert.notNull(optionsByName); - ResultSet rs = doExecute(cql, optionsByName); - return rse.extractData(rs); + return queryAsynchronously(cql, rse, null); } /* (non-Javadoc) @@ -145,7 +122,7 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe */ @Override public T query(String cql, ResultSetExtractor rse) throws DataAccessException { - return query(cql, rse, Collections. emptyMap()); + return query(cql, rse, null); } /* (non-Javadoc) @@ -153,16 +130,9 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe */ @Override public T query(String cql, ResultSetExtractor rse, QueryOptions options) throws DataAccessException { - Assert.notNull(options); - return query(cql, rse, options.toMap()); - } - - /* (non-Javadoc) - * @see org.springframework.cassandra.core.CassandraOperations#query(java.lang.String, org.springframework.cassandra.core.RowCallbackHandler, java.util.Map) - */ - @Override - public void query(String cql, RowCallbackHandler rch, Map optionsByName) throws DataAccessException { - process(doExecute(cql, optionsByName), rch); + Assert.notNull(cql); + ResultSet rs = doExecute(cql, options); + return rse.extractData(rs); } /* (non-Javadoc) @@ -170,25 +140,14 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe */ @Override public void query(String cql, RowCallbackHandler rch, QueryOptions options) throws DataAccessException { - Assert.notNull(options); - query(cql, rch, options.toMap()); + process(doExecute(cql, options), rch); } /* (non-Javadoc) * @see org.springframework.cassandra.core.CassandraOperations#query(java.lang.String, org.springframework.cassandra.core.RowCallbackHandler) */ public void query(String cql, RowCallbackHandler rch) throws DataAccessException { - query(cql, rch, Collections. emptyMap()); - } - - /* (non-Javadoc) - * @see org.springframework.cassandra.core.CassandraOperations#query(java.lang.String, org.springframework.cassandra.core.RowMapper, java.util.Map) - */ - @Override - public List query(String cql, RowMapper rowMapper, Map optionsByName) - throws DataAccessException { - Assert.notNull(optionsByName); - return process(doExecute(cql, optionsByName), rowMapper); + query(cql, rch, null); } /* (non-Javadoc) @@ -196,50 +155,49 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe */ @Override public List query(String cql, RowMapper rowMapper, QueryOptions options) throws DataAccessException { - Assert.notNull(options); - return query(cql, rowMapper, options.toMap()); + return process(doExecute(cql, options), rowMapper); } /* (non-Javadoc) * @see org.springframework.cassandra.core.CassandraOperations#query(java.lang.String, org.springframework.cassandra.core.RowMapper) */ public List query(String cql, RowMapper rowMapper) throws DataAccessException { - return query(cql, rowMapper, Collections. emptyMap()); + return query(cql, rowMapper, null); } /* (non-Javadoc) * @see org.springframework.cassandra.core.CassandraOperations#queryForList(java.lang.String) */ public List> queryForListOfMap(String cql) throws DataAccessException { - return processListOfMap(doExecute(cql, Collections. emptyMap())); + return processListOfMap(doExecute(cql, null)); } /* (non-Javadoc) * @see org.springframework.cassandra.core.CassandraOperations#queryForList(java.lang.String, java.lang.Class) */ public List queryForList(String cql, Class elementType) throws DataAccessException { - return processList(doExecute(cql, Collections. emptyMap()), elementType); + return processList(doExecute(cql, null), elementType); } /* (non-Javadoc) * @see org.springframework.cassandra.core.CassandraOperations#queryForMap(java.lang.String) */ public Map queryForMap(String cql) throws DataAccessException { - return processMap(doExecute(cql, Collections. emptyMap())); + return processMap(doExecute(cql, null)); } /* (non-Javadoc) * @see org.springframework.cassandra.core.CassandraOperations#queryForObject(java.lang.String, java.lang.Class) */ public T queryForObject(String cql, Class requiredType) throws DataAccessException { - return processOne(doExecute(cql, Collections. emptyMap()), requiredType); + return processOne(doExecute(cql, null), requiredType); } /* (non-Javadoc) * @see org.springframework.cassandra.core.CassandraOperations#queryForObject(java.lang.String, org.springframework.cassandra.core.RowMapper) */ public T queryForObject(String cql, RowMapper rowMapper) throws DataAccessException { - return processOne(doExecute(cql, Collections. emptyMap()), rowMapper); + return processOne(doExecute(cql, null), rowMapper); } /** @@ -267,7 +225,7 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe * @param callback * @return */ - protected ResultSet doExecute(final String cql, final Map optionsByName) { + protected ResultSet doExecute(final String cql, final QueryOptions options) { logger.info(cql); @@ -276,7 +234,7 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe @Override public ResultSet doInSession(Session s) throws DataAccessException { SimpleStatement statement = new SimpleStatement(cql); - addQueryOptions(statement, optionsByName); + addQueryOptions(statement, options); return s.execute(statement); } }); @@ -288,13 +246,13 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe * @param callback * @return */ - protected ResultSet doExecute(final BoundStatement bs, final Map optionsByName) { + protected ResultSet doExecute(final BoundStatement bs, final QueryOptions options) { return doExecute(new SessionCallback() { @Override public ResultSet doInSession(Session s) throws DataAccessException { - addQueryOptions(bs, optionsByName); + addQueryOptions(bs, options); return s.execute(bs); } }); @@ -326,7 +284,6 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe for (Definition def : cols.asList()) { String name = def.getName(); - DataType dataType = def.getType(); map.put(name, def.getType().deserialize(row.getBytesUnsafe(name))); } @@ -528,24 +485,13 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe return execute(new SimplePreparedStatementCreator(cql), action); } - /* (non-Javadoc) - * @see org.springframework.cassandra.core.CassandraOperations#query(org.springframework.cassandra.core.PreparedStatementCreator, org.springframework.cassandra.core.ResultSetExtractor, java.util.Map) - */ - @Override - public T query(PreparedStatementCreator psc, ResultSetExtractor rse, Map optionsByName) - throws DataAccessException { - Assert.notNull(optionsByName); - return query(psc, null, rse, optionsByName); - } - /* (non-Javadoc) * @see org.springframework.cassandra.core.CassandraOperations#query(org.springframework.cassandra.core.PreparedStatementCreator, org.springframework.cassandra.core.ResultSetExtractor, org.springframework.cassandra.core.QueryOptions) */ @Override public T query(PreparedStatementCreator psc, ResultSetExtractor rse, QueryOptions options) throws DataAccessException { - Assert.notNull(options); - return query(psc, rse, options.toMap()); + return query(psc, null, rse, options); } /* (non-Javadoc) @@ -553,17 +499,7 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe */ @Override public T query(PreparedStatementCreator psc, ResultSetExtractor rse) throws DataAccessException { - return query(psc, rse, Collections. emptyMap()); - } - - /* (non-Javadoc) - * @see org.springframework.cassandra.core.CassandraOperations#query(org.springframework.cassandra.core.PreparedStatementCreator, org.springframework.cassandra.core.RowCallbackHandler, java.util.Map) - */ - @Override - public void query(PreparedStatementCreator psc, RowCallbackHandler rch, Map optionsByName) - throws DataAccessException { - Assert.notNull(optionsByName); - query(psc, null, rch, optionsByName); + return query(psc, rse, null); } /* (non-Javadoc) @@ -572,8 +508,7 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe @Override public void query(PreparedStatementCreator psc, RowCallbackHandler rch, QueryOptions options) throws DataAccessException { - Assert.notNull(options); - query(psc, rch, options.toMap()); + query(psc, null, rch, options); } /* (non-Javadoc) @@ -581,17 +516,7 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe */ @Override public void query(PreparedStatementCreator psc, RowCallbackHandler rch) throws DataAccessException { - query(psc, rch, Collections. emptyMap()); - } - - /* (non-Javadoc) - * @see org.springframework.cassandra.core.CassandraOperations#query(org.springframework.cassandra.core.PreparedStatementCreator, org.springframework.cassandra.core.RowMapper, java.util.Map) - */ - @Override - public List query(PreparedStatementCreator psc, RowMapper rowMapper, Map optionsByName) - throws DataAccessException { - Assert.notNull(optionsByName); - return query(psc, null, rowMapper, optionsByName); + query(psc, rch, null); } /* (non-Javadoc) @@ -600,8 +525,7 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe @Override public List query(PreparedStatementCreator psc, RowMapper rowMapper, QueryOptions options) throws DataAccessException { - Assert.notNull(options); - return query(psc, rowMapper, options.toMap()); + return query(psc, null, rowMapper, options); } /* (non-Javadoc) @@ -609,41 +533,7 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe */ @Override public List query(PreparedStatementCreator psc, RowMapper rowMapper) throws DataAccessException { - return query(psc, rowMapper, Collections. emptyMap()); - } - - /* (non-Javadoc) - * @see org.springframework.cassandra.core.CassandraOperations#query(org.springframework.cassandra.core.PreparedStatementCreator, org.springframework.cassandra.core.PreparedStatementSetter, org.springframework.cassandra.core.ResultSetExtractor) - */ - public T query(PreparedStatementCreator psc, final PreparedStatementBinder psb, final ResultSetExtractor rse, - final Map optionsByName) throws DataAccessException { - - Assert.notNull(rse, "ResultSetExtractor must not be null"); - logger.debug("Executing prepared CQL query"); - - return execute(psc, new PreparedStatementCallback() { - public T doInPreparedStatement(PreparedStatement ps) throws DriverException { - ResultSet rs = null; - BoundStatement bs = null; - if (psb != null) { - bs = psb.bindValues(ps); - } else { - bs = ps.bind(); - } - rs = doExecute(bs, optionsByName); - return rse.extractData(rs); - } - }); - } - - /* (non-Javadoc) - * @see org.springframework.cassandra.core.CassandraOperations#query(java.lang.String, org.springframework.cassandra.core.PreparedStatementBinder, org.springframework.cassandra.core.ResultSetExtractor, java.util.Map) - */ - @Override - public T query(String cql, PreparedStatementBinder psb, ResultSetExtractor rse, - Map optionsByName) throws DataAccessException { - Assert.notNull(optionsByName); - return query(new SimplePreparedStatementCreator(cql), psb, rse, optionsByName); + return query(psc, rowMapper, null); } /* (non-Javadoc) @@ -652,8 +542,7 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe @Override public T query(String cql, PreparedStatementBinder psb, ResultSetExtractor rse, QueryOptions options) throws DataAccessException { - Assert.notNull(options); - return query(cql, psb, rse, options.toMap()); + return query(new SimplePreparedStatementCreator(cql), psb, rse, options); } /* (non-Javadoc) @@ -661,17 +550,7 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe */ @Override public T query(String cql, PreparedStatementBinder psb, ResultSetExtractor rse) throws DataAccessException { - return query(cql, psb, rse, Collections. emptyMap()); - } - - /* (non-Javadoc) - * @see org.springframework.cassandra.core.CassandraOperations#query(java.lang.String, org.springframework.cassandra.core.PreparedStatementBinder, org.springframework.cassandra.core.RowCallbackHandler, java.util.Map) - */ - @Override - public void query(String cql, PreparedStatementBinder psb, RowCallbackHandler rch, Map optionsByName) - throws DataAccessException { - Assert.notNull(optionsByName); - query(new SimplePreparedStatementCreator(cql), psb, rch, optionsByName); + return query(cql, psb, rse, null); } /* (non-Javadoc) @@ -680,8 +559,7 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe @Override public void query(String cql, PreparedStatementBinder psb, RowCallbackHandler rch, QueryOptions options) throws DataAccessException { - Assert.notNull(options); - query(cql, psb, rch, options.toMap()); + query(new SimplePreparedStatementCreator(cql), psb, rch, options); } /* (non-Javadoc) @@ -689,17 +567,7 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe */ @Override public void query(String cql, PreparedStatementBinder psb, RowCallbackHandler rch) throws DataAccessException { - query(cql, psb, rch, Collections. emptyMap()); - } - - /* (non-Javadoc) - * @see org.springframework.cassandra.core.CassandraOperations#query(java.lang.String, org.springframework.cassandra.core.PreparedStatementBinder, org.springframework.cassandra.core.RowMapper, java.util.Map) - */ - @Override - public List query(String cql, PreparedStatementBinder psb, RowMapper rowMapper, - Map optionsByName) throws DataAccessException { - Assert.notNull(optionsByName); - return query(new SimplePreparedStatementCreator(cql), psb, rowMapper, optionsByName); + query(cql, psb, rch, null); } /* (non-Javadoc) @@ -708,8 +576,7 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe @Override public List query(String cql, PreparedStatementBinder psb, RowMapper rowMapper, QueryOptions options) throws DataAccessException { - Assert.notNull(options); - return query(cql, psb, rowMapper, options.toMap()); + return query(new SimplePreparedStatementCreator(cql), psb, rowMapper, options); } /* (non-Javadoc) @@ -717,72 +584,7 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe */ @Override public List query(String cql, PreparedStatementBinder psb, RowMapper rowMapper) throws DataAccessException { - return query(cql, psb, rowMapper, Collections. emptyMap()); - } - - /* (non-Javadoc) - * @see org.springframework.cassandra.core.CassandraOperations#query(org.springframework.cassandra.core.PreparedStatementCreator, org.springframework.cassandra.core.PreparedStatementBinder, org.springframework.cassandra.core.RowCallbackHandler) - */ - @Override - public void query(PreparedStatementCreator psc, final PreparedStatementBinder psb, final RowCallbackHandler rch, - final Map optionsByName) throws DataAccessException { - Assert.notNull(rch, "RowCallbackHandler must not be null"); - logger.debug("Executing prepared CQL query"); - - execute(psc, new PreparedStatementCallback() { - public Object doInPreparedStatement(PreparedStatement ps) throws DriverException { - ResultSet rs = null; - BoundStatement bs = null; - if (psb != null) { - bs = psb.bindValues(ps); - } else { - bs = ps.bind(); - } - rs = doExecute(bs, optionsByName); - process(rs, rch); - return null; - } - }); - } - - /* (non-Javadoc) - * @see org.springframework.cassandra.core.CassandraOperations#query(org.springframework.cassandra.core.PreparedStatementCreator, org.springframework.cassandra.core.PreparedStatementBinder, org.springframework.cassandra.core.RowMapper) - */ - @Override - public List query(PreparedStatementCreator psc, final PreparedStatementBinder psb, - final RowMapper rowMapper, final Map optionsByName) throws DataAccessException { - Assert.notNull(rowMapper, "RowMapper must not be null"); - logger.debug("Executing prepared CQL query"); - - return execute(psc, new PreparedStatementCallback>() { - public List doInPreparedStatement(PreparedStatement ps) throws DriverException { - ResultSet rs = null; - BoundStatement bs = null; - if (psb != null) { - bs = psb.bindValues(ps); - } else { - bs = ps.bind(); - } - rs = doExecute(bs, optionsByName); - - return process(rs, rowMapper); - } - }); - } - - /* (non-Javadoc) - * @see org.springframework.cassandra.core.CassandraOperations#execute(java.lang.String, org.springframework.cassandra.core.RowProvider, int) - */ - @Override - public void ingest(String cql, RowIterator rowIterator, Map optionsByName) { - - PreparedStatement preparedStatement = getSession().prepare(cql); - addPreparedStatementOptions(preparedStatement, optionsByName); - - while (rowIterator.hasNext()) { - getSession().execute(preparedStatement.bind(rowIterator.next())); - } - + return query(cql, psb, rowMapper, null); } /* (non-Javadoc) @@ -790,8 +592,13 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe */ @Override public void ingest(String cql, RowIterator rowIterator, QueryOptions options) { - Assert.notNull(options); - ingest(cql, rowIterator, options.toMap()); + + PreparedStatement preparedStatement = getSession().prepare(cql); + addPreparedStatementOptions(preparedStatement, options); + + while (rowIterator.hasNext()) { + getSession().execute(preparedStatement.bind(rowIterator.next())); + } } /* (non-Javadoc) @@ -799,16 +606,15 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe */ @Override public void ingest(String cql, RowIterator rowIterator) { - ingest(cql, rowIterator, Collections. emptyMap()); + ingest(cql, rowIterator, null); } /* (non-Javadoc) - * @see org.springframework.cassandra.core.CassandraOperations#execute(java.lang.String, java.util.List) + * @see org.springframework.cassandra.core.CassandraOperations#ingest(java.lang.String, java.util.List, org.springframework.cassandra.core.QueryOptions) */ @Override - public void ingest(String cql, final List> rows, Map optionsByName) { + public void ingest(String cql, final List> rows, QueryOptions options) { - Assert.notNull(optionsByName); Assert.notNull(rows); Assert.notEmpty(rows); @@ -826,34 +632,23 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe return i.hasNext(); } - }, optionsByName); + }, options); } - /* (non-Javadoc) - * @see org.springframework.cassandra.core.CassandraOperations#ingest(java.lang.String, java.util.List, org.springframework.cassandra.core.QueryOptions) - */ - @Override - public void ingest(String cql, List> rows, QueryOptions options) { - Assert.notNull(options); - ingest(cql, rows, options.toMap()); - } - /* (non-Javadoc) * @see org.springframework.cassandra.core.CassandraOperations#ingest(java.lang.String, java.util.List) */ @Override public void ingest(String cql, List> rows) { - ingest(cql, rows, Collections. emptyMap()); + ingest(cql, rows, null); } /* (non-Javadoc) - * @see org.springframework.cassandra.core.CassandraOperations#execute(java.lang.String, java.lang.Object[][]) + * @see org.springframework.cassandra.core.CassandraOperations#ingest(java.lang.String, java.lang.Object[][], org.springframework.cassandra.core.QueryOptions) */ @Override - public void ingest(String cql, final Object[][] rows, final Map optionsByName) { - - Assert.notNull(optionsByName); + public void ingest(String cql, final Object[][] rows, QueryOptions options) { ingest(cql, new RowIterator() { @@ -869,16 +664,7 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe return index < rows.length; } - }, optionsByName); - } - - /* (non-Javadoc) - * @see org.springframework.cassandra.core.CassandraOperations#ingest(java.lang.String, java.lang.Object[][], org.springframework.cassandra.core.QueryOptions) - */ - @Override - public void ingest(String cql, final Object[][] rows, QueryOptions options) { - Assert.notNull(options); - ingest(cql, rows, options.toMap()); + }, options); } /* (non-Javadoc) @@ -886,7 +672,7 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe */ @Override public void ingest(String cql, final Object[][] rows) { - ingest(cql, rows, Collections. emptyMap()); + ingest(cql, rows, null); } /* (non-Javadoc) @@ -895,7 +681,7 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe @Override public void truncate(String tableName) throws DataAccessException { Truncate truncate = QueryBuilder.truncate(tableName); - doExecute(truncate.getQueryString(), Collections. emptyMap()); + doExecute(truncate.getQueryString(), null); } /** @@ -904,22 +690,20 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe * @param q * @param optionsByName */ - protected static void addQueryOptions(Query q, Map optionsByName) { + protected static void addQueryOptions(Query q, QueryOptions options) { - if (optionsByName == null) { + if (options == null) { return; } /* * Add Query Options */ - if (optionsByName.get(QueryOptions.QueryOptionMapKeys.CONSISTENCY_LEVEL) != null) { - q.setConsistencyLevel(ConsistencyLevelResolver.resolve((ConsistencyLevel) optionsByName - .get(QueryOptions.QueryOptionMapKeys.CONSISTENCY_LEVEL))); + if (options.getConsistencyLevel() != null) { + q.setConsistencyLevel(ConsistencyLevelResolver.resolve(options.getConsistencyLevel())); } - if (optionsByName.get(QueryOptions.QueryOptionMapKeys.RETRY_POLICY) != null) { - q.setRetryPolicy(RetryPolicyResolver.resolve((RetryPolicy) optionsByName - .get(QueryOptions.QueryOptionMapKeys.RETRY_POLICY))); + if (options.getRetryPolicy() != null) { + q.setRetryPolicy(RetryPolicyResolver.resolve(options.getRetryPolicy())); } } @@ -930,22 +714,20 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe * @param q * @param optionsByName */ - protected static void addPreparedStatementOptions(PreparedStatement s, Map optionsByName) { + protected static void addPreparedStatementOptions(PreparedStatement s, QueryOptions options) { - if (optionsByName == null) { + if (options == null) { return; } /* * Add Query Options */ - if (optionsByName.get(QueryOptions.QueryOptionMapKeys.CONSISTENCY_LEVEL) != null) { - s.setConsistencyLevel(ConsistencyLevelResolver.resolve((ConsistencyLevel) optionsByName - .get(QueryOptions.QueryOptionMapKeys.CONSISTENCY_LEVEL))); + if (options.getConsistencyLevel() != null) { + s.setConsistencyLevel(ConsistencyLevelResolver.resolve(options.getConsistencyLevel())); } - if (optionsByName.get(QueryOptions.QueryOptionMapKeys.RETRY_POLICY) != null) { - s.setRetryPolicy(RetryPolicyResolver.resolve((RetryPolicy) optionsByName - .get(QueryOptions.QueryOptionMapKeys.RETRY_POLICY))); + if (options.getRetryPolicy() != null) { + s.setRetryPolicy(RetryPolicyResolver.resolve(options.getRetryPolicy())); } } @@ -954,10 +736,25 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe * @see org.springframework.cassandra.core.CassandraOperations#query(org.springframework.cassandra.core.PreparedStatementCreator, org.springframework.cassandra.core.PreparedStatementBinder, org.springframework.cassandra.core.ResultSetExtractor, org.springframework.cassandra.core.QueryOptions) */ @Override - public T query(PreparedStatementCreator psc, PreparedStatementBinder psb, ResultSetExtractor rse, - QueryOptions options) throws DataAccessException { - Assert.notNull(options); - return query(psc, psb, rse, options.toMap()); + public T query(PreparedStatementCreator psc, final PreparedStatementBinder psb, final ResultSetExtractor rse, + final QueryOptions options) throws DataAccessException { + + Assert.notNull(rse, "ResultSetExtractor must not be null"); + logger.debug("Executing prepared CQL query"); + + return execute(psc, new PreparedStatementCallback() { + public T doInPreparedStatement(PreparedStatement ps) throws DriverException { + ResultSet rs = null; + BoundStatement bs = null; + if (psb != null) { + bs = psb.bindValues(ps); + } else { + bs = ps.bind(); + } + rs = doExecute(bs, options); + return rse.extractData(rs); + } + }); } /* (non-Javadoc) @@ -966,17 +763,33 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe @Override public T query(PreparedStatementCreator psc, PreparedStatementBinder psb, ResultSetExtractor rse) throws DataAccessException { - return query(psc, psb, rse, Collections. emptyMap()); + return query(psc, psb, rse, null); } /* (non-Javadoc) * @see org.springframework.cassandra.core.CassandraOperations#query(org.springframework.cassandra.core.PreparedStatementCreator, org.springframework.cassandra.core.PreparedStatementBinder, org.springframework.cassandra.core.RowCallbackHandler, org.springframework.cassandra.core.QueryOptions) */ @Override - public void query(PreparedStatementCreator psc, PreparedStatementBinder psb, RowCallbackHandler rch, - QueryOptions options) throws DataAccessException { - Assert.notNull(options); - query(psc, psb, rch, options.toMap()); + public void query(PreparedStatementCreator psc, final PreparedStatementBinder psb, final RowCallbackHandler rch, + final QueryOptions options) throws DataAccessException { + + Assert.notNull(rch, "RowCallbackHandler must not be null"); + logger.debug("Executing prepared CQL query"); + + execute(psc, new PreparedStatementCallback() { + public Object doInPreparedStatement(PreparedStatement ps) throws DriverException { + ResultSet rs = null; + BoundStatement bs = null; + if (psb != null) { + bs = psb.bindValues(ps); + } else { + bs = ps.bind(); + } + rs = doExecute(bs, options); + process(rs, rch); + return null; + } + }); } /* (non-Javadoc) @@ -985,17 +798,32 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe @Override public void query(PreparedStatementCreator psc, PreparedStatementBinder psb, RowCallbackHandler rch) throws DataAccessException { - query(psc, psb, rch, Collections. emptyMap()); + query(psc, psb, rch, null); } /* (non-Javadoc) * @see org.springframework.cassandra.core.CassandraOperations#query(org.springframework.cassandra.core.PreparedStatementCreator, org.springframework.cassandra.core.PreparedStatementBinder, org.springframework.cassandra.core.RowMapper, org.springframework.cassandra.core.QueryOptions) */ @Override - public List query(PreparedStatementCreator psc, PreparedStatementBinder psb, RowMapper rowMapper, - QueryOptions options) throws DataAccessException { - Assert.notNull(options); - return query(psc, psb, rowMapper, options.toMap()); + public List query(PreparedStatementCreator psc, final PreparedStatementBinder psb, + final RowMapper rowMapper, final QueryOptions options) throws DataAccessException { + Assert.notNull(rowMapper, "RowMapper must not be null"); + logger.debug("Executing prepared CQL query"); + + return execute(psc, new PreparedStatementCallback>() { + public List doInPreparedStatement(PreparedStatement ps) throws DriverException { + ResultSet rs = null; + BoundStatement bs = null; + if (psb != null) { + bs = psb.bindValues(ps); + } else { + bs = ps.bind(); + } + rs = doExecute(bs, options); + + return process(rs, rowMapper); + } + }); } /* (non-Javadoc) @@ -1004,7 +832,7 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe @Override public List query(PreparedStatementCreator psc, PreparedStatementBinder psb, RowMapper rowMapper) throws DataAccessException { - return query(psc, psb, rowMapper, Collections. emptyMap()); + return query(psc, psb, rowMapper, null); } } \ No newline at end of file From 98389dd40a0233a5c5dad13b8369ed6c6bfe93ed Mon Sep 17 00:00:00 2001 From: David Webb Date: Mon, 9 Dec 2013 15:21:10 -0500 Subject: [PATCH 2/2] DATACASS-32 : Completed : Refactoring completed after code review. --- .../cassandra/core/CassandraTemplate.java | 4 +- .../core/CassandraDataOperations.java | 185 --------- .../cassandra/core/CassandraDataTemplate.java | 384 ++++-------------- .../data/cassandra/util/CqlUtils.java | 76 ++-- .../template/CassandraDataOperationsTest.java | 195 +-------- 5 files changed, 101 insertions(+), 743 deletions(-) diff --git a/spring-cassandra/src/main/java/org/springframework/cassandra/core/CassandraTemplate.java b/spring-cassandra/src/main/java/org/springframework/cassandra/core/CassandraTemplate.java index cb0d43913..98fb7203a 100644 --- a/spring-cassandra/src/main/java/org/springframework/cassandra/core/CassandraTemplate.java +++ b/spring-cassandra/src/main/java/org/springframework/cassandra/core/CassandraTemplate.java @@ -690,7 +690,7 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe * @param q * @param optionsByName */ - protected static void addQueryOptions(Query q, QueryOptions options) { + public static void addQueryOptions(Query q, QueryOptions options) { if (options == null) { return; @@ -714,7 +714,7 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe * @param q * @param optionsByName */ - protected static void addPreparedStatementOptions(PreparedStatement s, QueryOptions options) { + public static void addPreparedStatementOptions(PreparedStatement s, QueryOptions options) { if (options == null) { return; diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraDataOperations.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraDataOperations.java index 4e352eec1..217052354 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraDataOperations.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraDataOperations.java @@ -16,7 +16,6 @@ package org.springframework.data.cassandra.core; import java.util.List; -import java.util.Map; import org.springframework.cassandra.core.QueryOptions; import org.springframework.data.cassandra.convert.CassandraConverter; @@ -122,22 +121,6 @@ public interface CassandraDataOperations { */ T insert(T entity, QueryOptions options); - /** - * @param entity - * @param tableName - * @param options - * @return - */ - T insert(T entity, Map optionsByName); - - /** - * @param entity - * @param tableName - * @param optionsByName - * @return - */ - T insert(T entity, String tableName, Map optionsByName); - /** * Insert the given list of objects to the table by annotation table name. * @@ -163,14 +146,6 @@ public interface CassandraDataOperations { */ List insert(List entities, QueryOptions options); - /** - * @param entities - * @param tableName - * @param optionsByName - * @return - */ - List insert(List entities, Map optionsByName); - /** * @param entities * @param tableName @@ -179,14 +154,6 @@ public interface CassandraDataOperations { */ List insert(List entities, String tableName, QueryOptions options); - /** - * @param entities - * @param tableName - * @param optionsByName - * @return - */ - List insert(List entities, String tableName, Map optionsByName); - /** * Insert the given object to the table by id. * @@ -209,14 +176,6 @@ public interface CassandraDataOperations { */ T insertAsynchronously(T entity, QueryOptions options); - /** - * @param entity - * @param tableName - * @param optionsByName - * @return - */ - T insertAsynchronously(T entity, Map optionsByName); - /** * @param entity * @param tableName @@ -225,14 +184,6 @@ public interface CassandraDataOperations { */ T insertAsynchronously(T entity, String tableName, QueryOptions options); - /** - * @param entity - * @param tableName - * @param optionsByName - * @return - */ - T insertAsynchronously(T entity, String tableName, Map optionsByName); - /** * Insert the given object to the table by id. * @@ -255,14 +206,6 @@ public interface CassandraDataOperations { */ List insertAsynchronously(List entities, QueryOptions options); - /** - * @param entities - * @param tableName - * @param optionsByName - * @return - */ - List insertAsynchronously(List entities, Map optionsByName); - /** * @param entities * @param tableName @@ -271,14 +214,6 @@ public interface CassandraDataOperations { */ List insertAsynchronously(List entities, String tableName, QueryOptions options); - /** - * @param entities - * @param tableName - * @param optionsByName - * @return - */ - List insertAsynchronously(List entities, String tableName, Map optionsByName); - /** * Insert the given object to the table by id. * @@ -301,14 +236,6 @@ public interface CassandraDataOperations { */ T update(T entity, QueryOptions options); - /** - * @param entity - * @param tableName - * @param optionsByName - * @return - */ - T update(T entity, Map optionsByName); - /** * @param entity * @param tableName @@ -317,14 +244,6 @@ public interface CassandraDataOperations { */ T update(T entity, String tableName, QueryOptions options); - /** - * @param entity - * @param tableName - * @param optionsByName - * @return - */ - T update(T entity, String tableName, Map optionsByName); - /** * Insert the given object to the table by id. * @@ -347,14 +266,6 @@ public interface CassandraDataOperations { */ List update(List entities, QueryOptions options); - /** - * @param entities - * @param tableName - * @param optionsByName - * @return - */ - List update(List entities, Map optionsByName); - /** * @param entities * @param tableName @@ -363,14 +274,6 @@ public interface CassandraDataOperations { */ List update(List entities, String tableName, QueryOptions options); - /** - * @param entities - * @param tableName - * @param optionsByName - * @return - */ - List update(List entities, String tableName, Map optionsByName); - /** * Insert the given object to the table by id. * @@ -393,14 +296,6 @@ public interface CassandraDataOperations { */ T updateAsynchronously(T entity, QueryOptions options); - /** - * @param entity - * @param tableName - * @param optionsByName - * @return - */ - T updateAsynchronously(T entity, Map optionsByName); - /** * @param entity * @param tableName @@ -409,14 +304,6 @@ public interface CassandraDataOperations { */ T updateAsynchronously(T entity, String tableName, QueryOptions options); - /** - * @param entity - * @param tableName - * @param optionsByName - * @return - */ - T updateAsynchronously(T entity, String tableName, Map optionsByName); - /** * Insert the given object to the table by id. * @@ -439,14 +326,6 @@ public interface CassandraDataOperations { */ List updateAsynchronously(List entities, QueryOptions options); - /** - * @param entities - * @param tableName - * @param optionsByName - * @return - */ - List updateAsynchronously(List entities, Map optionsByName); - /** * @param entities * @param tableName @@ -455,14 +334,6 @@ public interface CassandraDataOperations { */ List updateAsynchronously(List entities, String tableName, QueryOptions options); - /** - * @param entities - * @param tableName - * @param optionsByName - * @return - */ - List updateAsynchronously(List entities, String tableName, Map optionsByName); - /** * Remove the given object from the table by id. * @@ -485,13 +356,6 @@ public interface CassandraDataOperations { */ void delete(T entity, QueryOptions options); - /** - * @param entity - * @param tableName - * @param optionsByName - */ - void delete(T entity, Map optionsByName); - /** * @param entity * @param tableName @@ -499,13 +363,6 @@ public interface CassandraDataOperations { */ void delete(T entity, String tableName, QueryOptions options); - /** - * @param entity - * @param tableName - * @param optionsByName - */ - void delete(T entity, String tableName, Map optionsByName); - /** * Remove the given object from the table by id. * @@ -528,13 +385,6 @@ public interface CassandraDataOperations { */ void delete(List entities, QueryOptions options); - /** - * @param entities - * @param tableName - * @param optionsByName - */ - void delete(List entities, Map optionsByName); - /** * @param entities * @param tableName @@ -542,13 +392,6 @@ public interface CassandraDataOperations { */ void delete(List entities, String tableName, QueryOptions options); - /** - * @param entities - * @param tableName - * @param optionsByName - */ - void delete(List entities, String tableName, Map optionsByName); - /** * Remove the given object from the table by id. * @@ -563,13 +406,6 @@ public interface CassandraDataOperations { */ void deleteAsynchronously(T entity, QueryOptions options); - /** - * @param entity - * @param tableName - * @param optionsByName - */ - void deleteAsynchronously(T entity, Map optionsByName); - /** * @param entity * @param tableName @@ -577,13 +413,6 @@ public interface CassandraDataOperations { */ void deleteAsynchronously(T entity, String tableName, QueryOptions options); - /** - * @param entity - * @param tableName - * @param optionsByName - */ - void deleteAsynchronously(T entity, String tableName, Map optionsByName); - /** * Removes the given object from the given table. * @@ -614,13 +443,6 @@ public interface CassandraDataOperations { */ void deleteAsynchronously(List entities, QueryOptions options); - /** - * @param entities - * @param tableName - * @param optionsByName - */ - void deleteAsynchronously(List entities, Map optionsByName); - /** * @param entities * @param tableName @@ -628,13 +450,6 @@ public interface CassandraDataOperations { */ void deleteAsynchronously(List entities, String tableName, QueryOptions options); - /** - * @param entities - * @param tableName - * @param optionsByName - */ - void deleteAsynchronously(List entities, String tableName, Map optionsByName); - /** * Returns the underlying {@link CassandraConverter}. * diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraDataTemplate.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraDataTemplate.java index e5d878536..69368d468 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraDataTemplate.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/core/CassandraDataTemplate.java @@ -21,7 +21,6 @@ import java.util.Collections; import java.util.HashSet; import java.util.Iterator; import java.util.List; -import java.util.Map; import java.util.Set; import org.springframework.cassandra.core.CassandraTemplate; @@ -78,8 +77,6 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr /* * Required elements for successful Template Operations. These can be set with the Constructor, or wired in * later. - * - * TODO - DW - Discuss Autowiring these. */ private String keyspace; private CassandraConverter cassandraConverter; @@ -150,16 +147,6 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr delete(entities, tableName); } - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.CassandraOperations#delete(java.util.List, java.util.Map) - */ - @Override - public void delete(List entities, Map optionsByName) { - String tableName = getTableName(entities.get(0).getClass()); - Assert.notNull(tableName); - delete(entities, tableName, optionsByName); - } - /* (non-Javadoc) * @see org.springframework.data.cassandra.core.CassandraOperations#delete(java.util.List, org.springframework.data.cassandra.core.QueryOptions) */ @@ -176,19 +163,7 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr @Override public void delete(List entities, String tableName) { - delete(entities, tableName, Collections. emptyMap()); - } - - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.CassandraOperations#delete(java.util.List, java.lang.String, java.util.Map) - */ - @Override - public void delete(List entities, String tableName, Map optionsByName) { - Assert.notNull(entities); - Assert.notEmpty(entities); - Assert.notNull(tableName); - Assert.notNull(optionsByName); - doBatchDelete(tableName, entities, optionsByName, false); + delete(entities, tableName, null); } /* (non-Javadoc) @@ -196,7 +171,10 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr */ @Override public void delete(List entities, String tableName, QueryOptions options) { - delete(entities, tableName, options.toMap()); + Assert.notNull(entities); + Assert.notEmpty(entities); + Assert.notNull(tableName); + doBatchDelete(tableName, entities, options, false); } /* (non-Javadoc) @@ -209,16 +187,6 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr delete(entity, tableName); } - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.CassandraOperations#delete(java.lang.Object, java.util.Map) - */ - @Override - public void delete(T entity, Map optionsByName) { - String tableName = getTableName(entity.getClass()); - Assert.notNull(tableName); - delete(entity, tableName, optionsByName); - } - /* (non-Javadoc) * @see org.springframework.data.cassandra.core.CassandraOperations#delete(java.lang.Object, org.springframework.data.cassandra.core.QueryOptions) */ @@ -234,19 +202,7 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr */ @Override public void delete(T entity, String tableName) { - - delete(entity, tableName, Collections. emptyMap()); - } - - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.CassandraOperations#delete(java.lang.Object, java.lang.String, java.util.Map) - */ - @Override - public void delete(T entity, String tableName, Map optionsByName) { - Assert.notNull(entity); - Assert.notNull(tableName); - Assert.notNull(optionsByName); - doDelete(tableName, entity, optionsByName, false); + delete(entity, tableName, null); } /* (non-Javadoc) @@ -254,7 +210,9 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr */ @Override public void delete(T entity, String tableName, QueryOptions options) { - delete(entity, tableName, options.toMap()); + Assert.notNull(entity); + Assert.notNull(tableName); + doDelete(tableName, entity, options, false); } /* (non-Javadoc) @@ -267,16 +225,6 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr deleteAsynchronously(entities, tableName); } - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsynchronously(java.util.List, java.util.Map) - */ - @Override - public void deleteAsynchronously(List entities, Map optionsByName) { - String tableName = getTableName(entities.get(0).getClass()); - Assert.notNull(tableName); - deleteAsynchronously(entities, tableName, optionsByName); - } - /* (non-Javadoc) * @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsynchronously(java.util.List, org.springframework.data.cassandra.core.QueryOptions) */ @@ -292,20 +240,7 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr */ @Override public void deleteAsynchronously(List entities, String tableName) { - - insertAsynchronously(entities, tableName, Collections. emptyMap()); - } - - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsynchronously(java.util.List, java.lang.String, java.util.Map) - */ - @Override - public void deleteAsynchronously(List entities, String tableName, Map optionsByName) { - Assert.notNull(entities); - Assert.notEmpty(entities); - Assert.notNull(tableName); - Assert.notNull(optionsByName); - doBatchDelete(tableName, entities, optionsByName, true); + deleteAsynchronously(entities, tableName, null); } /* (non-Javadoc) @@ -313,7 +248,10 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr */ @Override public void deleteAsynchronously(List entities, String tableName, QueryOptions options) { - deleteAsynchronously(entities, tableName, options.toMap()); + Assert.notNull(entities); + Assert.notEmpty(entities); + Assert.notNull(tableName); + doBatchDelete(tableName, entities, options, true); } /* (non-Javadoc) @@ -326,16 +264,6 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr deleteAsynchronously(entity, tableName); } - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsynchronously(java.lang.Object, java.util.Map) - */ - @Override - public void deleteAsynchronously(T entity, Map optionsByName) { - String tableName = getTableName(entity.getClass()); - Assert.notNull(tableName); - deleteAsynchronously(entity, tableName, optionsByName); - } - /* (non-Javadoc) * @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsynchronously(java.lang.Object, org.springframework.data.cassandra.core.QueryOptions) */ @@ -351,19 +279,7 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr */ @Override public void deleteAsynchronously(T entity, String tableName) { - - deleteAsynchronously(entity, tableName, Collections. emptyMap()); - } - - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsynchronously(java.lang.Object, java.lang.String, java.util.Map) - */ - @Override - public void deleteAsynchronously(T entity, String tableName, Map optionsByName) { - Assert.notNull(entity); - Assert.notNull(tableName); - Assert.notNull(optionsByName); - doDelete(tableName, entity, optionsByName, true); + deleteAsynchronously(entity, tableName, null); } /* (non-Javadoc) @@ -371,7 +287,9 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr */ @Override public void deleteAsynchronously(T entity, String tableName, QueryOptions options) { - deleteAsynchronously(entity, tableName, options.toMap()); + Assert.notNull(entity); + Assert.notNull(tableName); + doDelete(tableName, entity, options, true); } /** @@ -419,16 +337,6 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr return insert(entities, tableName); } - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.CassandraOperations#insert(java.util.List, java.util.Map) - */ - @Override - public List insert(List entities, Map optionsByName) { - String tableName = getTableName(entities.get(0).getClass()); - Assert.notNull(tableName); - return insert(entities, tableName, optionsByName); - } - /* (non-Javadoc) * @see org.springframework.data.cassandra.core.CassandraOperations#insert(java.util.List, org.springframework.data.cassandra.core.QueryOptions) */ @@ -444,20 +352,7 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr */ @Override public List insert(List entities, String tableName) { - - return insert(entities, tableName, Collections. emptyMap()); - } - - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.CassandraOperations#insert(java.util.List, java.lang.String, java.util.Map) - */ - @Override - public List insert(List entities, String tableName, Map optionsByName) { - Assert.notNull(entities); - Assert.notEmpty(entities); - Assert.notNull(tableName); - Assert.notNull(optionsByName); - return doBatchInsert(tableName, entities, optionsByName, false); + return insert(entities, tableName, null); } /* (non-Javadoc) @@ -465,7 +360,10 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr */ @Override public List insert(List entities, String tableName, QueryOptions options) { - return insert(entities, tableName, options.toMap()); + Assert.notNull(entities); + Assert.notEmpty(entities); + Assert.notNull(tableName); + return doBatchInsert(tableName, entities, options, false); } /* (non-Javadoc) @@ -478,16 +376,6 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr return insert(entity, tableName); } - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.CassandraOperations#insert(java.lang.Object, java.util.Map) - */ - @Override - public T insert(T entity, Map optionsByName) { - String tableName = determineTableName(entity); - Assert.notNull(tableName); - return insert(entity, tableName, optionsByName); - } - /* (non-Javadoc) * @see org.springframework.data.cassandra.core.CassandraOperations#insert(java.lang.Object, org.springframework.data.cassandra.core.QueryOptions) */ @@ -503,19 +391,7 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr */ @Override public T insert(T entity, String tableName) { - - return insert(entity, tableName, Collections. emptyMap()); - } - - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.CassandraOperations#insert(java.lang.Object, java.lang.String, java.util.Map) - */ - @Override - public T insert(T entity, String tableName, Map optionsByName) { - Assert.notNull(entity); - Assert.notNull(tableName); - ensureNotIterable(entity); - return doInsert(tableName, entity, optionsByName, false); + return insert(entity, tableName, null); } /* (non-Javadoc) @@ -523,7 +399,10 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr */ @Override public T insert(T entity, String tableName, QueryOptions options) { - return insert(entity, tableName, options.toMap()); + Assert.notNull(entity); + Assert.notNull(tableName); + ensureNotIterable(entity); + return doInsert(tableName, entity, options, false); } /* (non-Javadoc) @@ -536,16 +415,6 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr return insertAsynchronously(entities, tableName); } - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.CassandraOperations#insertAsynchronously(java.util.List, java.util.Map) - */ - @Override - public List insertAsynchronously(List entities, Map optionsByName) { - String tableName = getTableName(entities.get(0).getClass()); - Assert.notNull(tableName); - return insertAsynchronously(entities, tableName, optionsByName); - } - /* (non-Javadoc) * @see org.springframework.data.cassandra.core.CassandraOperations#insertAsynchronously(java.util.List, org.springframework.data.cassandra.core.QueryOptions) */ @@ -561,20 +430,7 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr */ @Override public List insertAsynchronously(List entities, String tableName) { - - return insertAsynchronously(entities, tableName, Collections. emptyMap()); - } - - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.CassandraOperations#insertAsynchronously(java.util.List, java.lang.String, java.util.Map) - */ - @Override - public List insertAsynchronously(List entities, String tableName, Map optionsByName) { - Assert.notNull(entities); - Assert.notEmpty(entities); - Assert.notNull(tableName); - Assert.notNull(optionsByName); - return doBatchInsert(tableName, entities, optionsByName, true); + return insertAsynchronously(entities, tableName, null); } /* (non-Javadoc) @@ -582,7 +438,10 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr */ @Override public List insertAsynchronously(List entities, String tableName, QueryOptions options) { - return insertAsynchronously(entities, tableName, options.toMap()); + Assert.notNull(entities); + Assert.notEmpty(entities); + Assert.notNull(tableName); + return doBatchInsert(tableName, entities, options, true); } /* (non-Javadoc) @@ -595,16 +454,6 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr return insertAsynchronously(entity, tableName); } - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.CassandraOperations#insertAsynchronously(java.lang.Object, java.util.Map) - */ - @Override - public T insertAsynchronously(T entity, Map optionsByName) { - String tableName = determineTableName(entity); - Assert.notNull(tableName); - return insertAsynchronously(entity, tableName, optionsByName); - } - /* (non-Javadoc) * @see org.springframework.data.cassandra.core.CassandraOperations#insertAsynchronously(java.lang.Object, org.springframework.data.cassandra.core.QueryOptions) */ @@ -620,22 +469,7 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr */ @Override public T insertAsynchronously(T entity, String tableName) { - - return insertAsynchronously(entity, tableName, Collections. emptyMap()); - } - - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.CassandraOperations#insertAsynchronously(java.lang.Object, java.lang.String, java.util.Map) - */ - @Override - public T insertAsynchronously(T entity, String tableName, Map optionsByName) { - Assert.notNull(entity); - Assert.notNull(tableName); - Assert.notNull(optionsByName); - - ensureNotIterable(entity); - - return doInsert(tableName, entity, optionsByName, true); + return insertAsynchronously(entity, tableName, null); } /* (non-Javadoc) @@ -643,7 +477,12 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr */ @Override public T insertAsynchronously(T entity, String tableName, QueryOptions options) { - return insertAsynchronously(entity, tableName, options.toMap()); + Assert.notNull(entity); + Assert.notNull(tableName); + + ensureNotIterable(entity); + + return doInsert(tableName, entity, options, true); } /* (non-Javadoc) @@ -688,16 +527,6 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr return update(entities, tableName); } - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.CassandraOperations#update(java.util.List, java.util.Map) - */ - @Override - public List update(List entities, Map optionsByName) { - String tableName = getTableName(entities.get(0).getClass()); - Assert.notNull(tableName); - return update(entities, tableName, optionsByName); - } - /* (non-Javadoc) * @see org.springframework.data.cassandra.core.CassandraOperations#update(java.util.List, org.springframework.data.cassandra.core.QueryOptions) */ @@ -713,20 +542,7 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr */ @Override public List update(List entities, String tableName) { - - return update(entities, tableName, Collections. emptyMap()); - } - - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.CassandraOperations#update(java.util.List, java.lang.String, java.util.Map) - */ - @Override - public List update(List entities, String tableName, Map optionsByName) { - Assert.notNull(entities); - Assert.notEmpty(entities); - Assert.notNull(tableName); - Assert.notNull(optionsByName); - return doBatchUpdate(tableName, entities, optionsByName, false); + return update(entities, tableName, null); } /* (non-Javadoc) @@ -734,7 +550,10 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr */ @Override public List update(List entities, String tableName, QueryOptions options) { - return update(entities, tableName, options.toMap()); + Assert.notNull(entities); + Assert.notEmpty(entities); + Assert.notNull(tableName); + return doBatchUpdate(tableName, entities, options, false); } /* (non-Javadoc) @@ -747,16 +566,6 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr return update(entity, tableName); } - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.CassandraOperations#update(java.lang.Object, java.util.Map) - */ - @Override - public T update(T entity, Map optionsByName) { - String tableName = getTableName(entity.getClass()); - Assert.notNull(tableName); - return update(entity, tableName, optionsByName); - } - /* (non-Javadoc) * @see org.springframework.data.cassandra.core.CassandraOperations#update(java.lang.Object, org.springframework.data.cassandra.core.QueryOptions) */ @@ -772,19 +581,7 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr */ @Override public T update(T entity, String tableName) { - - return update(entity, tableName, Collections. emptyMap()); - } - - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.CassandraOperations#update(java.lang.Object, java.lang.String, java.util.Map) - */ - @Override - public T update(T entity, String tableName, Map optionsByName) { - Assert.notNull(entity); - Assert.notNull(tableName); - Assert.notNull(optionsByName); - return doUpdate(tableName, entity, optionsByName, false); + return update(entity, tableName, null); } /* (non-Javadoc) @@ -792,7 +589,9 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr */ @Override public T update(T entity, String tableName, QueryOptions options) { - return update(entity, tableName, options.toMap()); + Assert.notNull(entity); + Assert.notNull(tableName); + return doUpdate(tableName, entity, options, false); } /* (non-Javadoc) @@ -805,16 +604,6 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr return updateAsynchronously(entities, tableName); } - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.CassandraOperations#updateAsynchronously(java.util.List, java.util.Map) - */ - @Override - public List updateAsynchronously(List entities, Map optionsByName) { - String tableName = getTableName(entities.get(0).getClass()); - Assert.notNull(tableName); - return updateAsynchronously(entities, tableName, optionsByName); - } - /* (non-Javadoc) * @see org.springframework.data.cassandra.core.CassandraOperations#updateAsynchronously(java.util.List, org.springframework.data.cassandra.core.QueryOptions) */ @@ -830,20 +619,7 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr */ @Override public List updateAsynchronously(List entities, String tableName) { - - return updateAsynchronously(entities, tableName, Collections. emptyMap()); - } - - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.CassandraOperations#updateAsynchronously(java.util.List, java.lang.String, java.util.Map) - */ - @Override - public List updateAsynchronously(List entities, String tableName, Map optionsByName) { - Assert.notNull(entities); - Assert.notEmpty(entities); - Assert.notNull(tableName); - Assert.notNull(optionsByName); - return doBatchUpdate(tableName, entities, optionsByName, true); + return updateAsynchronously(entities, tableName, null); } /* (non-Javadoc) @@ -851,7 +627,10 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr */ @Override public List updateAsynchronously(List entities, String tableName, QueryOptions options) { - return updateAsynchronously(entities, tableName, options.toMap()); + Assert.notNull(entities); + Assert.notEmpty(entities); + Assert.notNull(tableName); + return doBatchUpdate(tableName, entities, options, true); } /* (non-Javadoc) @@ -864,16 +643,6 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr return updateAsynchronously(entity, tableName); } - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.CassandraOperations#updateAsynchronously(java.lang.Object, java.util.Map) - */ - @Override - public T updateAsynchronously(T entity, Map optionsByName) { - String tableName = getTableName(entity.getClass()); - Assert.notNull(tableName); - return updateAsynchronously(entity, tableName, optionsByName); - } - /* (non-Javadoc) * @see org.springframework.data.cassandra.core.CassandraOperations#updateAsynchronously(java.lang.Object, org.springframework.data.cassandra.core.QueryOptions) */ @@ -890,18 +659,7 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr @Override public T updateAsynchronously(T entity, String tableName) { - return updateAsynchronously(entity, tableName, Collections. emptyMap()); - } - - /* (non-Javadoc) - * @see org.springframework.data.cassandra.core.CassandraOperations#updateAsynchronously(java.lang.Object, java.lang.String, java.util.Map) - */ - @Override - public T updateAsynchronously(T entity, String tableName, Map optionsByName) { - Assert.notNull(entity); - Assert.notNull(tableName); - Assert.notNull(optionsByName); - return doUpdate(tableName, entity, optionsByName, true); + return updateAsynchronously(entity, tableName, null); } /* (non-Javadoc) @@ -909,7 +667,9 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr */ @Override public T updateAsynchronously(T entity, String tableName, QueryOptions options) { - return updateAsynchronously(entity, tableName, options.toMap()); + Assert.notNull(entity); + Assert.notNull(tableName); + return doUpdate(tableName, entity, options, true); } /** @@ -1026,14 +786,14 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr * @param tableName * @param objectToRemove */ - protected void doBatchDelete(final String tableName, final List entities, Map optionsByName, + protected void doBatchDelete(final String tableName, final List entities, final QueryOptions options, final boolean deleteAsynchronously) { Assert.notEmpty(entities); try { - final Batch b = CqlUtils.toDeleteBatchQuery(keyspace, tableName, entities, optionsByName, cassandraConverter); + final Batch b = CqlUtils.toDeleteBatchQuery(keyspace, tableName, entities, options, cassandraConverter); logger.info(b.toString()); doExecute(new SessionCallback() { @@ -1067,14 +827,14 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr * @param insertAsychronously * @return */ - protected List doBatchInsert(final String tableName, final List entities, - Map optionsByName, final boolean insertAsychronously) { + protected List doBatchInsert(final String tableName, final List entities, final QueryOptions options, + final boolean insertAsychronously) { Assert.notEmpty(entities); try { - final Batch b = CqlUtils.toInsertBatchQuery(keyspace, tableName, entities, optionsByName, cassandraConverter); + final Batch b = CqlUtils.toInsertBatchQuery(keyspace, tableName, entities, options, cassandraConverter); logger.info(b.getQueryString()); return doExecute(new SessionCallback>() { @@ -1108,14 +868,14 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr * @param updateAsychronously * @return */ - protected List doBatchUpdate(final String tableName, final List entities, - Map optionsByName, final boolean updateAsychronously) { + protected List doBatchUpdate(final String tableName, final List entities, final QueryOptions options, + final boolean updateAsychronously) { Assert.notEmpty(entities); try { - final Batch b = CqlUtils.toUpdateBatchQuery(keyspace, tableName, entities, optionsByName, cassandraConverter); + final Batch b = CqlUtils.toUpdateBatchQuery(keyspace, tableName, entities, options, cassandraConverter); logger.info(b.toString()); return doExecute(new SessionCallback>() { @@ -1146,12 +906,12 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr * @param tableName * @param objectToRemove */ - protected void doDelete(final String tableName, final T objectToRemove, Map optionsByName, + protected void doDelete(final String tableName, final T objectToRemove, final QueryOptions options, final boolean deleteAsynchronously) { try { - final Query q = CqlUtils.toDeleteQuery(keyspace, tableName, objectToRemove, optionsByName, cassandraConverter); + final Query q = CqlUtils.toDeleteQuery(keyspace, tableName, objectToRemove, options, cassandraConverter); logger.info(q.toString()); doExecute(new SessionCallback() { @@ -1201,12 +961,12 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr * @param tableName * @param entity */ - protected T doInsert(final String tableName, final T entity, final Map optionsByName, + protected T doInsert(final String tableName, final T entity, final QueryOptions options, final boolean insertAsychronously) { try { - final Query q = CqlUtils.toInsertQuery(keyspace, tableName, entity, optionsByName, cassandraConverter); + final Query q = CqlUtils.toInsertQuery(keyspace, tableName, entity, options, cassandraConverter); logger.info(q.toString()); if (q.getConsistencyLevel() != null) { @@ -1248,12 +1008,12 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr * @param updateAsychronously * @return */ - protected T doUpdate(final String tableName, final T entity, final Map optionsByName, + protected T doUpdate(final String tableName, final T entity, final QueryOptions options, final boolean updateAsychronously) { try { - final Query q = CqlUtils.toUpdateQuery(keyspace, tableName, entity, optionsByName, cassandraConverter); + final Query q = CqlUtils.toUpdateQuery(keyspace, tableName, entity, options, cassandraConverter); logger.info(q.toString()); return doExecute(new SessionCallback() { diff --git a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/util/CqlUtils.java b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/util/CqlUtils.java index 1da50f119..550a6d754 100644 --- a/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/util/CqlUtils.java +++ b/spring-data-cassandra/src/main/java/org/springframework/data/cassandra/util/CqlUtils.java @@ -2,15 +2,11 @@ package org.springframework.data.cassandra.util; import java.util.ArrayList; import java.util.List; -import java.util.Map; import org.slf4j.Logger; import org.slf4j.LoggerFactory; -import org.springframework.cassandra.core.ConsistencyLevel; -import org.springframework.cassandra.core.ConsistencyLevelResolver; +import org.springframework.cassandra.core.CassandraTemplate; import org.springframework.cassandra.core.QueryOptions; -import org.springframework.cassandra.core.RetryPolicy; -import org.springframework.cassandra.core.RetryPolicyResolver; import org.springframework.cassandra.core.cql.generator.CreateTableCqlGenerator; import org.springframework.cassandra.core.keyspace.CreateTableSpecification; import org.springframework.data.cassandra.convert.CassandraConverter; @@ -155,7 +151,7 @@ public abstract class CqlUtils { * @throws EntityWriterException */ public static Query toInsertQuery(String keyspaceName, String tableName, final Object objectToSave, - Map optionsByName, EntityWriter entityWriter) throws EntityWriterException { + QueryOptions options, EntityWriter entityWriter) throws EntityWriterException { final Insert q = QueryBuilder.insertInto(keyspaceName, tableName); @@ -167,13 +163,13 @@ public abstract class CqlUtils { /* * Add Query Options */ - addQueryOptions(q, optionsByName); + CassandraTemplate.addQueryOptions(q, options); /* * Add TTL to Insert object */ - if (optionsByName.get(QueryOptions.QueryOptionMapKeys.TTL) != null) { - q.using(QueryBuilder.ttl((Integer) optionsByName.get(QueryOptions.QueryOptionMapKeys.TTL))); + if (options != null && options.getTtl() != null) { + q.using(QueryBuilder.ttl(options.getTtl())); } return q; @@ -193,7 +189,7 @@ public abstract class CqlUtils { * @throws EntityWriterException */ public static Query toUpdateQuery(String keyspaceName, String tableName, final Object objectToSave, - Map optionsByName, EntityWriter entityWriter) throws EntityWriterException { + QueryOptions options, EntityWriter entityWriter) throws EntityWriterException { final Update q = QueryBuilder.update(keyspaceName, tableName); @@ -205,13 +201,13 @@ public abstract class CqlUtils { /* * Add Query Options */ - addQueryOptions(q, optionsByName); + CassandraTemplate.addQueryOptions(q, options); /* * Add TTL to Insert object */ - if (optionsByName.get(QueryOptions.QueryOptionMapKeys.TTL) != null) { - q.using(QueryBuilder.ttl((Integer) optionsByName.get(QueryOptions.QueryOptionMapKeys.TTL))); + if (options != null && options.getTtl() != null) { + q.using(QueryBuilder.ttl(options.getTtl())); } return q; @@ -231,7 +227,7 @@ public abstract class CqlUtils { * @throws EntityWriterException */ public static Batch toUpdateBatchQuery(final String keyspaceName, final String tableName, - final List objectsToSave, Map optionsByName, EntityWriter entityWriter) + final List objectsToSave, QueryOptions options, EntityWriter entityWriter) throws EntityWriterException { /* @@ -241,11 +237,14 @@ public abstract class CqlUtils { for (final T objectToSave : objectsToSave) { - b.add((Statement) toUpdateQuery(keyspaceName, tableName, objectToSave, optionsByName, entityWriter)); + b.add((Statement) toUpdateQuery(keyspaceName, tableName, objectToSave, options, entityWriter)); } - addQueryOptions(b, optionsByName); + /* + * Add Query Options + */ + CassandraTemplate.addQueryOptions(b, options); return b; @@ -264,7 +263,7 @@ public abstract class CqlUtils { * @throws EntityWriterException */ public static Batch toInsertBatchQuery(final String keyspaceName, final String tableName, - final List objectsToSave, Map optionsByName, EntityWriter entityWriter) + final List objectsToSave, QueryOptions options, EntityWriter entityWriter) throws EntityWriterException { /* @@ -274,11 +273,14 @@ public abstract class CqlUtils { for (final T objectToSave : objectsToSave) { - b.add((Statement) toInsertQuery(keyspaceName, tableName, objectToSave, optionsByName, entityWriter)); + b.add((Statement) toInsertQuery(keyspaceName, tableName, objectToSave, options, entityWriter)); } - addQueryOptions(b, optionsByName); + /* + * Add Query Options + */ + CassandraTemplate.addQueryOptions(b, options); return b; @@ -296,7 +298,7 @@ public abstract class CqlUtils { * @throws EntityWriterException */ public static Query toDeleteQuery(String keyspace, String tableName, final Object objectToRemove, - Map optionsByName, EntityWriter entityWriter) throws EntityWriterException { + QueryOptions options, EntityWriter entityWriter) throws EntityWriterException { final Delete.Selection ds = QueryBuilder.delete(); final Delete q = ds.from(keyspace, tableName); @@ -307,7 +309,7 @@ public abstract class CqlUtils { */ entityWriter.write(objectToRemove, w); - addQueryOptions(q, optionsByName); + CassandraTemplate.addQueryOptions(q, options); return q; @@ -363,7 +365,7 @@ public abstract class CqlUtils { * @throws EntityWriterException */ public static Batch toDeleteBatchQuery(String keyspaceName, String tableName, List entities, - Map optionsByName, EntityWriter entityWriter) throws EntityWriterException { + QueryOptions options, EntityWriter entityWriter) throws EntityWriterException { /* * Return variable is a Batch statement @@ -372,40 +374,14 @@ public abstract class CqlUtils { for (final T objectToSave : entities) { - b.add((Statement) toDeleteQuery(keyspaceName, tableName, objectToSave, optionsByName, entityWriter)); + b.add((Statement) toDeleteQuery(keyspaceName, tableName, objectToSave, options, entityWriter)); } - addQueryOptions(b, optionsByName); + CassandraTemplate.addQueryOptions(b, options); return b; } - /** - * Add common Query options for all types of queries. - * - * @param q - * @param optionsByName - */ - private static void addQueryOptions(Query q, Map optionsByName) { - - if (optionsByName == null) { - return; - } - - /* - * Add Query Options - */ - if (optionsByName.get(QueryOptions.QueryOptionMapKeys.CONSISTENCY_LEVEL) != null) { - q.setConsistencyLevel(ConsistencyLevelResolver.resolve((ConsistencyLevel) optionsByName - .get(QueryOptions.QueryOptionMapKeys.CONSISTENCY_LEVEL))); - } - if (optionsByName.get(QueryOptions.QueryOptionMapKeys.RETRY_POLICY) != null) { - q.setRetryPolicy(RetryPolicyResolver.resolve((RetryPolicy) optionsByName - .get(QueryOptions.QueryOptionMapKeys.RETRY_POLICY))); - } - - } - } diff --git a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/template/CassandraDataOperationsTest.java b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/template/CassandraDataOperationsTest.java index 85951bc10..9a462246e 100644 --- a/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/template/CassandraDataOperationsTest.java +++ b/spring-data-cassandra/src/test/java/org/springframework/data/cassandra/test/integration/template/CassandraDataOperationsTest.java @@ -22,8 +22,6 @@ import java.util.List; import java.util.Map; import java.util.UUID; -import junit.framework.Assert; - import org.apache.cassandra.exceptions.ConfigurationException; import org.apache.thrift.transport.TTransportException; import org.cassandraunit.CassandraCQLUnit; @@ -33,6 +31,7 @@ import org.cassandraunit.dataset.yaml.ClassPathYamlDataSet; import org.cassandraunit.utils.EmbeddedCassandraServerHelper; import org.junit.After; import org.junit.AfterClass; +import org.junit.Assert; import org.junit.BeforeClass; import org.junit.Rule; import org.junit.Test; @@ -128,22 +127,6 @@ public class CassandraDataOperationsTest { cassandraDataTemplate.insert(b3, "book", options); - /* - * Test Single Insert with entity - */ - Book b4 = new Book(); - b4.setIsbn("123456-4"); - b4.setTitle("Spring Data Cassandra Guide"); - b4.setAuthor("Cassandra Guru"); - b4.setPages(465); - - Map optionsByName = new HashMap(); - optionsByName.put(QueryOptions.QueryOptionMapKeys.CONSISTENCY_LEVEL, ConsistencyLevel.ALL); - optionsByName.put(QueryOptions.QueryOptionMapKeys.RETRY_POLICY, RetryPolicy.FALLTHROUGH); - optionsByName.put(QueryOptions.QueryOptionMapKeys.TTL, 30); - - cassandraDataTemplate.insert(b4, "book", optionsByName); - /* * Test Single Insert with entity */ @@ -155,17 +138,6 @@ public class CassandraDataOperationsTest { cassandraDataTemplate.insert(b5, options); - /* - * Test Single Insert with entity - */ - Book b6 = new Book(); - b6.setIsbn("123456-6"); - b6.setTitle("Spring Data Cassandra Guide"); - b6.setAuthor("Cassandra Guru"); - b6.setPages(465); - - cassandraDataTemplate.insert(b6, optionsByName); - } @Test @@ -214,13 +186,6 @@ public class CassandraDataOperationsTest { b4.setAuthor("Cassandra Guru"); b4.setPages(465); - Map optionsByName = new HashMap(); - optionsByName.put(QueryOptions.QueryOptionMapKeys.CONSISTENCY_LEVEL, ConsistencyLevel.ALL); - optionsByName.put(QueryOptions.QueryOptionMapKeys.RETRY_POLICY, RetryPolicy.FALLTHROUGH); - optionsByName.put(QueryOptions.QueryOptionMapKeys.TTL, 30); - - cassandraDataTemplate.insertAsynchronously(b4, "book", optionsByName); - /* * Test Single Insert with entity */ @@ -232,17 +197,6 @@ public class CassandraDataOperationsTest { cassandraDataTemplate.insertAsynchronously(b5, options); - /* - * Test Single Insert with entity - */ - Book b6 = new Book(); - b6.setIsbn("123456-6"); - b6.setTitle("Spring Data Cassandra Guide"); - b6.setAuthor("Cassandra Guru"); - b6.setPages(465); - - cassandraDataTemplate.insertAsynchronously(b6, optionsByName); - } @Test @@ -273,16 +227,8 @@ public class CassandraDataOperationsTest { books = getBookList(20); - cassandraDataTemplate.insert(books, "book", optionsByName); - - books = getBookList(20); - cassandraDataTemplate.insert(books, options); - books = getBookList(20); - - cassandraDataTemplate.insert(books, optionsByName); - } @Test @@ -313,16 +259,8 @@ public class CassandraDataOperationsTest { books = getBookList(20); - cassandraDataTemplate.insertAsynchronously(books, "book", optionsByName); - - books = getBookList(20); - cassandraDataTemplate.insertAsynchronously(books, options); - books = getBookList(20); - - cassandraDataTemplate.insertAsynchronously(books, optionsByName); - } /** @@ -389,17 +327,6 @@ public class CassandraDataOperationsTest { cassandraDataTemplate.update(b3, "book", options); - /* - * Test Single Insert with entity - */ - Book b4 = new Book(); - b4.setIsbn("123456-4"); - b4.setTitle("Spring Data Cassandra Book"); - b4.setAuthor("Cassandra Guru"); - b4.setPages(465); - - cassandraDataTemplate.update(b4, "book", optionsByName); - /* * Test Single Insert with entity */ @@ -411,17 +338,6 @@ public class CassandraDataOperationsTest { cassandraDataTemplate.update(b5, options); - /* - * Test Single Insert with entity - */ - Book b6 = new Book(); - b6.setIsbn("123456-6"); - b6.setTitle("Spring Data Cassandra Book"); - b6.setAuthor("Cassandra Guru"); - b6.setPages(465); - - cassandraDataTemplate.update(b6, optionsByName); - } @Test @@ -468,17 +384,6 @@ public class CassandraDataOperationsTest { cassandraDataTemplate.updateAsynchronously(b3, "book", options); - /* - * Test Single Insert with entity - */ - Book b4 = new Book(); - b4.setIsbn("123456-4"); - b4.setTitle("Spring Data Cassandra Book"); - b4.setAuthor("Cassandra Guru"); - b4.setPages(465); - - cassandraDataTemplate.updateAsynchronously(b4, "book", optionsByName); - /* * Test Single Insert with entity */ @@ -490,17 +395,6 @@ public class CassandraDataOperationsTest { cassandraDataTemplate.updateAsynchronously(b5, options); - /* - * Test Single Insert with entity - */ - Book b6 = new Book(); - b6.setIsbn("123456-6"); - b6.setTitle("Spring Data Cassandra Book"); - b6.setAuthor("Cassandra Guru"); - b6.setPages(465); - - cassandraDataTemplate.updateAsynchronously(b6, optionsByName); - } @Test @@ -543,28 +437,12 @@ public class CassandraDataOperationsTest { books = getBookList(20); - cassandraDataTemplate.insert(books, "book", optionsByName); - - alterBooks(books); - - cassandraDataTemplate.update(books, "book", optionsByName); - - books = getBookList(20); - cassandraDataTemplate.insert(books, options); alterBooks(books); cassandraDataTemplate.update(books, options); - books = getBookList(20); - - cassandraDataTemplate.insert(books, optionsByName); - - alterBooks(books); - - cassandraDataTemplate.update(books, optionsByName); - } @Test @@ -607,28 +485,12 @@ public class CassandraDataOperationsTest { books = getBookList(20); - cassandraDataTemplate.insert(books, "book", optionsByName); - - alterBooks(books); - - cassandraDataTemplate.updateAsynchronously(books, "book", optionsByName); - - books = getBookList(20); - cassandraDataTemplate.insert(books, options); alterBooks(books); cassandraDataTemplate.updateAsynchronously(books, options); - books = getBookList(20); - - cassandraDataTemplate.insert(books, optionsByName); - - alterBooks(books); - - cassandraDataTemplate.updateAsynchronously(books, optionsByName); - } /** @@ -677,14 +539,6 @@ public class CassandraDataOperationsTest { cassandraDataTemplate.delete(b3, "book", options); - /* - * Test Single Insert with entity - */ - Book b4 = new Book(); - b4.setIsbn("123456-4"); - - cassandraDataTemplate.delete(b4, "book", optionsByName); - /* * Test Single Insert with entity */ @@ -693,14 +547,6 @@ public class CassandraDataOperationsTest { cassandraDataTemplate.delete(b5, options); - /* - * Test Single Insert with entity - */ - Book b6 = new Book(); - b6.setIsbn("123456-6"); - - cassandraDataTemplate.delete(b6, optionsByName); - } @Test @@ -737,14 +583,6 @@ public class CassandraDataOperationsTest { cassandraDataTemplate.deleteAsynchronously(b3, "book", options); - /* - * Test Single Insert with entity - */ - Book b4 = new Book(); - b4.setIsbn("123456-4"); - - cassandraDataTemplate.deleteAsynchronously(b4, "book", optionsByName); - /* * Test Single Insert with entity */ @@ -753,13 +591,6 @@ public class CassandraDataOperationsTest { cassandraDataTemplate.deleteAsynchronously(b5, options); - /* - * Test Single Insert with entity - */ - Book b6 = new Book(); - b6.setIsbn("123456-6"); - - cassandraDataTemplate.deleteAsynchronously(b6, optionsByName); } @Test @@ -796,22 +627,10 @@ public class CassandraDataOperationsTest { books = getBookList(20); - cassandraDataTemplate.insert(books, "book", optionsByName); - - cassandraDataTemplate.delete(books, "book", optionsByName); - - books = getBookList(20); - cassandraDataTemplate.insert(books, options); cassandraDataTemplate.delete(books, options); - books = getBookList(20); - - cassandraDataTemplate.insert(books, optionsByName); - - cassandraDataTemplate.delete(books, optionsByName); - } @Test @@ -848,22 +667,10 @@ public class CassandraDataOperationsTest { books = getBookList(20); - cassandraDataTemplate.insert(books, "book", optionsByName); - - cassandraDataTemplate.deleteAsynchronously(books, "book", optionsByName); - - books = getBookList(20); - cassandraDataTemplate.insert(books, options); cassandraDataTemplate.deleteAsynchronously(books, options); - books = getBookList(20); - - cassandraDataTemplate.insert(books, optionsByName); - - cassandraDataTemplate.deleteAsynchronously(books, optionsByName); - } @Test