blob: 86d19b2ee81ce0ad6dfc31c64d622856d3322c88 [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 read requests to be submitted as one batch.
10 */
Madan Jampani23af4fc2014-11-12 00:54:18 -080011public final class BatchReadRequest {
Madan Jampani12390c12014-11-12 00:35:56 -080012
Madan Jampani23af4fc2014-11-12 00:54:18 -080013 private final List<ReadRequest> readRequests;
Madan Jampani12390c12014-11-12 00:35:56 -080014
Madan Jampani23af4fc2014-11-12 00:54:18 -080015 /**
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 }
Madan Jampani12390c12014-11-12 00:35:56 -080023
Madan Jampani23af4fc2014-11-12 00:54:18 -080024 private BatchReadRequest(List<ReadRequest> readRequests) {
Madan Jampani7aad2332014-11-12 01:57:07 -080025 this.readRequests = ImmutableList.copyOf(readRequests);
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 number of requests in this batch.
30 * @return size of request batch.
31 */
32 public int batchSize() {
33 return readRequests.size();
34 }
Madan Jampani12390c12014-11-12 00:35:56 -080035
Madan Jampani23af4fc2014-11-12 00:54:18 -080036 /**
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 }
Madan Jampani12390c12014-11-12 00:35:56 -080043
Madan Jampani23af4fc2014-11-12 00:54:18 -080044 /**
45 * Builder for BatchReadRequest.
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<ReadRequest> readRequests = Lists.newLinkedList();
Madan Jampani12390c12014-11-12 00:35:56 -080050
Madan Jampani23af4fc2014-11-12 00:54:18 -080051 /**
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 }
Madan Jampani12390c12014-11-12 00:35:56 -080061
Madan Jampani23af4fc2014-11-12 00:54:18 -080062 /**
63 * Builds a BatchReadRequest.
64 * @return BatchReadRequest
65 */
66 public BatchReadRequest build() {
67 return new BatchReadRequest(readRequests);
68 }
69 }
70}