1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.hadoop.hbase.filter;
21
22 import com.google.protobuf.InvalidProtocolBufferException;
23 import org.apache.hadoop.hbase.classification.InterfaceAudience;
24 import org.apache.hadoop.hbase.classification.InterfaceStability;
25 import org.apache.hadoop.hbase.exceptions.DeserializationException;
26 import org.apache.hadoop.hbase.protobuf.generated.ComparatorProtos;
27 import org.apache.hadoop.hbase.util.Bytes;
28
29
30
31
32
33 @InterfaceAudience.Public
34 @InterfaceStability.Stable
35 public class BinaryComparator extends ByteArrayComparable {
36
37
38
39
40
41 public BinaryComparator(byte[] value) {
42 super(value);
43 }
44
45 @Override
46 public int compareTo(byte [] value, int offset, int length) {
47 return Bytes.compareTo(this.value, 0, this.value.length, value, offset, length);
48 }
49
50
51
52
53 public byte [] toByteArray() {
54 ComparatorProtos.BinaryComparator.Builder builder =
55 ComparatorProtos.BinaryComparator.newBuilder();
56 builder.setComparable(super.convert());
57 return builder.build().toByteArray();
58 }
59
60
61
62
63
64
65
66 public static BinaryComparator parseFrom(final byte [] pbBytes)
67 throws DeserializationException {
68 ComparatorProtos.BinaryComparator proto;
69 try {
70 proto = ComparatorProtos.BinaryComparator.parseFrom(pbBytes);
71 } catch (InvalidProtocolBufferException e) {
72 throw new DeserializationException(e);
73 }
74 return new BinaryComparator(proto.getComparable().getValue().toByteArray());
75 }
76
77
78
79
80
81
82 boolean areSerializedFieldsEqual(ByteArrayComparable other) {
83 if (other == this) return true;
84 if (!(other instanceof BinaryComparator)) return false;
85
86 return super.areSerializedFieldsEqual(other);
87 }
88 }