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