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.classification.InterfaceAudience;
24 import org.apache.hadoop.classification.InterfaceStability;
25 import org.apache.hadoop.hbase.Cell;
26 import org.apache.hadoop.hbase.KeyValue;
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.DoubleMsg;
30 import org.apache.hadoop.hbase.util.Bytes;
31
32
33
34
35
36
37
38
39
40 @InterfaceAudience.Public
41 @InterfaceStability.Evolving
42 public class DoubleColumnInterpreter extends ColumnInterpreter<Double, Double,
43 EmptyMsg, DoubleMsg, DoubleMsg>{
44
45 @Override
46 public Double getValue(byte[] colFamily, byte[] colQualifier, Cell c)
47 throws IOException {
48 if (c == null || c.getValueLength() != Bytes.SIZEOF_DOUBLE)
49 return null;
50 return Bytes.toDouble(c.getValueArray(), c.getValueOffset());
51 }
52
53 @Override
54 public Double add(Double d1, Double d2) {
55 if (d1 == null || d2 == null) {
56 return (d1 == null) ? d2 : d1;
57 }
58 return d1 + d2;
59 }
60
61 @Override
62 public int compare(final Double d1, final Double d2) {
63 if (d1 == null ^ d2 == null) {
64 return d1 == null ? -1 : 1;
65 } else if (d1 == null)
66 return 0;
67 return d1.compareTo(d2);
68 }
69
70 @Override
71 public Double getMaxValue() {
72 return Double.MAX_VALUE;
73 }
74
75 @Override
76 public Double increment(Double o) {
77 return o == null ? null : (o + 1.00d);
78 }
79
80 @Override
81 public Double multiply(Double d1, Double d2) {
82 return (d1 == null || d2 == null) ? null : d1 * d2;
83 }
84
85 @Override
86 public Double getMinValue() {
87 return Double.MIN_VALUE;
88 }
89
90 @Override
91 public double divideForAvg(Double d1, Long l2) {
92 return (l2 == null || d1 == null) ? Double.NaN : (d1.doubleValue() / l2
93 .doubleValue());
94 }
95
96 @Override
97 public Double castToReturnType(Double o) {
98 return o;
99 }
100
101 @Override
102 public Double castToCellType(Double d) {
103 return d;
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 DoubleMsg getProtoForCellType(Double t) {
118 DoubleMsg.Builder builder = DoubleMsg.newBuilder();
119 return builder.setDoubleMsg(t).build();
120 }
121
122 @Override
123 public DoubleMsg getProtoForPromotedType(Double s) {
124 DoubleMsg.Builder builder = DoubleMsg.newBuilder();
125 return builder.setDoubleMsg(s).build();
126 }
127
128 @Override
129 public Double getPromotedValueFromProto(DoubleMsg r) {
130 return r.getDoubleMsg();
131 }
132
133 @Override
134 public Double getCellValueFromProto(DoubleMsg q) {
135 return q.getDoubleMsg();
136 }
137 }