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 private final boolean not;
35
36 public BooleanNot(final boolean not, final GenericValue arg0) {
37 super(null, arg0);
38 this.not = not;
39 }
40
41 public Class<? extends GenericValue> validateTypes(final GenericValue parentExpr,
42 final boolean allowCollections) throws HBqlException {
43 this.validateParentClass(BooleanValue.class, this.getExprArg(0).validateTypes(this, false));
44 return BooleanValue.class;
45 }
46
47 public GenericValue getOptimizedValue() throws HBqlException {
48 this.optimizeAllArgs();
49 if (!this.isAConstant())
50 return this;
51 else
52 try {
53 return new BooleanLiteral(this.getValue(null, null));
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 Boolean getValue(final HConnectionImpl conn, final Object object) throws HBqlException,
64 ResultMissingColumnException,
65 NullColumnValueException {
66 final boolean retval = (Boolean)this.getExprArg(0).getValue(conn, object);
67 return (this.not) ? !retval : retval;
68 }
69
70 public String asString() {
71 return (this.not ? "NOT " : "") + this.getExprArg(0).asString();
72 }
73 }