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
74
75
76
77
78
79 @Override
80 public String toString() {
81 return getKeyValueString();
82 }
83
84 @Override
85 public boolean equals(Object obj) {
86 if (!(obj instanceof Cell)) {
87 return false;
88 }
89
90 return CellComparator.equalsIgnoreMvccVersion(this, (Cell)obj);
91
92
93 }
94
95 @Override
96 public int hashCode(){
97
98
99 return KeyValueUtil.copyToNewKeyValue(this).hashCode();
100
101
102 }
103
104 @Override
105 public int compareTo(Cell other) {
106 return CellComparator.compareStatic(this, other);
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 int getValueLength() {
124 return valueLength;
125 }
126
127 @Override
128 public byte[] getRowArray() {
129 return rowBuffer;
130 }
131
132 @Override
133 public int getRowOffset() {
134 return 0;
135 }
136
137 @Override
138 public short getRowLength() {
139 return (short) rowLength;
140 }
141
142 @Override
143 public byte[] getFamilyArray() {
144 return familyBuffer;
145 }
146
147 @Override
148 public int getFamilyOffset() {
149 return familyOffset;
150 }
151
152 @Override
153 public byte getFamilyLength() {
154 return (byte) familyLength;
155 }
156
157 @Override
158 public byte[] getQualifierArray() {
159 return qualifierBuffer;
160 }
161
162 @Override
163 public int getQualifierOffset() {
164 return qualifierOffset;
165 }
166
167 @Override
168 public int getQualifierLength() {
169 return qualifierLength;
170 }
171
172 @Override
173 public byte[] getValueArray() {
174 return block;
175 }
176
177 @Override
178 public int getValueOffset() {
179 return absoluteValueOffset;
180 }
181
182 @Override
183 public byte getTypeByte() {
184 return type.getCode();
185 }
186
187
188 @Override
189 public byte[] getValue() {
190 return CellUtil.cloneValue(this);
191 }
192
193 @Override
194 public byte[] getFamily() {
195 return CellUtil.cloneFamily(this);
196 }
197
198 @Override
199 public byte[] getQualifier() {
200 return CellUtil.cloneQualifier(this);
201 }
202
203 @Override
204 public byte[] getRow() {
205 return CellUtil.cloneRow(this);
206 }
207
208
209
210
211
212
213 protected String getKeyValueString(){
214 KeyValue kv = KeyValueUtil.copyToNewKeyValue(this);
215 return kv.toString();
216 }
217
218 @Override
219 public int getTagsOffset() {
220 throw new UnsupportedOperationException("Not implemented");
221 }
222
223 @Override
224 public short getTagsLength() {
225 throw new UnsupportedOperationException("Not implemented");
226 }
227
228 @Override
229 public byte[] getTagsArray() {
230 throw new UnsupportedOperationException("Not implemented");
231 }
232
233 }