Merge branch 'master' into DATACASS-14

This commit is contained in:
Matthew Adams
2013-12-09 15:10:26 -06:00
6 changed files with 229 additions and 1253 deletions

View File

@@ -66,19 +66,6 @@ public interface CassandraOperations {
*/
<T> T query(final String cql, ResultSetExtractor<T> 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> T query(final String cql, ResultSetExtractor<T> rse, final Map<String, Object> optionsByName)
throws DataAccessException;
/**
* Executes the provided CQL Query, and extracts the results with the ResultSetExtractor.
*
@@ -101,18 +88,6 @@ public interface CassandraOperations {
*/
<T> T queryAsynchronously(final String cql, ResultSetFutureExtractor<T> 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> T queryAsynchronously(final String cql, ResultSetFutureExtractor<T> rse, final Map<String, Object> 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 <code>RowCallbackHandler</code>.
*
* @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<String, Object> optionsByName)
throws DataAccessException;
/**
* Executes the provided CQL Query, and then processes the results with the <code>RowCallbackHandler</code>.
*
@@ -176,18 +140,6 @@ public interface CassandraOperations {
*/
<T> List<T> query(final String cql, RowMapper<T> 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 <T> processed by the RowMapper
* @throws DataAccessException
*/
<T> List<T> query(final String cql, RowMapper<T> rowMapper, final Map<String, Object> 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> T query(final String cql, PreparedStatementBinder psb, ResultSetExtractor<T> rse) throws DataAccessException;
<T> T query(final String cql, PreparedStatementBinder psb, ResultSetExtractor<T> rse,
final Map<String, Object> optionsByName) throws DataAccessException;
<T> T query(final String cql, PreparedStatementBinder psb, ResultSetExtractor<T> 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<String, Object> 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 {
*/
<T> List<T> query(final String cql, PreparedStatementBinder psb, RowMapper<T> 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 <T> 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 <T>
* @param optionsByName The Query Options Map
* @return List of <T> for each Row returned from the Query.
* @throws DataAccessException
*/
<T> List<T> query(final String cql, PreparedStatementBinder psb, RowMapper<T> rowMapper,
final Map<String, Object> 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> T query(PreparedStatementCreator psc, ResultSetExtractor<T> rse) throws DataAccessException;
/**
* Uses the provided PreparedStatementCreator to prepare a new Session call. <b>This can only be used for CQL
* Statements that do not have data binding.</b> 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 <T> which is the output of the ResultSetExtractor
* @throws DataAccessException
*/
<T> T query(PreparedStatementCreator psc, ResultSetExtractor<T> rse, final Map<String, Object> optionsByName)
throws DataAccessException;
/**
* Uses the provided PreparedStatementCreator to prepare a new Session call. <b>This can only be used for CQL
* Statements that do not have data binding.</b> 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. <b>This can only be used for CQL
* Statements that do not have data binding.</b> 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<String, Object> optionsByName)
throws DataAccessException;
/**
* Uses the provided PreparedStatementCreator to prepare a new Session call. <b>This can only be used for CQL
* Statements that do not have data binding.</b> The results of the PreparedStatement are processed with
@@ -544,20 +436,6 @@ public interface CassandraOperations {
*/
<T> List<T> query(PreparedStatementCreator psc, RowMapper<T> rowMapper) throws DataAccessException;
/**
* Uses the provided PreparedStatementCreator to prepare a new Session call. <b>This can only be used for CQL
* Statements that do not have data binding.</b> The results of the PreparedStatement are processed with RowMapper
* implementation provided and a List is returned with elements of Type <T> 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 <T> mapped from each Row in the Results
* @throws DataAccessException
*/
<T> List<T> query(PreparedStatementCreator psc, RowMapper<T> rowMapper, final Map<String, Object> optionsByName)
throws DataAccessException;
/**
* Uses the provided PreparedStatementCreator to prepare a new Session call. <b>This can only be used for CQL
* Statements that do not have data binding.</b> The results of the PreparedStatement are processed with RowMapper
@@ -572,21 +450,6 @@ public interface CassandraOperations {
<T> List<T> query(PreparedStatementCreator psc, RowMapper<T> 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 <T> which is the output of the ResultSetExtractor
* @throws DataAccessException
*/
<T> T query(PreparedStatementCreator psc, final PreparedStatementBinder psb, final ResultSetExtractor<T> rse,
final Map<String, Object> 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> T query(PreparedStatementCreator psc, final PreparedStatementBinder psb, final ResultSetExtractor<T> 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 <T> which is the output of the ResultSetExtractor
* @throws DataAccessException
*/
void query(PreparedStatementCreator psc, final PreparedStatementBinder psb, final RowCallbackHandler rch,
final Map<String, Object> 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 <T> 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 <T> which is the output of the ResultSetExtractor
* @throws DataAccessException
*/
<T> List<T> query(PreparedStatementCreator psc, final PreparedStatementBinder psb, final RowMapper<T> rowMapper,
final Map<String, Object> 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.
*
* <p>
* 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.
* </p>
*
* @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<String, Object> 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.
*
* <p>
* The List<?> length must match the number of bind variables in the CQL.
* </p>
*
* @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<List<?>> rows, Map<String, Object> 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<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.
*
* <p>
* The Object[] length of the nested array must match the number of bind variables in the CQL.
* </p>
*
* @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<String, Object> 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.

View File

@@ -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.<String, Object> emptyMap());
}
/* (non-Javadoc)
* @see org.springframework.cassandra.core.CassandraOperations#queryAsynchronously(java.lang.String, org.springframework.cassandra.core.ResultSetFutureExtractor, java.util.Map)
*/
@Override
public <T> T queryAsynchronously(final String cql, ResultSetFutureExtractor<T> rse,
final Map<String, Object> optionsByName) throws DataAccessException {
return rse.extractData(execute(new SessionCallback<ResultSetFuture>() {
@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> T queryAsynchronously(String cql, ResultSetFutureExtractor<T> rse, QueryOptions options)
public <T> T queryAsynchronously(final String cql, ResultSetFutureExtractor<T> rse, final QueryOptions options)
throws DataAccessException {
Assert.notNull(options);
return queryAsynchronously(cql, rse, options.toMap());
return rse.extractData(execute(new SessionCallback<ResultSetFuture>() {
@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> T queryAsynchronously(final String cql, ResultSetFutureExtractor<T> rse) throws DataAccessException {
return queryAsynchronously(cql, rse, Collections.<String, Object> emptyMap());
}
/* (non-Javadoc)
* @see org.springframework.cassandra.core.CassandraOperations#query(java.lang.String, org.springframework.cassandra.core.ResultSetExtractor)
*/
public <T> T query(String cql, ResultSetExtractor<T> rse, Map<String, Object> 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> T query(String cql, ResultSetExtractor<T> rse) throws DataAccessException {
return query(cql, rse, Collections.<String, Object> emptyMap());
return query(cql, rse, null);
}
/* (non-Javadoc)
@@ -153,16 +130,9 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe
*/
@Override
public <T> T query(String cql, ResultSetExtractor<T> 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<String, Object> 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.<String, Object> emptyMap());
}
/* (non-Javadoc)
* @see org.springframework.cassandra.core.CassandraOperations#query(java.lang.String, org.springframework.cassandra.core.RowMapper, java.util.Map)
*/
@Override
public <T> List<T> query(String cql, RowMapper<T> rowMapper, Map<String, Object> 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 <T> List<T> query(String cql, RowMapper<T> 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 <T> List<T> query(String cql, RowMapper<T> rowMapper) throws DataAccessException {
return query(cql, rowMapper, Collections.<String, Object> emptyMap());
return query(cql, rowMapper, null);
}
/* (non-Javadoc)
* @see org.springframework.cassandra.core.CassandraOperations#queryForList(java.lang.String)
*/
public List<Map<String, Object>> queryForListOfMap(String cql) throws DataAccessException {
return processListOfMap(doExecute(cql, Collections.<String, Object> emptyMap()));
return processListOfMap(doExecute(cql, null));
}
/* (non-Javadoc)
* @see org.springframework.cassandra.core.CassandraOperations#queryForList(java.lang.String, java.lang.Class)
*/
public <T> List<T> queryForList(String cql, Class<T> elementType) throws DataAccessException {
return processList(doExecute(cql, Collections.<String, Object> emptyMap()), elementType);
return processList(doExecute(cql, null), elementType);
}
/* (non-Javadoc)
* @see org.springframework.cassandra.core.CassandraOperations#queryForMap(java.lang.String)
*/
public Map<String, Object> queryForMap(String cql) throws DataAccessException {
return processMap(doExecute(cql, Collections.<String, Object> emptyMap()));
return processMap(doExecute(cql, null));
}
/* (non-Javadoc)
* @see org.springframework.cassandra.core.CassandraOperations#queryForObject(java.lang.String, java.lang.Class)
*/
public <T> T queryForObject(String cql, Class<T> requiredType) throws DataAccessException {
return processOne(doExecute(cql, Collections.<String, Object> 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> T queryForObject(String cql, RowMapper<T> rowMapper) throws DataAccessException {
return processOne(doExecute(cql, Collections.<String, Object> 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<String, Object> 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<String, Object> optionsByName) {
protected ResultSet doExecute(final BoundStatement bs, final QueryOptions options) {
return doExecute(new SessionCallback<ResultSet>() {
@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> T query(PreparedStatementCreator psc, ResultSetExtractor<T> rse, Map<String, Object> 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> T query(PreparedStatementCreator psc, ResultSetExtractor<T> 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> T query(PreparedStatementCreator psc, ResultSetExtractor<T> rse) throws DataAccessException {
return query(psc, rse, Collections.<String, Object> 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<String, Object> 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.<String, Object> 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 <T> List<T> query(PreparedStatementCreator psc, RowMapper<T> rowMapper, Map<String, Object> 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 <T> List<T> query(PreparedStatementCreator psc, RowMapper<T> 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 <T> List<T> query(PreparedStatementCreator psc, RowMapper<T> rowMapper) throws DataAccessException {
return query(psc, rowMapper, Collections.<String, Object> 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> T query(PreparedStatementCreator psc, final PreparedStatementBinder psb, final ResultSetExtractor<T> rse,
final Map<String, Object> optionsByName) throws DataAccessException {
Assert.notNull(rse, "ResultSetExtractor must not be null");
logger.debug("Executing prepared CQL query");
return execute(psc, new PreparedStatementCallback<T>() {
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> T query(String cql, PreparedStatementBinder psb, ResultSetExtractor<T> rse,
Map<String, Object> 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> T query(String cql, PreparedStatementBinder psb, ResultSetExtractor<T> 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> T query(String cql, PreparedStatementBinder psb, ResultSetExtractor<T> rse) throws DataAccessException {
return query(cql, psb, rse, Collections.<String, Object> 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<String, Object> 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.<String, Object> 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 <T> List<T> query(String cql, PreparedStatementBinder psb, RowMapper<T> rowMapper,
Map<String, Object> 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 <T> List<T> query(String cql, PreparedStatementBinder psb, RowMapper<T> 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 <T> List<T> query(String cql, PreparedStatementBinder psb, RowMapper<T> rowMapper) throws DataAccessException {
return query(cql, psb, rowMapper, Collections.<String, Object> 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<String, Object> optionsByName) throws DataAccessException {
Assert.notNull(rch, "RowCallbackHandler must not be null");
logger.debug("Executing prepared CQL query");
execute(psc, new PreparedStatementCallback<Object>() {
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 <T> List<T> query(PreparedStatementCreator psc, final PreparedStatementBinder psb,
final RowMapper<T> rowMapper, final Map<String, Object> optionsByName) throws DataAccessException {
Assert.notNull(rowMapper, "RowMapper must not be null");
logger.debug("Executing prepared CQL query");
return execute(psc, new PreparedStatementCallback<List<T>>() {
public List<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 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<String, Object> 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.<String, Object> 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<List<?>> rows, Map<String, Object> optionsByName) {
public void ingest(String cql, final List<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<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<List<?>> rows) {
ingest(cql, rows, Collections.<String, Object> 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<String, Object> 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.<String, Object> 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.<String, Object> 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<String, Object> optionsByName) {
public 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<String, Object> optionsByName) {
public 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> T query(PreparedStatementCreator psc, PreparedStatementBinder psb, ResultSetExtractor<T> rse,
QueryOptions options) throws DataAccessException {
Assert.notNull(options);
return query(psc, psb, rse, options.toMap());
public <T> T query(PreparedStatementCreator psc, final PreparedStatementBinder psb, final ResultSetExtractor<T> 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<T>() {
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> T query(PreparedStatementCreator psc, PreparedStatementBinder psb, ResultSetExtractor<T> rse)
throws DataAccessException {
return query(psc, psb, rse, Collections.<String, Object> 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<Object>() {
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.<String, Object> 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 <T> List<T> query(PreparedStatementCreator psc, PreparedStatementBinder psb, RowMapper<T> rowMapper,
QueryOptions options) throws DataAccessException {
Assert.notNull(options);
return query(psc, psb, rowMapper, options.toMap());
public <T> List<T> query(PreparedStatementCreator psc, final PreparedStatementBinder psb,
final RowMapper<T> 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<List<T>>() {
public List<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 process(rs, rowMapper);
}
});
}
/* (non-Javadoc)
@@ -1004,7 +832,7 @@ public class CassandraTemplate extends CassandraAccessor implements CassandraOpe
@Override
public <T> List<T> query(PreparedStatementCreator psc, PreparedStatementBinder psb, RowMapper<T> rowMapper)
throws DataAccessException {
return query(psc, psb, rowMapper, Collections.<String, Object> emptyMap());
return query(psc, psb, rowMapper, null);
}
}

View File

@@ -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> T insert(T entity, QueryOptions options);
/**
* @param entity
* @param tableName
* @param options
* @return
*/
<T> T insert(T entity, Map<String, Object> optionsByName);
/**
* @param entity
* @param tableName
* @param optionsByName
* @return
*/
<T> T insert(T entity, String tableName, Map<String, Object> optionsByName);
/**
* Insert the given list of objects to the table by annotation table name.
*
@@ -163,14 +146,6 @@ public interface CassandraDataOperations {
*/
<T> List<T> insert(List<T> entities, QueryOptions options);
/**
* @param entities
* @param tableName
* @param optionsByName
* @return
*/
<T> List<T> insert(List<T> entities, Map<String, Object> optionsByName);
/**
* @param entities
* @param tableName
@@ -179,14 +154,6 @@ public interface CassandraDataOperations {
*/
<T> List<T> insert(List<T> entities, String tableName, QueryOptions options);
/**
* @param entities
* @param tableName
* @param optionsByName
* @return
*/
<T> List<T> insert(List<T> entities, String tableName, Map<String, Object> optionsByName);
/**
* Insert the given object to the table by id.
*
@@ -209,14 +176,6 @@ public interface CassandraDataOperations {
*/
<T> T insertAsynchronously(T entity, QueryOptions options);
/**
* @param entity
* @param tableName
* @param optionsByName
* @return
*/
<T> T insertAsynchronously(T entity, Map<String, Object> optionsByName);
/**
* @param entity
* @param tableName
@@ -225,14 +184,6 @@ public interface CassandraDataOperations {
*/
<T> T insertAsynchronously(T entity, String tableName, QueryOptions options);
/**
* @param entity
* @param tableName
* @param optionsByName
* @return
*/
<T> T insertAsynchronously(T entity, String tableName, Map<String, Object> optionsByName);
/**
* Insert the given object to the table by id.
*
@@ -255,14 +206,6 @@ public interface CassandraDataOperations {
*/
<T> List<T> insertAsynchronously(List<T> entities, QueryOptions options);
/**
* @param entities
* @param tableName
* @param optionsByName
* @return
*/
<T> List<T> insertAsynchronously(List<T> entities, Map<String, Object> optionsByName);
/**
* @param entities
* @param tableName
@@ -271,14 +214,6 @@ public interface CassandraDataOperations {
*/
<T> List<T> insertAsynchronously(List<T> entities, String tableName, QueryOptions options);
/**
* @param entities
* @param tableName
* @param optionsByName
* @return
*/
<T> List<T> insertAsynchronously(List<T> entities, String tableName, Map<String, Object> optionsByName);
/**
* Insert the given object to the table by id.
*
@@ -301,14 +236,6 @@ public interface CassandraDataOperations {
*/
<T> T update(T entity, QueryOptions options);
/**
* @param entity
* @param tableName
* @param optionsByName
* @return
*/
<T> T update(T entity, Map<String, Object> optionsByName);
/**
* @param entity
* @param tableName
@@ -317,14 +244,6 @@ public interface CassandraDataOperations {
*/
<T> T update(T entity, String tableName, QueryOptions options);
/**
* @param entity
* @param tableName
* @param optionsByName
* @return
*/
<T> T update(T entity, String tableName, Map<String, Object> optionsByName);
/**
* Insert the given object to the table by id.
*
@@ -347,14 +266,6 @@ public interface CassandraDataOperations {
*/
<T> List<T> update(List<T> entities, QueryOptions options);
/**
* @param entities
* @param tableName
* @param optionsByName
* @return
*/
<T> List<T> update(List<T> entities, Map<String, Object> optionsByName);
/**
* @param entities
* @param tableName
@@ -363,14 +274,6 @@ public interface CassandraDataOperations {
*/
<T> List<T> update(List<T> entities, String tableName, QueryOptions options);
/**
* @param entities
* @param tableName
* @param optionsByName
* @return
*/
<T> List<T> update(List<T> entities, String tableName, Map<String, Object> optionsByName);
/**
* Insert the given object to the table by id.
*
@@ -393,14 +296,6 @@ public interface CassandraDataOperations {
*/
<T> T updateAsynchronously(T entity, QueryOptions options);
/**
* @param entity
* @param tableName
* @param optionsByName
* @return
*/
<T> T updateAsynchronously(T entity, Map<String, Object> optionsByName);
/**
* @param entity
* @param tableName
@@ -409,14 +304,6 @@ public interface CassandraDataOperations {
*/
<T> T updateAsynchronously(T entity, String tableName, QueryOptions options);
/**
* @param entity
* @param tableName
* @param optionsByName
* @return
*/
<T> T updateAsynchronously(T entity, String tableName, Map<String, Object> optionsByName);
/**
* Insert the given object to the table by id.
*
@@ -439,14 +326,6 @@ public interface CassandraDataOperations {
*/
<T> List<T> updateAsynchronously(List<T> entities, QueryOptions options);
/**
* @param entities
* @param tableName
* @param optionsByName
* @return
*/
<T> List<T> updateAsynchronously(List<T> entities, Map<String, Object> optionsByName);
/**
* @param entities
* @param tableName
@@ -455,14 +334,6 @@ public interface CassandraDataOperations {
*/
<T> List<T> updateAsynchronously(List<T> entities, String tableName, QueryOptions options);
/**
* @param entities
* @param tableName
* @param optionsByName
* @return
*/
<T> List<T> updateAsynchronously(List<T> entities, String tableName, Map<String, Object> optionsByName);
/**
* Remove the given object from the table by id.
*
@@ -485,13 +356,6 @@ public interface CassandraDataOperations {
*/
<T> void delete(T entity, QueryOptions options);
/**
* @param entity
* @param tableName
* @param optionsByName
*/
<T> void delete(T entity, Map<String, Object> optionsByName);
/**
* @param entity
* @param tableName
@@ -499,13 +363,6 @@ public interface CassandraDataOperations {
*/
<T> void delete(T entity, String tableName, QueryOptions options);
/**
* @param entity
* @param tableName
* @param optionsByName
*/
<T> void delete(T entity, String tableName, Map<String, Object> optionsByName);
/**
* Remove the given object from the table by id.
*
@@ -528,13 +385,6 @@ public interface CassandraDataOperations {
*/
<T> void delete(List<T> entities, QueryOptions options);
/**
* @param entities
* @param tableName
* @param optionsByName
*/
<T> void delete(List<T> entities, Map<String, Object> optionsByName);
/**
* @param entities
* @param tableName
@@ -542,13 +392,6 @@ public interface CassandraDataOperations {
*/
<T> void delete(List<T> entities, String tableName, QueryOptions options);
/**
* @param entities
* @param tableName
* @param optionsByName
*/
<T> void delete(List<T> entities, String tableName, Map<String, Object> optionsByName);
/**
* Remove the given object from the table by id.
*
@@ -563,13 +406,6 @@ public interface CassandraDataOperations {
*/
<T> void deleteAsynchronously(T entity, QueryOptions options);
/**
* @param entity
* @param tableName
* @param optionsByName
*/
<T> void deleteAsynchronously(T entity, Map<String, Object> optionsByName);
/**
* @param entity
* @param tableName
@@ -577,13 +413,6 @@ public interface CassandraDataOperations {
*/
<T> void deleteAsynchronously(T entity, String tableName, QueryOptions options);
/**
* @param entity
* @param tableName
* @param optionsByName
*/
<T> void deleteAsynchronously(T entity, String tableName, Map<String, Object> optionsByName);
/**
* Removes the given object from the given table.
*
@@ -614,13 +443,6 @@ public interface CassandraDataOperations {
*/
<T> void deleteAsynchronously(List<T> entities, QueryOptions options);
/**
* @param entities
* @param tableName
* @param optionsByName
*/
<T> void deleteAsynchronously(List<T> entities, Map<String, Object> optionsByName);
/**
* @param entities
* @param tableName
@@ -628,13 +450,6 @@ public interface CassandraDataOperations {
*/
<T> void deleteAsynchronously(List<T> entities, String tableName, QueryOptions options);
/**
* @param entities
* @param tableName
* @param optionsByName
*/
<T> void deleteAsynchronously(List<T> entities, String tableName, Map<String, Object> optionsByName);
/**
* Returns the underlying {@link CassandraConverter}.
*

View File

@@ -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 <T> void delete(List<T> entities, Map<String, Object> 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 <T> void delete(List<T> entities, String tableName) {
delete(entities, tableName, Collections.<String, Object> emptyMap());
}
/* (non-Javadoc)
* @see org.springframework.data.cassandra.core.CassandraOperations#delete(java.util.List, java.lang.String, java.util.Map)
*/
@Override
public <T> void delete(List<T> entities, String tableName, Map<String, Object> 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 <T> void delete(List<T> 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 <T> void delete(T entity, Map<String, Object> 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 <T> void delete(T entity, String tableName) {
delete(entity, tableName, Collections.<String, Object> emptyMap());
}
/* (non-Javadoc)
* @see org.springframework.data.cassandra.core.CassandraOperations#delete(java.lang.Object, java.lang.String, java.util.Map)
*/
@Override
public <T> void delete(T entity, String tableName, Map<String, Object> 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 <T> 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 <T> void deleteAsynchronously(List<T> entities, Map<String, Object> 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 <T> void deleteAsynchronously(List<T> entities, String tableName) {
insertAsynchronously(entities, tableName, Collections.<String, Object> emptyMap());
}
/* (non-Javadoc)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsynchronously(java.util.List, java.lang.String, java.util.Map)
*/
@Override
public <T> void deleteAsynchronously(List<T> entities, String tableName, Map<String, Object> 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 <T> void deleteAsynchronously(List<T> 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 <T> void deleteAsynchronously(T entity, Map<String, Object> 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 <T> void deleteAsynchronously(T entity, String tableName) {
deleteAsynchronously(entity, tableName, Collections.<String, Object> emptyMap());
}
/* (non-Javadoc)
* @see org.springframework.data.cassandra.core.CassandraOperations#deleteAsynchronously(java.lang.Object, java.lang.String, java.util.Map)
*/
@Override
public <T> void deleteAsynchronously(T entity, String tableName, Map<String, Object> 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 <T> 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 <T> List<T> insert(List<T> entities, Map<String, Object> 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 <T> List<T> insert(List<T> entities, String tableName) {
return insert(entities, tableName, Collections.<String, Object> emptyMap());
}
/* (non-Javadoc)
* @see org.springframework.data.cassandra.core.CassandraOperations#insert(java.util.List, java.lang.String, java.util.Map)
*/
@Override
public <T> List<T> insert(List<T> entities, String tableName, Map<String, Object> 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 <T> List<T> insert(List<T> 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> T insert(T entity, Map<String, Object> 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> T insert(T entity, String tableName) {
return insert(entity, tableName, Collections.<String, Object> emptyMap());
}
/* (non-Javadoc)
* @see org.springframework.data.cassandra.core.CassandraOperations#insert(java.lang.Object, java.lang.String, java.util.Map)
*/
@Override
public <T> T insert(T entity, String tableName, Map<String, Object> 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> 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 <T> List<T> insertAsynchronously(List<T> entities, Map<String, Object> 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 <T> List<T> insertAsynchronously(List<T> entities, String tableName) {
return insertAsynchronously(entities, tableName, Collections.<String, Object> emptyMap());
}
/* (non-Javadoc)
* @see org.springframework.data.cassandra.core.CassandraOperations#insertAsynchronously(java.util.List, java.lang.String, java.util.Map)
*/
@Override
public <T> List<T> insertAsynchronously(List<T> entities, String tableName, Map<String, Object> 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 <T> List<T> insertAsynchronously(List<T> 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> T insertAsynchronously(T entity, Map<String, Object> 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> T insertAsynchronously(T entity, String tableName) {
return insertAsynchronously(entity, tableName, Collections.<String, Object> emptyMap());
}
/* (non-Javadoc)
* @see org.springframework.data.cassandra.core.CassandraOperations#insertAsynchronously(java.lang.Object, java.lang.String, java.util.Map)
*/
@Override
public <T> T insertAsynchronously(T entity, String tableName, Map<String, Object> 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> 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 <T> List<T> update(List<T> entities, Map<String, Object> 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 <T> List<T> update(List<T> entities, String tableName) {
return update(entities, tableName, Collections.<String, Object> emptyMap());
}
/* (non-Javadoc)
* @see org.springframework.data.cassandra.core.CassandraOperations#update(java.util.List, java.lang.String, java.util.Map)
*/
@Override
public <T> List<T> update(List<T> entities, String tableName, Map<String, Object> 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 <T> List<T> update(List<T> 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> T update(T entity, Map<String, Object> 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> T update(T entity, String tableName) {
return update(entity, tableName, Collections.<String, Object> emptyMap());
}
/* (non-Javadoc)
* @see org.springframework.data.cassandra.core.CassandraOperations#update(java.lang.Object, java.lang.String, java.util.Map)
*/
@Override
public <T> T update(T entity, String tableName, Map<String, Object> 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> 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 <T> List<T> updateAsynchronously(List<T> entities, Map<String, Object> 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 <T> List<T> updateAsynchronously(List<T> entities, String tableName) {
return updateAsynchronously(entities, tableName, Collections.<String, Object> emptyMap());
}
/* (non-Javadoc)
* @see org.springframework.data.cassandra.core.CassandraOperations#updateAsynchronously(java.util.List, java.lang.String, java.util.Map)
*/
@Override
public <T> List<T> updateAsynchronously(List<T> entities, String tableName, Map<String, Object> 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 <T> List<T> updateAsynchronously(List<T> 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> T updateAsynchronously(T entity, Map<String, Object> 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> T updateAsynchronously(T entity, String tableName) {
return updateAsynchronously(entity, tableName, Collections.<String, Object> emptyMap());
}
/* (non-Javadoc)
* @see org.springframework.data.cassandra.core.CassandraOperations#updateAsynchronously(java.lang.Object, java.lang.String, java.util.Map)
*/
@Override
public <T> T updateAsynchronously(T entity, String tableName, Map<String, Object> 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> 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 <T> void doBatchDelete(final String tableName, final List<T> entities, Map<String, Object> optionsByName,
protected <T> void doBatchDelete(final String tableName, final List<T> 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<Object>() {
@@ -1067,14 +827,14 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr
* @param insertAsychronously
* @return
*/
protected <T> List<T> doBatchInsert(final String tableName, final List<T> entities,
Map<String, Object> optionsByName, final boolean insertAsychronously) {
protected <T> List<T> doBatchInsert(final String tableName, final List<T> 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<List<T>>() {
@@ -1108,14 +868,14 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr
* @param updateAsychronously
* @return
*/
protected <T> List<T> doBatchUpdate(final String tableName, final List<T> entities,
Map<String, Object> optionsByName, final boolean updateAsychronously) {
protected <T> List<T> doBatchUpdate(final String tableName, final List<T> 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<List<T>>() {
@@ -1146,12 +906,12 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr
* @param tableName
* @param objectToRemove
*/
protected <T> void doDelete(final String tableName, final T objectToRemove, Map<String, Object> optionsByName,
protected <T> 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<Object>() {
@@ -1201,12 +961,12 @@ public class CassandraDataTemplate extends CassandraTemplate implements Cassandr
* @param tableName
* @param entity
*/
protected <T> T doInsert(final String tableName, final T entity, final Map<String, Object> optionsByName,
protected <T> 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> T doUpdate(final String tableName, final T entity, final Map<String, Object> optionsByName,
protected <T> 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<T>() {

View File

@@ -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<String, Object> optionsByName, EntityWriter<Object, Object> entityWriter) throws EntityWriterException {
QueryOptions options, EntityWriter<Object, Object> 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<String, Object> optionsByName, EntityWriter<Object, Object> entityWriter) throws EntityWriterException {
QueryOptions options, EntityWriter<Object, Object> 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 <T> Batch toUpdateBatchQuery(final String keyspaceName, final String tableName,
final List<T> objectsToSave, Map<String, Object> optionsByName, EntityWriter<Object, Object> entityWriter)
final List<T> objectsToSave, QueryOptions options, EntityWriter<Object, Object> 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 <T> Batch toInsertBatchQuery(final String keyspaceName, final String tableName,
final List<T> objectsToSave, Map<String, Object> optionsByName, EntityWriter<Object, Object> entityWriter)
final List<T> objectsToSave, QueryOptions options, EntityWriter<Object, Object> 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<String, Object> optionsByName, EntityWriter<Object, Object> entityWriter) throws EntityWriterException {
QueryOptions options, EntityWriter<Object, Object> 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 <T> Batch toDeleteBatchQuery(String keyspaceName, String tableName, List<T> entities,
Map<String, Object> optionsByName, EntityWriter<Object, Object> entityWriter) throws EntityWriterException {
QueryOptions options, EntityWriter<Object, Object> 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<String, Object> 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)));
}
}
}

View File

@@ -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<String, Object> optionsByName = new HashMap<String, Object>();
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<String, Object> optionsByName = new HashMap<String, Object>();
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