com.netflix.astyanax
Interface MutationBatch

Type Parameters:
K -
All Superinterfaces:
com.netflix.astyanax.Execution<java.lang.Void>

public interface MutationBatch
extends com.netflix.astyanax.Execution<java.lang.Void>

Batch mutator which operates at the row level assuming the hierarchy: RowKey -> ColumnFamily -> Mutation. This hierarchy serves two purposes. First, it makes it possible to perform multiple operations on the same row without having to repeat specifying the row key. Second, it mirrors the underlying Thrift data structure which averts unnecessary operations to convert from one data structure to another. The mutator is not thread safe If successful, all the mutations are cleared and new mutations may be created. Any previously acquired ColumnFamilyMutations are no longer valid and should be discarded. No data is actually returned after a mutation is executed, hence the Void return value type. Example:

 {
     @code
     ColumnFamily<String, String> cf = AFactory.makeColumnFamily("COLUMN_FAMILY_NAME", // Name
                                                                                       // of
                                                                                       // CF
                                                                                       // in
                                                                                       // Cassandra
             StringSerializer.get(), // Row key serializer (implies string type)
             StringSerializer.get(), // Column name serializer (implies string
                                     // type)
             ColumnType.STANDARD); // This is a standard row
 
     // Create a batch mutation
     RowMutationBatch m = keyspace.prepareMutationBatch();
 
     // Start mutate a column family for a specific row key
     ColumnFamilyMutation<String> cfm = m.row(cfSuper, "UserId").putColumn("Address", "976 Elm St.")
             .putColumn("Age", 50).putColumn("Gender", "Male");
 
     // To delete a row
     m.row(cfSuper, "UserId").delete();
 
     // Finally, execute the query
     m.execute();
 
 }
 


Method Summary
<K> void
deleteRow(java.lang.Iterable<? extends ColumnFamily<K,?>> columnFamilies, K rowKey)
          Delete the row for all the specified column families.
 void deserialize(java.nio.ByteBuffer data)
          Re-recreate a mutation batch from a serialized ByteBuffer created by a call to serialize().
 void discardMutations()
          Discard any pending mutations.
 int getRowCount()
           
 java.util.Map<java.nio.ByteBuffer,java.util.Set<java.lang.String>> getRowKeys()
           
 boolean isEmpty()
           
 MutationBatch lockCurrentTimestamp()
          Force all future mutations to have the same timestamp.
 void mergeShallow(MutationBatch other)
          Perform a shallow merge of mutations from another batch.
 MutationBatch pinToHost(com.netflix.astyanax.connectionpool.Host host)
          Pin this operation to a specific host
 java.nio.ByteBuffer serialize()
           
 MutationBatch setConsistencyLevel(ConsistencyLevel consistencyLevel)
          Set the consistency level for this mutation (same as withConsistencyLevel)
 MutationBatch setTimeout(long timeout)
          Deprecated. 
 MutationBatch setTimestamp(long timestamp)
          Set the timestamp for all subsequent operations on this mutation (same as withTimestamp)
 MutationBatch usingWriteAheadLog(WriteAheadLog manager)
          Specify a write ahead log implementation to use for this mutation
 MutationBatch withConsistencyLevel(ConsistencyLevel consistencyLevel)
          Set the consistency level for this mutation (same as setConsistencyLevel)
 MutationBatch withRetryPolicy(com.netflix.astyanax.retry.RetryPolicy retry)
          Set the retry policy to use instead of the one specified in the configuration
<K,C> ColumnListMutation<C>
withRow(ColumnFamily<K,C> columnFamily, K rowKey)
          Mutate a row.
 MutationBatch withTimestamp(long timestamp)
          Set the timestamp for all subsequent operations on this mutation.
 
Methods inherited from interface com.netflix.astyanax.Execution
execute, executeAsync
 

Method Detail

withRow

<K,C> ColumnListMutation<C> withRow(ColumnFamily<K,C> columnFamily,
                                    K rowKey)
Mutate a row. The ColumnFamilyMutation is only valid until execute() or discardMutations is called.

Parameters:
rowKey -

deleteRow

<K> void deleteRow(java.lang.Iterable<? extends ColumnFamily<K,?>> columnFamilies,
                   K rowKey)
Delete the row for all the specified column families.

Parameters:
columnFamilies -

discardMutations

void discardMutations()
Discard any pending mutations. All previous references returned by row are now invalid. Note also that this will reset the mutation timestamp so that the next call to withRow will set the timestamp to the current time


mergeShallow

void mergeShallow(MutationBatch other)
Perform a shallow merge of mutations from another batch.

Throws:
java.lang.UnsupportedOperationException - if the other mutation is of a different type

isEmpty

boolean isEmpty()
Returns:
true if there are no rows in the mutation. May return a false true if a row() was added by calling the above row() method but no mutations were created.

getRowCount

int getRowCount()
Returns:
Returns the number of rows being mutated

getRowKeys

java.util.Map<java.nio.ByteBuffer,java.util.Set<java.lang.String>> getRowKeys()
Returns:
Return a mapping of column families to rows being modified

pinToHost

MutationBatch pinToHost(com.netflix.astyanax.connectionpool.Host host)
Pin this operation to a specific host

Parameters:
host -

setConsistencyLevel

MutationBatch setConsistencyLevel(ConsistencyLevel consistencyLevel)
Set the consistency level for this mutation (same as withConsistencyLevel)

Parameters:
consistencyLevel -

withConsistencyLevel

MutationBatch withConsistencyLevel(ConsistencyLevel consistencyLevel)
Set the consistency level for this mutation (same as setConsistencyLevel)

Parameters:
consistencyLevel -

withRetryPolicy

MutationBatch withRetryPolicy(com.netflix.astyanax.retry.RetryPolicy retry)
Set the retry policy to use instead of the one specified in the configuration

Parameters:
retry -

usingWriteAheadLog

MutationBatch usingWriteAheadLog(WriteAheadLog manager)
Specify a write ahead log implementation to use for this mutation

Parameters:
manager -

lockCurrentTimestamp

MutationBatch lockCurrentTimestamp()
Force all future mutations to have the same timestamp. Make sure to call lockTimestamp before doing any other operations otherwise previously created withRow mutations will use the previous timestamp.


setTimeout

@Deprecated
MutationBatch setTimeout(long timeout)
Deprecated. 

This never really did anything :)

Parameters:
-

setTimestamp

MutationBatch setTimestamp(long timestamp)
Set the timestamp for all subsequent operations on this mutation (same as withTimestamp)

Parameters:
timestamp - in microseconds

withTimestamp

MutationBatch withTimestamp(long timestamp)
Set the timestamp for all subsequent operations on this mutation.

Parameters:
timestamp - in microsecond

serialize

java.nio.ByteBuffer serialize()
                              throws java.lang.Exception
Returns:
Serialize the entire mutation batch into a ByteBuffer.
Throws:
java.lang.Exception

deserialize

void deserialize(java.nio.ByteBuffer data)
                 throws java.lang.Exception
Re-recreate a mutation batch from a serialized ByteBuffer created by a call to serialize(). Serialization of MutationBatches from different implementations is not guaranteed to match.

Parameters:
data -
Throws:
java.lang.Exception