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.args;
22
23 import org.apache.expreval.expr.node.GenericValue;
24 import org.apache.hadoop.hbase.client.Get;
25 import org.apache.hadoop.hbase.client.Scan;
26 import org.apache.hadoop.hbase.hbql.client.HBqlException;
27
28 import java.io.IOException;
29
30 public class TimestampArgs extends SelectStatementArgs {
31
32 final boolean aSingleValue;
33
34 public TimestampArgs(final GenericValue arg0) {
35 super(ArgType.TIMESTAMPRANGE, arg0, arg0);
36 this.aSingleValue = true;
37 }
38
39 public TimestampArgs(final GenericValue arg0, final GenericValue arg1) {
40 super(ArgType.TIMESTAMPRANGE, arg0, arg1);
41 this.aSingleValue = false;
42 }
43
44 private long getLower() throws HBqlException {
45 return (Long)this.evaluateConstant(0, false);
46 }
47
48 private long getUpper() throws HBqlException {
49 return (Long)this.evaluateConstant(1, false);
50 }
51
52 private boolean isASingleValue() {
53 return this.aSingleValue;
54 }
55
56 public String asString() {
57 if (this.isASingleValue())
58 return "TIMESTAMP " + this.getGenericValue(0).asString();
59 else
60 return "TIMESTAMP RANGE " + this.getGenericValue(0).asString() + " TO "
61 + this.getGenericValue(1).asString();
62 }
63
64 public void setTimeStamp(final Get get) throws HBqlException {
65 try {
66 if (this.isASingleValue())
67 get.setTimeStamp(this.getLower());
68 else
69 get.setTimeRange(this.getLower(), this.getUpper());
70 }
71 catch (IOException e) {
72 throw new HBqlException(e);
73 }
74 }
75
76 public void setTimeStamp(final Scan scan) throws HBqlException {
77 try {
78 if (this.isASingleValue())
79 scan.setTimeStamp(this.getLower());
80 else
81 scan.setTimeRange(this.getLower(), this.getUpper());
82 }
83 catch (IOException e) {
84 throw new HBqlException(e);
85 }
86 }
87 }