1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21 package org.apache.expreval.expr;
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.literal.BooleanLiteral;
27 import org.apache.expreval.expr.node.BooleanValue;
28 import org.apache.expreval.expr.node.GenericValue;
29 import org.apache.hadoop.hbase.hbql.client.HBqlException;
30 import org.apache.hadoop.hbase.hbql.impl.HConnectionImpl;
31
32 public class BooleanNot extends GenericExpression implements BooleanValue {
33
34 public BooleanNot(final GenericValue arg0) {
35 super(null, arg0);
36 }
37
38 public Class<? extends GenericValue> validateTypes(final GenericValue parentExpr,
39 final boolean allowCollections) throws HBqlException {
40 this.validateParentClass(BooleanValue.class, this.getExprArg(0).validateTypes(this, false));
41 return BooleanValue.class;
42 }
43
44 public GenericValue getOptimizedValue() throws HBqlException {
45 this.optimizeAllArgs();
46 if (!this.isAConstant())
47 return this;
48 else
49 try {
50 return new BooleanLiteral(this.getValue(null, null));
51 }
52 catch (ResultMissingColumnException e) {
53 throw new InternalErrorException("Missing column: " + e.getMessage());
54 }
55 catch (NullColumnValueException e) {
56 throw new InternalErrorException("Null value: " + e.getMessage());
57 }
58 }
59
60 public Boolean getValue(final HConnectionImpl conn, final Object object) throws HBqlException,
61 ResultMissingColumnException,
62 NullColumnValueException {
63 final boolean retval = (Boolean)this.getExprArg(0).getValue(conn, object);
64 return !retval;
65 }
66
67 public String asString() {
68 return "NOT " + this.getExprArg(0).asString();
69 }
70 }