svn-gvsig-desktop / trunk / libraries / libGDBMS / src / com / hardcode / gdbms / engine / instruction / TermAdapter.java @ 466
History | View | Annotate | Download (2.55 KB)
1 | 466 | fernando | /* Generated by Together */
|
---|---|---|---|
2 | package com.hardcode.gdbms.engine.instruction; |
||
3 | |||
4 | import com.hardcode.gdbms.engine.data.DriverException; |
||
5 | import com.hardcode.gdbms.engine.values.Value; |
||
6 | import com.hardcode.gdbms.parser.ASTSQLColRef; |
||
7 | import com.hardcode.gdbms.parser.ASTSQLFunction; |
||
8 | import com.hardcode.gdbms.parser.ASTSQLLiteral; |
||
9 | import com.hardcode.gdbms.parser.ASTSQLOrExpr; |
||
10 | import com.hardcode.gdbms.parser.SimpleNode; |
||
11 | |||
12 | |||
13 | /**
|
||
14 | * Wrapper sobre el nodo Term del arbol sint?ctico
|
||
15 | *
|
||
16 | * @author Fernando Gonz?lez Cort?s
|
||
17 | */
|
||
18 | public class TermAdapter extends AbstractExpression implements Expression { |
||
19 | /**
|
||
20 | * @see com.hardcode.gdbms.engine.instruction.Expression#evaluate(long)
|
||
21 | */
|
||
22 | public Value evaluate(long row) throws SemanticException, DriverException { |
||
23 | Adapter[] hijos = getChilds();
|
||
24 | |||
25 | if (hijos[0] instanceof Expression) { |
||
26 | return ((Expression) hijos[0]).evaluateExpression(row); |
||
27 | } else {
|
||
28 | return null; |
||
29 | } |
||
30 | } |
||
31 | |||
32 | /**
|
||
33 | * @see com.hardcode.gdbms.engine.instruction.Expression#getFieldName()
|
||
34 | */
|
||
35 | public String getFieldName() { |
||
36 | SimpleNode child = (SimpleNode) getEntity().jjtGetChild(0);
|
||
37 | |||
38 | if (child.first_token.image.equals("(")) { |
||
39 | child = (SimpleNode) getEntity().jjtGetChild(0);
|
||
40 | } |
||
41 | |||
42 | if (child.getClass() == ASTSQLColRef.class) {
|
||
43 | return Utilities.getText(child); |
||
44 | } else {
|
||
45 | return null; |
||
46 | } |
||
47 | } |
||
48 | |||
49 | /**
|
||
50 | * @see com.hardcode.gdbms.engine.instruction.Expression#isLiteral()
|
||
51 | */
|
||
52 | public boolean isLiteral() { |
||
53 | return literal;
|
||
54 | } |
||
55 | |||
56 | /**
|
||
57 | * @see com.hardcode.gdbms.engine.instruction.Expression#simplify()
|
||
58 | */
|
||
59 | public void simplify() { |
||
60 | getParent().replaceChild(this, getChilds()[0]); |
||
61 | } |
||
62 | |||
63 | /**
|
||
64 | * @see com.hardcode.gdbms.engine.instruction.Expression#calculateLiteralCondition()
|
||
65 | */
|
||
66 | public void calculateLiteralCondition() { |
||
67 | SimpleNode child = (SimpleNode) getEntity().jjtGetChild(0);
|
||
68 | |||
69 | if (child.first_token.image.equals("(")) { |
||
70 | child = (SimpleNode) getEntity().jjtGetChild(0);
|
||
71 | } |
||
72 | |||
73 | if (child.getClass() == ASTSQLColRef.class) {
|
||
74 | literal = false;
|
||
75 | } else if (child.getClass() == ASTSQLFunction.class) { |
||
76 | literal = false;
|
||
77 | } else if (child.getClass() == ASTSQLLiteral.class) { |
||
78 | literal = true;
|
||
79 | } else if (child.getClass() == ASTSQLOrExpr.class) { |
||
80 | literal = ((Expression) getChilds()[0]).isLiteral(); |
||
81 | } else {
|
||
82 | throw new RuntimeException("really passed the parse???"); |
||
83 | } |
||
84 | } |
||
85 | } |