blob: ce08640a78c72ca9c30edd102e775c1236e45ac8 [file] [log] [blame]
Brian O'Connorabafb502014-12-02 22:26:20 -08001package org.onosproject.store.service;
Madan Jampani12390c12014-11-12 00:35:56 -08002
Madan Jampani12390c12014-11-12 00:35:56 -08003import java.util.List;
4
Madan Jampanif5d263b2014-11-13 10:04:40 -08005import com.google.common.base.MoreObjects;
Madan Jampani7aad2332014-11-12 01:57:07 -08006import com.google.common.collect.ImmutableList;
Madan Jampani12390c12014-11-12 00:35:56 -08007import com.google.common.collect.Lists;
8
9/**
10 * Collection of read requests to be submitted as one batch.
11 */
Madan Jampani23af4fc2014-11-12 00:54:18 -080012public final class BatchReadRequest {
Madan Jampani12390c12014-11-12 00:35:56 -080013
Madan Jampani23af4fc2014-11-12 00:54:18 -080014 private final List<ReadRequest> readRequests;
Madan Jampani12390c12014-11-12 00:35:56 -080015
Madan Jampani23af4fc2014-11-12 00:54:18 -080016 /**
17 * Creates a new BatchReadRequest object from the specified list of read requests.
18 * @param readRequests read requests.
19 * @return BatchReadRequest object.
20 */
21 public static BatchReadRequest create(List<ReadRequest> readRequests) {
22 return new BatchReadRequest(readRequests);
23 }
Madan Jampani12390c12014-11-12 00:35:56 -080024
Madan Jampani23af4fc2014-11-12 00:54:18 -080025 private BatchReadRequest(List<ReadRequest> readRequests) {
Madan Jampani7aad2332014-11-12 01:57:07 -080026 this.readRequests = ImmutableList.copyOf(readRequests);
Madan Jampani23af4fc2014-11-12 00:54:18 -080027 }
Madan Jampani12390c12014-11-12 00:35:56 -080028
Madan Jampani23af4fc2014-11-12 00:54:18 -080029 /**
30 * Returns the number of requests in this batch.
31 * @return size of request batch.
32 */
33 public int batchSize() {
34 return readRequests.size();
35 }
Madan Jampani12390c12014-11-12 00:35:56 -080036
Madan Jampani23af4fc2014-11-12 00:54:18 -080037 /**
38 * Returns the requests in this batch as a list.
39 * @return list of read requests
40 */
41 public List<ReadRequest> getAsList() {
42 return readRequests;
43 }
Madan Jampani12390c12014-11-12 00:35:56 -080044
Madan Jampanif5d263b2014-11-13 10:04:40 -080045 @Override
46 public String toString() {
47 return MoreObjects.toStringHelper(getClass())
48 .add("readRequests", readRequests)
49 .toString();
50 }
51
Madan Jampani23af4fc2014-11-12 00:54:18 -080052 /**
53 * Builder for BatchReadRequest.
54 */
55 public static class Builder {
Madan Jampani12390c12014-11-12 00:35:56 -080056
Madan Jampani23af4fc2014-11-12 00:54:18 -080057 private final List<ReadRequest> readRequests = Lists.newLinkedList();
Madan Jampani12390c12014-11-12 00:35:56 -080058
Madan Jampani23af4fc2014-11-12 00:54:18 -080059 /**
60 * Append a get request.
61 * @param tableName table name
62 * @param key key to fetch.
63 * @return this Builder
64 */
65 public Builder get(String tableName, String key) {
66 readRequests.add(new ReadRequest(tableName, key));
67 return this;
68 }
Madan Jampani12390c12014-11-12 00:35:56 -080069
Madan Jampani23af4fc2014-11-12 00:54:18 -080070 /**
71 * Builds a BatchReadRequest.
72 * @return BatchReadRequest
73 */
74 public BatchReadRequest build() {
75 return new BatchReadRequest(readRequests);
76 }
77 }
78}