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 public Long getValue(byte[] colFamily, byte[] colQualifier, Cell kv)
46 throws IOException {
47 if (kv == null || kv.getValueLength() != Bytes.SIZEOF_LONG)
48 return null;
49 return Bytes.toLong(kv.getValueArray(), kv.getValueOffset());
50 }
51
52 @Override
53 public Long add(Long l1, Long l2) {
54 if (l1 == null ^ l2 == null) {
55 return (l1 == null) ? l2 : l1;
56 } else if (l1 == null)
57 return null;
58 return l1 + l2;
59 }
60
61 @Override
62 public int compare(final Long l1, final Long l2) {
63 if (l1 == null ^ l2 == null) {
64 return l1 == null ? -1 : 1;
65 } else if (l1 == null)
66 return 0;
67 return l1.compareTo(l2);
68 }
69
70 @Override
71 public Long getMaxValue() {
72 return Long.MAX_VALUE;
73 }
74
75 @Override
76 public Long increment(Long o) {
77 return o == null ? null : (o + 1l);
78 }
79
80 @Override
81 public Long multiply(Long l1, Long l2) {
82 return (l1 == null || l2 == null) ? null : l1 * l2;
83 }
84
85 @Override
86 public Long getMinValue() {
87 return Long.MIN_VALUE;
88 }
89
90 @Override
91 public double divideForAvg(Long l1, Long l2) {
92 return (l2 == null || l1 == null) ? Double.NaN : (l1.doubleValue() / l2
93 .doubleValue());
94 }
95
96 @Override
97 public Long castToReturnType(Long o) {
98 return o;
99 }
100
101 @Override
102 public Long castToCellType(Long l) {
103 return l;
104 }
105
106 @Override
107 public EmptyMsg getRequestData() {
108 return EmptyMsg.getDefaultInstance();
109 }
110
111 @Override
112 public void initialize(EmptyMsg msg) {
113
114 }
115
116 @Override
117 public LongMsg getProtoForCellType(Long t) {
118 LongMsg.Builder builder = LongMsg.newBuilder();
119 return builder.setLongMsg(t).build();
120 }
121
122 @Override
123 public LongMsg getProtoForPromotedType(Long s) {
124 LongMsg.Builder builder = LongMsg.newBuilder();
125 return builder.setLongMsg(s).build();
126 }
127
128 @Override
129 public Long getPromotedValueFromProto(LongMsg r) {
130 return r.getLongMsg();
131 }
132
133 @Override
134 public Long getCellValueFromProto(LongMsg q) {
135 return q.getLongMsg();
136 }
137 }