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.stringpattern;
22
23 import org.apache.expreval.client.NullColumnValueException;
24 import org.apache.expreval.client.ResultMissingColumnException;
25 import org.apache.expreval.expr.node.GenericValue;
26 import org.apache.hadoop.hbase.hbql.client.HBqlException;
27 import org.apache.hadoop.hbase.hbql.impl.HConnectionImpl;
28
29 import java.util.regex.Matcher;
30 import java.util.regex.Pattern;
31
32 public class LikeStmt extends GenericStringPatternStmt {
33
34 private Pattern pattern = null;
35
36 public LikeStmt(final GenericValue arg0, final boolean not, final GenericValue arg1) {
37 super(arg0, not, arg1);
38 }
39
40 private Pattern getPattern() {
41 return this.pattern;
42 }
43
44 protected String getFunctionName() {
45 return "LIKE";
46 }
47
48 public Boolean getValue(final HConnectionImpl conn, final Object object) throws HBqlException,
49 ResultMissingColumnException,
50 NullColumnValueException {
51 final String val = (String)this.getExprArg(0).getValue(conn, object);
52
53 if (val == null)
54 throw new HBqlException("Null string for value in " + this.asString());
55
56 final boolean patternConstant = this.getExprArg(1).isAConstant();
57
58 if (!patternConstant || this.getPattern() == null) {
59
60 final String pvalue = (String)this.getExprArg(1).getValue(conn, object);
61
62 if (pvalue == null)
63 throw new HBqlException("Null string for pattern in " + this.asString());
64
65 this.pattern = Pattern.compile(pvalue);
66 }
67
68 final Matcher m = this.getPattern().matcher(val);
69
70 final boolean retval = m.matches();
71
72 return (this.isNot()) ? !retval : retval;
73 }
74 }