blob: 31deb4d43c56b956b9b70cf51015caf8f5e73cc5 [file] [log] [blame]
Madan Jampani12390c12014-11-12 00:35:56 -08001package org.onlab.onos.store.service;
2
Madan Jampani12390c12014-11-12 00:35:56 -08003import java.util.List;
4
Madan Jampani7aad2332014-11-12 01:57:07 -08005import com.google.common.collect.ImmutableList;
Madan Jampani12390c12014-11-12 00:35:56 -08006import com.google.common.collect.Lists;
7
8/**
9 * Collection of write requests to be submitted as one batch.
10 */
Madan Jampani23af4fc2014-11-12 00:54:18 -080011public final class BatchWriteRequest {
Madan Jampani12390c12014-11-12 00:35:56 -080012
Madan Jampani23af4fc2014-11-12 00:54:18 -080013 private final List<WriteRequest> writeRequests;
Madan Jampani12390c12014-11-12 00:35:56 -080014
Madan Jampani23af4fc2014-11-12 00:54:18 -080015 /**
16 * Creates a new BatchWriteRequest object from the specified list of write requests.
17 * @param writeRequests write requests.
18 * @return BatchWriteRequest object.
19 */
20 public static BatchWriteRequest create(List<WriteRequest> writeRequests) {
21 return new BatchWriteRequest(writeRequests);
22 }
Madan Jampani12390c12014-11-12 00:35:56 -080023
Madan Jampani23af4fc2014-11-12 00:54:18 -080024 private BatchWriteRequest(List<WriteRequest> writeRequests) {
Madan Jampani7aad2332014-11-12 01:57:07 -080025 this.writeRequests = ImmutableList.copyOf(writeRequests);
Madan Jampani23af4fc2014-11-12 00:54:18 -080026 }
Madan Jampani12390c12014-11-12 00:35:56 -080027
Madan Jampani23af4fc2014-11-12 00:54:18 -080028 /**
29 * Returns the requests in this batch as a list.
30 * @return list of write requests
31 */
32 public List<WriteRequest> getAsList() {
33 return writeRequests;
34 }
Madan Jampani12390c12014-11-12 00:35:56 -080035
Madan Jampani23af4fc2014-11-12 00:54:18 -080036 /**
37 * Returns the number of requests in this batch.
38 * @return size of request batch.
39 */
40 public int batchSize() {
41 return writeRequests.size();
42 }
Madan Jampani12390c12014-11-12 00:35:56 -080043
Madan Jampani23af4fc2014-11-12 00:54:18 -080044 /**
45 * Builder for BatchWriteRequest.
46 */
47 public static class Builder {
Madan Jampani12390c12014-11-12 00:35:56 -080048
Madan Jampani23af4fc2014-11-12 00:54:18 -080049 private final List<WriteRequest> writeRequests = Lists.newLinkedList();
Madan Jampani12390c12014-11-12 00:35:56 -080050
Madan Jampani23af4fc2014-11-12 00:54:18 -080051 public Builder put(String tableName, String key, byte[] value) {
52 writeRequests.add(WriteRequest.put(tableName, key, value));
53 return this;
54 }
Madan Jampani12390c12014-11-12 00:35:56 -080055
Madan Jampani23af4fc2014-11-12 00:54:18 -080056 public Builder putIfAbsent(String tableName, String key, byte[] value) {
57 writeRequests.add(WriteRequest.putIfAbsent(tableName, key, value));
58 return this;
59 }
Madan Jampani12390c12014-11-12 00:35:56 -080060
Madan Jampani23af4fc2014-11-12 00:54:18 -080061 public Builder putIfValueMatches(String tableName, String key, byte[] oldValue, byte[] newValue) {
62 writeRequests.add(WriteRequest.putIfValueMatches(tableName, key, oldValue, newValue));
63 return this;
64 }
Madan Jampani12390c12014-11-12 00:35:56 -080065
Madan Jampani23af4fc2014-11-12 00:54:18 -080066 public Builder putIfVersionMatches(String tableName, String key, byte[] value, long version) {
67 writeRequests.add(WriteRequest.putIfVersionMatches(tableName, key, value, version));
68 return this;
69 }
Madan Jampani12390c12014-11-12 00:35:56 -080070
Madan Jampani23af4fc2014-11-12 00:54:18 -080071 public Builder remove(String tableName, String key) {
72 writeRequests.add(WriteRequest.remove(tableName, key));
73 return this;
74 }
Madan Jampani12390c12014-11-12 00:35:56 -080075
Madan Jampani23af4fc2014-11-12 00:54:18 -080076 public Builder removeIfVersionMatches(String tableName, String key, long version) {
77 writeRequests.add(WriteRequest.removeIfVersionMatches(tableName, key, version));
78 return this;
79 }
Madan Jampani12390c12014-11-12 00:35:56 -080080
Madan Jampani23af4fc2014-11-12 00:54:18 -080081 public Builder removeIfValueMatches(String tableName, String key, byte[] value) {
82 writeRequests.add(WriteRequest.removeIfValueMatches(tableName, key, value));
83 return this;
84 }
Madan Jampani12390c12014-11-12 00:35:56 -080085
Madan Jampani23af4fc2014-11-12 00:54:18 -080086 public BatchWriteRequest build() {
87 return new BatchWriteRequest(writeRequests);
88 }
89 }
90}