svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.h2spatial / org.gvsig.h2spatial.h2gis132 / org.gvsig.h2spatial.h2gis132.provider / src / main / java / org / gvsig / fmap / dal / store / h2 / expressionbuilderformatter / Getattr.java @ 46092
History | View | Annotate | Download (1.67 KB)
1 | 45472 | jjdelcerro | package org.gvsig.fmap.dal.store.h2.expressionbuilderformatter; |
---|---|---|---|
2 | |||
3 | import org.apache.commons.lang3.StringUtils; |
||
4 | import static org.gvsig.expressionevaluator.ExpressionBuilder.FUNCTION_GETATTR; |
||
5 | import org.gvsig.expressionevaluator.ExpressionBuilder.Function; |
||
6 | import org.gvsig.expressionevaluator.ExpressionBuilder.Value; |
||
7 | import org.gvsig.expressionevaluator.ExpressionBuilder.Variable; |
||
8 | import org.gvsig.expressionevaluator.ExpressionBuilder.Constant; |
||
9 | import org.gvsig.expressionevaluator.Formatter; |
||
10 | import org.gvsig.fmap.dal.SQLBuilder; |
||
11 | |||
12 | /**
|
||
13 | *
|
||
14 | * @author jjdelcerro
|
||
15 | */
|
||
16 | public class Getattr implements Formatter<Value> { |
||
17 | |||
18 | private final SQLBuilder sqlbuilder; |
||
19 | private final Formatter<Value> formatter; |
||
20 | |||
21 | public Getattr(SQLBuilder sqlbuilder, Formatter<Value> formatter) { |
||
22 | this.sqlbuilder = sqlbuilder;
|
||
23 | this.formatter = formatter;
|
||
24 | } |
||
25 | @Override
|
||
26 | public boolean canApply(Value value) { |
||
27 | if (value instanceof Function) { |
||
28 | if( StringUtils.equalsIgnoreCase(FUNCTION_GETATTR, ((Function) value).name()) ) {
|
||
29 | Value obj = ((Function) value).parameters().get(0);
|
||
30 | Value attrname = ((Function) value).parameters().get(1);
|
||
31 | return obj instanceof Variable && attrname instanceof Constant; |
||
32 | |||
33 | } |
||
34 | } |
||
35 | return false; |
||
36 | } |
||
37 | |||
38 | @Override
|
||
39 | public String format(Value function0) { |
||
40 | Function function = (Function) function0; |
||
41 | Variable obj = (Variable) function.parameters().get(0);
|
||
42 | Constant attrname = (Constant) function.parameters().get(1);
|
||
43 | return this.sqlbuilder.as_identifier(obj.name())+"."+this.sqlbuilder.as_identifier((String) attrname.value()); |
||
44 | } |
||
45 | |||
46 | } |