1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18 package org.apache.hadoop.hbase.client;
19
20 import java.util.ArrayList;
21 import java.util.List;
22 import java.util.Map;
23 import java.util.NavigableMap;
24 import java.util.UUID;
25
26 import org.apache.hadoop.hbase.classification.InterfaceAudience;
27 import org.apache.hadoop.hbase.classification.InterfaceStability;
28 import org.apache.hadoop.hbase.Cell;
29 import org.apache.hadoop.hbase.CellUtil;
30 import org.apache.hadoop.hbase.KeyValue;
31 import org.apache.hadoop.hbase.security.access.Permission;
32 import org.apache.hadoop.hbase.security.visibility.CellVisibility;
33 import org.apache.hadoop.hbase.util.Bytes;
34
35
36
37
38
39
40
41
42
43
44
45
46
47 @InterfaceAudience.Public
48 @InterfaceStability.Stable
49 public class Append extends Mutation {
50 private static final String RETURN_RESULTS = "_rr_";
51
52
53
54
55
56
57 public Append setReturnResults(boolean returnResults) {
58 setAttribute(RETURN_RESULTS, Bytes.toBytes(returnResults));
59 return this;
60 }
61
62
63
64
65 public boolean isReturnResults() {
66 byte[] v = getAttribute(RETURN_RESULTS);
67 return v == null ? true : Bytes.toBoolean(v);
68 }
69
70
71
72
73
74
75
76 public Append(byte[] row) {
77 this(row, 0, row.length);
78 }
79
80
81
82
83 public Append(Append a) {
84 this.row = a.getRow();
85 this.ts = a.getTimeStamp();
86 this.familyMap.putAll(a.getFamilyCellMap());
87 for (Map.Entry<String, byte[]> entry : a.getAttributesMap().entrySet()) {
88 this.setAttribute(entry.getKey(), entry.getValue());
89 }
90 }
91
92
93
94
95
96
97
98
99 public Append(final byte [] rowArray, final int rowOffset, final int rowLength) {
100 checkRow(rowArray, rowOffset, rowLength);
101 this.row = Bytes.copy(rowArray, rowOffset, rowLength);
102 }
103
104
105
106
107
108
109
110
111 public Append add(byte [] family, byte [] qualifier, byte [] value) {
112 KeyValue kv = new KeyValue(this.row, family, qualifier, this.ts, KeyValue.Type.Put, value);
113 return add(kv);
114 }
115
116
117
118
119
120
121 @SuppressWarnings("unchecked")
122 public Append add(final Cell cell) {
123
124 byte [] family = CellUtil.cloneFamily(cell);
125 List<Cell> list = this.familyMap.get(family);
126 if (list == null) {
127 list = new ArrayList<Cell>();
128 }
129
130 list.add(cell);
131 this.familyMap.put(family, list);
132 return this;
133 }
134
135 @Override
136 public Append setAttribute(String name, byte[] value) {
137 return (Append) super.setAttribute(name, value);
138 }
139
140 @Override
141 public Append setId(String id) {
142 return (Append) super.setId(id);
143 }
144
145 @Override
146 @Deprecated
147 public Append setWriteToWAL(boolean write) {
148 return (Append) super.setWriteToWAL(write);
149 }
150
151 @Override
152 public Append setDurability(Durability d) {
153 return (Append) super.setDurability(d);
154 }
155
156 @Override
157 public Append setFamilyCellMap(NavigableMap<byte[], List<Cell>> map) {
158 return (Append) super.setFamilyCellMap(map);
159 }
160
161 @Override
162 @Deprecated
163 public Append setFamilyMap(NavigableMap<byte[], List<KeyValue>> map) {
164 return (Append) super.setFamilyMap(map);
165 }
166
167 @Override
168 public Append setClusterIds(List<UUID> clusterIds) {
169 return (Append) super.setClusterIds(clusterIds);
170 }
171
172 @Override
173 public Append setCellVisibility(CellVisibility expression) {
174 return (Append) super.setCellVisibility(expression);
175 }
176
177 @Override
178 public Append setACL(String user, Permission perms) {
179 return (Append) super.setACL(user, perms);
180 }
181
182 @Override
183 public Append setACL(Map<String, Permission> perms) {
184 return (Append) super.setACL(perms);
185 }
186
187 @Override
188 public Append setTTL(long ttl) {
189 return (Append) super.setTTL(ttl);
190 }
191 }