2
2
3
3
import static com .google .common .base .Preconditions .checkNotNull ;
4
4
5
+ import com .google .common .collect .ImmutableMap ;
6
+ import com .scalar .db .api .OperationBuilder .Attribute ;
7
+ import com .scalar .db .api .OperationBuilder .ClearAttribute ;
5
8
import com .scalar .db .api .OperationBuilder .ClearClusteringKey ;
6
9
import com .scalar .db .api .OperationBuilder .ClearCondition ;
7
10
import com .scalar .db .api .OperationBuilder .ClearNamespace ;
11
14
import com .scalar .db .api .OperationBuilder .PartitionKeyBuilder ;
12
15
import com .scalar .db .api .OperationBuilder .TableBuilder ;
13
16
import com .scalar .db .io .Key ;
17
+ import java .util .HashMap ;
18
+ import java .util .Map ;
14
19
import javax .annotation .Nullable ;
15
20
16
21
public class DeleteBuilder {
@@ -60,10 +65,14 @@ public Buildable partitionKey(Key partitionKey) {
60
65
}
61
66
62
67
public static class Buildable extends OperationBuilder .Buildable <Delete >
63
- implements ClusteringKey <Buildable >, Consistency <Buildable >, Condition <Buildable > {
68
+ implements ClusteringKey <Buildable >,
69
+ Consistency <Buildable >,
70
+ Condition <Buildable >,
71
+ Attribute <Buildable > {
64
72
@ Nullable Key clusteringKey ;
65
73
@ Nullable com .scalar .db .api .Consistency consistency ;
66
74
@ Nullable MutationCondition condition ;
75
+ final Map <String , String > attributes = new HashMap <>();
67
76
68
77
private Buildable (@ Nullable String namespace , String table , Key partitionKey ) {
69
78
super (namespace , table , partitionKey );
@@ -90,10 +99,31 @@ public Buildable consistency(com.scalar.db.api.Consistency consistency) {
90
99
return this ;
91
100
}
92
101
102
+ @ Override
103
+ public Buildable attribute (String name , String value ) {
104
+ checkNotNull (name );
105
+ checkNotNull (value );
106
+ attributes .put (name , value );
107
+ return this ;
108
+ }
109
+
110
+ @ Override
111
+ public Buildable attributes (Map <String , String > attributes ) {
112
+ checkNotNull (attributes );
113
+ this .attributes .putAll (attributes );
114
+ return this ;
115
+ }
116
+
93
117
@ Override
94
118
public Delete build () {
95
119
return new Delete (
96
- namespaceName , tableName , partitionKey , clusteringKey , consistency , condition );
120
+ namespaceName ,
121
+ tableName ,
122
+ partitionKey ,
123
+ clusteringKey ,
124
+ consistency ,
125
+ ImmutableMap .copyOf (attributes ),
126
+ condition );
97
127
}
98
128
}
99
129
@@ -103,17 +133,18 @@ public static class BuildableFromExisting extends Buildable
103
133
OperationBuilder .PartitionKey <BuildableFromExisting >,
104
134
ClearCondition <BuildableFromExisting >,
105
135
ClearClusteringKey <BuildableFromExisting >,
106
- ClearNamespace <BuildableFromExisting > {
136
+ ClearNamespace <BuildableFromExisting >,
137
+ ClearAttribute <BuildableFromExisting > {
107
138
108
139
BuildableFromExisting (Delete delete ) {
109
140
super (
110
141
delete .forNamespace ().orElse (null ),
111
142
delete .forTable ().orElse (null ),
112
143
delete .getPartitionKey ());
113
-
114
144
this .clusteringKey = delete .getClusteringKey ().orElse (null );
115
145
this .consistency = delete .getConsistency ();
116
146
this .condition = delete .getCondition ().orElse (null );
147
+ this .attributes .putAll (delete .getAttributes ());
117
148
}
118
149
119
150
@ Override
@@ -149,6 +180,18 @@ public BuildableFromExisting consistency(com.scalar.db.api.Consistency consisten
149
180
return this ;
150
181
}
151
182
183
+ @ Override
184
+ public BuildableFromExisting attribute (String name , String value ) {
185
+ super .attribute (name , value );
186
+ return this ;
187
+ }
188
+
189
+ @ Override
190
+ public BuildableFromExisting attributes (Map <String , String > attributes ) {
191
+ super .attributes (attributes );
192
+ return this ;
193
+ }
194
+
152
195
@ Override
153
196
public BuildableFromExisting condition (MutationCondition condition ) {
154
197
super .condition (condition );
@@ -172,5 +215,17 @@ public BuildableFromExisting clearNamespace() {
172
215
this .namespaceName = null ;
173
216
return this ;
174
217
}
218
+
219
+ @ Override
220
+ public BuildableFromExisting clearAttributes () {
221
+ this .attributes .clear ();
222
+ return this ;
223
+ }
224
+
225
+ @ Override
226
+ public BuildableFromExisting clearAttribute (String name ) {
227
+ this .attributes .remove (name );
228
+ return this ;
229
+ }
175
230
}
176
231
}
0 commit comments