1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19 package org.apache.hadoop.hbase.client.coprocessor;
20
21 import java.io.IOException;
22
23 import org.apache.hadoop.hbase.classification.InterfaceAudience;
24 import org.apache.hadoop.hbase.classification.InterfaceStability;
25 import org.apache.hadoop.hbase.Cell;
26 import org.apache.hadoop.hbase.HBaseInterfaceAudience;
27 import org.apache.hadoop.hbase.coprocessor.ColumnInterpreter;
28 import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.EmptyMsg;
29 import org.apache.hadoop.hbase.protobuf.generated.HBaseProtos.LongMsg;
30 import org.apache.hadoop.hbase.util.Bytes;
31
32
33
34
35
36
37
38
39
40 @InterfaceAudience.LimitedPrivate(HBaseInterfaceAudience.COPROC)
41 @InterfaceStability.Evolving
42 public class LongColumnInterpreter extends ColumnInterpreter<Long, Long,
43 EmptyMsg, LongMsg, LongMsg> {
44
45 @Override
46 public Long getValue(byte[] colFamily, byte[] colQualifier, Cell kv)
47 throws IOException {
48 if (kv == null || kv.getValueLength() != Bytes.SIZEOF_LONG)
49 return null;
50 return Bytes.toLong(kv.getValueArray(), kv.getValueOffset());
51 }
52
53 @Override
54 public Long add(Long l1, Long l2) {
55 if (l1 == null ^ l2 == null) {
56 return (l1 == null) ? l2 : l1;
57 } else if (l1 == null)
58 return null;
59 return l1 + l2;
60 }
61
62 @Override
63 public int compare(final Long l1, final Long l2) {
64 if (l1 == null ^ l2 == null) {
65 return l1 == null ? -1 : 1;
66 } else if (l1 == null)
67 return 0;
68 return l1.compareTo(l2);
69 }
70
71 @Override
72 public Long getMaxValue() {
73 return Long.MAX_VALUE;
74 }
75
76 @Override
77 public Long increment(Long o) {
78 return o == null ? null : (o + 1l);
79 }
80
81 @Override
82 public Long multiply(Long l1, Long l2) {
83 return (l1 == null || l2 == null) ? null : l1 * l2;
84 }
85
86 @Override
87 public Long getMinValue() {
88 return Long.MIN_VALUE;
89 }
90
91 @Override
92 public double divideForAvg(Long l1, Long l2) {
93 return (l2 == null || l1 == null) ? Double.NaN : (l1.doubleValue() / l2
94 .doubleValue());
95 }
96
97 @Override
98 public Long castToReturnType(Long o) {
99 return o;
100 }
101
102 @Override
103 public Long castToCellType(Long l) {
104 return l;
105 }
106
107 @Override
108 public EmptyMsg getRequestData() {
109 return EmptyMsg.getDefaultInstance();
110 }
111
112 @Override
113 public void initialize(EmptyMsg msg) {
114
115 }
116
117 @Override
118 public LongMsg getProtoForCellType(Long t) {
119 LongMsg.Builder builder = LongMsg.newBuilder();
120 return builder.setLongMsg(t).build();
121 }
122
123 @Override
124 public LongMsg getProtoForPromotedType(Long s) {
125 LongMsg.Builder builder = LongMsg.newBuilder();
126 return builder.setLongMsg(s).build();
127 }
128
129 @Override
130 public Long getPromotedValueFromProto(LongMsg r) {
131 return r.getLongMsg();
132 }
133
134 @Override
135 public Long getCellValueFromProto(LongMsg q) {
136 return q.getLongMsg();
137 }
138 }