1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.hadoop.hbase.hbql.statement.select;
22
23 import org.apache.expreval.client.InternalErrorException;
24 import org.apache.expreval.client.NullColumnValueException;
25 import org.apache.expreval.client.ResultMissingColumnException;
26 import org.apache.expreval.expr.MultipleExpressionContext;
27 import org.apache.expreval.expr.node.GenericValue;
28 import org.apache.hadoop.hbase.hbql.client.HBqlException;
29 import org.apache.hadoop.hbase.hbql.impl.HConnectionImpl;
30 import org.apache.hadoop.hbase.hbql.mapping.MappingContext;
31
32 public class SimpleExpressionContext extends MultipleExpressionContext {
33
34 public SimpleExpressionContext(final GenericValue genericValue) {
35 super(null, genericValue);
36 }
37
38 private GenericValue getGenericValue() {
39 return this.getGenericValue(0);
40 }
41
42 public boolean isAConstant() {
43 return this.getGenericValue().isAConstant();
44 }
45
46 public void validate() throws HBqlException {
47 this.validateTypes(this.allowColumns(), false);
48 }
49
50 public Object getValue(final HConnectionImpl conn) throws HBqlException {
51 try {
52 this.setMappingContext(new MappingContext());
53 return this.evaluate(conn, 0, this.allowColumns(), false, conn);
54 }
55 catch (ResultMissingColumnException e) {
56 throw new InternalErrorException("Missing column: " + e.getMessage());
57 }
58 catch (NullColumnValueException e) {
59 throw new InternalErrorException("Null value: " + e.getMessage());
60 }
61 }
62
63 public String asString() {
64 return this.getGenericValue().asString();
65 }
66
67 public boolean useResultData() {
68 return true;
69 }
70
71 public boolean allowColumns() {
72 return true;
73 }
74 }