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