blob: 1cf422cf886d151eebbe3b21f6682ed7938a3910 [file] [log] [blame]
Madan Jampani12390c12014-11-12 00:35:56 -08001package org.onlab.onos.store.service;
2
3import java.util.Collections;
4import java.util.List;
5
6import com.google.common.collect.Lists;
7
8/**
9 * Collection of read requests to be submitted as one batch.
10 */
11public class BatchReadRequest {
12
13 private final List<ReadRequest> readRequests;
14
15 /**
16 * Creates a new BatchReadRequest object from the specified list of read requests.
17 * @param readRequests read requests.
18 * @return BatchReadRequest object.
19 */
20 public static BatchReadRequest create(List<ReadRequest> readRequests) {
21 return new BatchReadRequest(readRequests);
22 }
23
24 private BatchReadRequest(List<ReadRequest> readRequests) {
25 this.readRequests = Collections.unmodifiableList(readRequests);
26 }
27
28 /**
29 * Returns the number of requests in this batch.
30 * @return size of request batch.
31 */
32 public int batchSize() {
33 return readRequests.size();
34 }
35
36 /**
37 * Returns the requests in this batch as a list.
38 * @return list of read requests
39 */
40 public List<ReadRequest> getAsList() {
41 return readRequests;
42 }
43
44 /**
45 * Builder for BatchReadRequest.
46 */
47 public static class Builder {
48
49 private final List<ReadRequest> readRequests = Lists.newLinkedList();
50
51 /**
52 * Append a get request.
53 * @param tableName table name
54 * @param key key to fetch.
55 * @return this Builder
56 */
57 public Builder get(String tableName, String key) {
58 readRequests.add(new ReadRequest(tableName, key));
59 return this;
60 }
61
62 /**
63 * Builds a BatchReadRequest
64 * @return BatchReadRequest
65 */
66 public BatchReadRequest build() {
67 return new BatchReadRequest(readRequests);
68 }
69 }
70}