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.casestmt;
22
23 import org.apache.expreval.client.NullColumnValueException;
24 import org.apache.expreval.client.ResultMissingColumnException;
25 import org.apache.expreval.expr.TypeSupport;
26 import org.apache.expreval.expr.node.BooleanValue;
27 import org.apache.expreval.expr.node.DateValue;
28 import org.apache.expreval.expr.node.GenericValue;
29 import org.apache.expreval.expr.node.NumberValue;
30 import org.apache.expreval.expr.node.StringValue;
31 import org.apache.hadoop.hbase.hbql.client.HBqlException;
32 import org.apache.hadoop.hbase.hbql.impl.HConnectionImpl;
33 import org.apache.hadoop.hbase.hbql.impl.InvalidTypeException;
34
35 public class DelegateCaseElse extends GenericCaseElse {
36
37 public DelegateCaseElse(final GenericValue arg0) {
38 super(null, arg0);
39 }
40
41 public Class<? extends GenericValue> validateTypes(final GenericValue parentExpr,
42 final boolean allowCollections) throws HBqlException {
43
44 final Class<? extends GenericValue> type0 = this.getExprArg(0).validateTypes(this, false);
45
46 if (TypeSupport.isParentClass(StringValue.class, type0))
47 this.setTypedExpr(new StringCaseElse(this.getExprArg(0)));
48 else if (TypeSupport.isParentClass(NumberValue.class, type0))
49 this.setTypedExpr(new NumberCaseElse(this.getExprArg(0)));
50 else if (TypeSupport.isParentClass(DateValue.class, type0))
51 this.setTypedExpr(new DateCaseElse(this.getExprArg(0)));
52 else if (TypeSupport.isParentClass(BooleanValue.class, type0))
53 this.setTypedExpr(new BooleanCaseElse(this.getExprArg(0)));
54 else
55 throw new InvalidTypeException(this.getInvalidTypeMsg(type0));
56
57 return this.getTypedExpr().validateTypes(parentExpr, false);
58 }
59
60 public GenericValue getOptimizedValue() throws HBqlException {
61 this.optimizeAllArgs();
62 return !this.isAConstant() ? this : this.getTypedExpr().getOptimizedValue();
63 }
64
65 public Object getValue(final HConnectionImpl conn, final Object object) throws HBqlException,
66 ResultMissingColumnException,
67 NullColumnValueException {
68 return this.getTypedExpr().getValue(conn, object);
69 }
70 }