blob: 1561c2d5e95bb2855d1b99768dc350f8c2f96bf4 [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
Yuta HIGUCHI3a3ac962014-11-04 18:05:08 -080018 // put regardless of previous value
Madan Jampani08822c42014-11-04 17:17:46 -080019 public WriteRequest(String tableName, String key, byte[] newValue) {
20 this(tableName, key, newValue, -1, null);
21 }
22
Yuta HIGUCHI3a3ac962014-11-04 18:05:08 -080023 // put if version matches
Madan Jampani08822c42014-11-04 17:17:46 -080024 public WriteRequest(String tableName, String key, byte[] newValue, long previousVersion) {
25 this(tableName, key, newValue, previousVersion, null);
26 checkArgument(previousVersion >= 0);
27 }
28
Yuta HIGUCHI3a3ac962014-11-04 18:05:08 -080029 // put if value matches
Madan Jampani08822c42014-11-04 17:17:46 -080030 public WriteRequest(String tableName, String key, byte[] newValue, byte[] oldValue) {
31 this(tableName, key, newValue, -1, oldValue);
32 }
33
Yuta HIGUCHI3a3ac962014-11-04 18:05:08 -080034 // hidden constructor
Madan Jampani08822c42014-11-04 17:17:46 -080035 private WriteRequest(String tableName, String key, byte[] newValue, long previousVersion, byte[] oldValue) {
36
37 checkArgument(tableName != null);
38 checkArgument(key != null);
39 checkArgument(newValue != null);
40
41 this.tableName = tableName;
42 this.key = key;
43 this.newValue = newValue;
44 this.previousVersion = previousVersion;
45 this.oldValue = oldValue;
46 }
47
48 public String tableName() {
49 return tableName;
50 }
51
52 public String key() {
53 return key;
54 }
55
56 public byte[] newValue() {
57 return newValue;
58 }
59
60 public long previousVersion() {
61 return previousVersion;
62 }
63
64 public byte[] oldValue() {
65 return oldValue;
66 }
67
68 @Override
69 public String toString() {
70 return "WriteRequest [tableName=" + tableName + ", key=" + key
71 + ", newValue=" + newValue
72 + ", previousVersion=" + previousVersion
73 + ", oldValue=" + oldValue;
74 }
75
76 @Override
77 public int hashCode() {
78 return Objects.hash(key, tableName, previousVersion);
79 }
80
81 @Override
82 public boolean equals(Object obj) {
83 if (this == obj) {
84 return true;
85 }
86 if (obj == null) {
87 return false;
88 }
89 if (getClass() != obj.getClass()) {
90 return false;
91 }
92 WriteRequest other = (WriteRequest) obj;
93 return Objects.equals(this.key, other.key) &&
94 Objects.equals(this.tableName, other.tableName) &&
95 Objects.equals(this.previousVersion, other.previousVersion);
96 }
97}