Library Version 12.1.3.0

Creating a Sequence
Prev | Chapter 11. Executing a Sequence of Operations | Next

## Creating a Sequence

You create a sequence by using the `TableOperationFactory` class to create `TableOperation` class instances, each of which represents exactly one operation in the store. You obtain an instance of `TableOperationFactory` by using `TableAPI.getTableOperationFactory()`.

For example, suppose you are using a table defined like this:

    ## Enter into table creation mode
    table create -name myTable
    ## Now add the fields
    add-field -type STRING -name itemType
    add-field -type STRING -name itemCategory
    add-field -type STRING -name itemClass
    add-field -type STRING -name itemColor
    add-field -type STRING -name itemSize
    add-field -type FLOAT -name price
    add-field -type INTEGER -name inventoryCount
    primary-key -field itemType -field itemCategory -field itemClass
    -field itemColor -field itemSize
    shard-key -field itemType -field itemCategory -field itemClass
    ## Exit table creation mode
    exit

With tables containing data like this:

- Row 1:

  itemType: Hats
  itemCategory: baseball
  itemClass: longbill
  itemColor: red
  itemSize: small
  price: 12.07
  inventoryCount: 127

- Row 2:

  itemType: Hats
  itemCategory: baseball
  itemClass: longbill
  itemColor: red
  itemSize: medium
  price: 13.07
  inventoryCount: 201

- Row 3:

  itemType: Hats
  itemCategory: baseball
  itemClass: longbill
  itemColor: red
  itemSize: large
  price: 14.07
  inventoryCount: 39

And further suppose that this table has rows that require an update (such as a price and inventory refresh), and you want the update to occur in such a fashion as to ensure it is performed consistently for all the rows.

Then you can create a sequence in the following way:

    package kvstore.basicExample;

    import java.util.ArrayList;

    import oracle.kv.KVStore;
    import oracle.kv.KVStoreConfig;
    import oracle.kv.KVStoreFactory;

    import oracle.kv.DurabilityException;
    import oracle.kv.FaultException;
    import oracle.kv.OperationExecutionException;
    import oracle.kv.RequestTimeoutException;

    import oracle.kv.table.PrimaryKey;
    import oracle.kv.table.Row;
    import oracle.kv.table.Table;
    import oracle.kv.table.TableAPI;
    import oracle.kv.table.TableOperationFactory;
    import oracle.kv.table.TableOperation;

    ...

    // kvstore handle creation omitted.

    ...

    TableAPI tableH = kvstore.getTableAPI();

    Table myTable = tableH.getTable("myTable");

    // We use TableOperationFactory to create items for our
    // sequence.
    TableOperationFactory tof = tableH.getTableOperationFactory();

    // This ArrayList is used to contain each item in our sequence.
    ArrayList<TableOperation> opList = new ArrayList<TableOperation>();

    // Update each row, adding each to the opList as we do.
    Row row = myTable.createRow();
    row.put("itemType", "Hats");
    row.put("itemCategory", "baseball");
    row.put("itemClass", "longbill");
    row.put("itemColor", "red");
    row.put("itemSize", "small");
    row.put("price", new Float(13.07));
    row.put("inventoryCount", 107);
    opList.add(tof.createPut(row, null, true));

    row = myTable.createRow();
    row.put("itemType", "Hats");
    row.put("itemCategory", "baseball");
    row.put("itemClass", "longbill");
    row.put("itemColor", "red");
    row.put("itemSize", "medium");
    row.put("price", new Float(14.07));
    row.put("inventoryCount", 198);
    opList.add(tof.createPut(row, null, true));

    row = myTable.createRow();
    row.put("itemType", "Hats");
    row.put("itemCategory", "baseball");
    row.put("itemClass", "longbill");
    row.put("itemColor", "red");
    row.put("itemSize", "large");
    row.put("price", new Float(15.07));
    row.put("inventoryCount", 139);
    opList.add(tof.createPut(row, null, true));

Note in the above example that we update only those rows that share the same shard key. In this case, the shard key includes the `itemType`, `itemCategory`, and `itemClass` fields. If the value for any of those fields is different from the others, we could not successfully execute the sequence.

Prev | Up | Next
Chapter 11. Executing a Sequence of Operations | Home | Executing a Sequence