1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.codec.prefixtree.decode;
20
21 import org.apache.hadoop.hbase.Cell;
22 import org.apache.hadoop.hbase.CellComparator;
23 import org.apache.hadoop.hbase.CellUtil;
24 import org.apache.hadoop.hbase.KeyValue;
25 import org.apache.hadoop.hbase.KeyValueUtil;
26 import org.apache.hadoop.hbase.SettableSequenceId;
27 import org.apache.hadoop.hbase.classification.InterfaceAudience;
28
29
30
31
32
33
34 @InterfaceAudience.Private
35 public class PrefixTreeCell implements Cell, SettableSequenceId, Comparable<Cell> {
36
37
38
39 public static final KeyValue.Type[] TYPES = new KeyValue.Type[256];
40 static {
41 for (KeyValue.Type type : KeyValue.Type.values()) {
42 TYPES[type.getCode() & 0xff] = type;
43 }
44 }
45
46
47 public static final KeyValue.Type DEFAULT_TYPE = KeyValue.Type.Put;
48
49
50
51 protected byte[] block;
52
53 protected boolean includeMvccVersion;
54
55 protected byte[] rowBuffer;
56 protected int rowLength;
57
58 protected byte[] familyBuffer;
59 protected int familyOffset;
60 protected int familyLength;
61
62 protected byte[] qualifierBuffer;
63 protected int qualifierOffset;
64 protected int qualifierLength;
65
66 protected Long timestamp;
67 protected Long mvccVersion;
68
69 protected KeyValue.Type type;
70
71 protected int absoluteValueOffset;
72 protected int valueLength;
73
74 protected byte[] tagsBuffer;
75 protected int tagsOffset;
76 protected int tagsLength;
77
78
79
80
81
82
83 @Override
84 public String toString() {
85 return getKeyValueString();
86 }
87
88 @Override
89 public boolean equals(Object obj) {
90 if (!(obj instanceof Cell)) {
91 return false;
92 }
93
94 return CellComparator.equalsIgnoreMvccVersion(this, (Cell)obj);
95
96
97 }
98
99 @Override
100 public int hashCode() {
101 return CellComparator.hashCodeIgnoreMvcc(this);
102 }
103
104 @Override
105 public int compareTo(Cell other) {
106 return CellComparator.compare(this, other, false);
107 }
108
109 @Override
110 public long getTimestamp() {
111 return timestamp;
112 }
113
114 @Override
115 public long getMvccVersion() {
116 if (!includeMvccVersion) {
117 return 0L;
118 }
119 return mvccVersion;
120 }
121
122 @Override
123 public long getSequenceId() {
124 return getMvccVersion();
125 }
126
127 @Override
128 public int getValueLength() {
129 return valueLength;
130 }
131
132 @Override
133 public byte[] getRowArray() {
134 return rowBuffer;
135 }
136
137 @Override
138 public int getRowOffset() {
139 return 0;
140 }
141
142 @Override
143 public short getRowLength() {
144 return (short) rowLength;
145 }
146
147 @Override
148 public byte[] getFamilyArray() {
149 return familyBuffer;
150 }
151
152 @Override
153 public int getFamilyOffset() {
154 return familyOffset;
155 }
156
157 @Override
158 public byte getFamilyLength() {
159 return (byte) familyLength;
160 }
161
162 @Override
163 public byte[] getQualifierArray() {
164 return qualifierBuffer;
165 }
166
167 @Override
168 public int getQualifierOffset() {
169 return qualifierOffset;
170 }
171
172 @Override
173 public int getQualifierLength() {
174 return qualifierLength;
175 }
176
177 @Override
178 public byte[] getValueArray() {
179 return block;
180 }
181
182 @Override
183 public int getValueOffset() {
184 return absoluteValueOffset;
185 }
186
187 @Override
188 public byte getTypeByte() {
189 return type.getCode();
190 }
191
192
193 @Override
194 public byte[] getValue() {
195 return CellUtil.cloneValue(this);
196 }
197
198 @Override
199 public byte[] getFamily() {
200 return CellUtil.cloneFamily(this);
201 }
202
203 @Override
204 public byte[] getQualifier() {
205 return CellUtil.cloneQualifier(this);
206 }
207
208 @Override
209 public byte[] getRow() {
210 return CellUtil.cloneRow(this);
211 }
212
213
214
215
216
217
218 protected String getKeyValueString(){
219 KeyValue kv = KeyValueUtil.copyToNewKeyValue(this);
220 return kv.toString();
221 }
222
223 @Override
224 public int getTagsOffset() {
225 return tagsOffset;
226 }
227
228 @Override
229 public int getTagsLength() {
230 return tagsLength;
231 }
232
233 @Override
234 public byte[] getTagsArray() {
235 return this.tagsBuffer;
236 }
237
238 @Override
239 public void setSequenceId(long seqId) {
240 mvccVersion = seqId;
241 }
242 }