blob: 7314e4f653ab5b5ad00243d1f0ae28fae6c441cb [file] [log] [blame]
Madan Jampani08822c42014-11-04 17:17:46 -08001package org.onlab.onos.store.service;
2
3import static com.google.common.base.Preconditions.checkArgument;
4
5import java.util.Objects;
6
7/**
8 * Database write request.
9 */
10public class WriteRequest {
11
12 private final String tableName;
13 private final String key;
14 private final byte[] newValue;
15 private final long previousVersion;
16 private final byte[] oldValue;
17
18 public WriteRequest(String tableName, String key, byte[] newValue) {
19 this(tableName, key, newValue, -1, null);
20 }
21
22 public WriteRequest(String tableName, String key, byte[] newValue, long previousVersion) {
23 this(tableName, key, newValue, previousVersion, null);
24 checkArgument(previousVersion >= 0);
25 }
26
27 public WriteRequest(String tableName, String key, byte[] newValue, byte[] oldValue) {
28 this(tableName, key, newValue, -1, oldValue);
29 }
30
31 private WriteRequest(String tableName, String key, byte[] newValue, long previousVersion, byte[] oldValue) {
32
33 checkArgument(tableName != null);
34 checkArgument(key != null);
35 checkArgument(newValue != null);
36
37 this.tableName = tableName;
38 this.key = key;
39 this.newValue = newValue;
40 this.previousVersion = previousVersion;
41 this.oldValue = oldValue;
42 }
43
44 public String tableName() {
45 return tableName;
46 }
47
48 public String key() {
49 return key;
50 }
51
52 public byte[] newValue() {
53 return newValue;
54 }
55
56 public long previousVersion() {
57 return previousVersion;
58 }
59
60 public byte[] oldValue() {
61 return oldValue;
62 }
63
64 @Override
65 public String toString() {
66 return "WriteRequest [tableName=" + tableName + ", key=" + key
67 + ", newValue=" + newValue
68 + ", previousVersion=" + previousVersion
69 + ", oldValue=" + oldValue;
70 }
71
72 @Override
73 public int hashCode() {
74 return Objects.hash(key, tableName, previousVersion);
75 }
76
77 @Override
78 public boolean equals(Object obj) {
79 if (this == obj) {
80 return true;
81 }
82 if (obj == null) {
83 return false;
84 }
85 if (getClass() != obj.getClass()) {
86 return false;
87 }
88 WriteRequest other = (WriteRequest) obj;
89 return Objects.equals(this.key, other.key) &&
90 Objects.equals(this.tableName, other.tableName) &&
91 Objects.equals(this.previousVersion, other.previousVersion);
92 }
93}