svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.dal / org.gvsig.fmap.dal.impl / src / test / java / org / gvsig / expressionevaluator / TestExpressionBuilder.java @ 45213
History | View | Annotate | Download (4.36 KB)
1 | 44738 | jjdelcerro | package org.gvsig.expressionevaluator; |
---|---|---|---|
2 | 44139 | jjdelcerro | |
3 | import junit.framework.TestCase; |
||
4 | 44769 | jjdelcerro | import org.gvsig.expressionevaluator.impl.expressionbuilder.formatters.DALFormatter; |
5 | import org.gvsig.fmap.dal.DALLocator; |
||
6 | import org.gvsig.fmap.dal.DataManager; |
||
7 | import org.gvsig.fmap.dal.expressionevaluator.DALExpressionBuilder; |
||
8 | import org.gvsig.fmap.dal.expressionevaluator.DALExpressionBuilder.SelectBuilder; |
||
9 | 44139 | jjdelcerro | import org.gvsig.tools.library.impl.DefaultLibrariesInitializer; |
10 | |||
11 | /**
|
||
12 | *
|
||
13 | * @author jjdelcerro
|
||
14 | */
|
||
15 | 44769 | jjdelcerro | public class TestExpressionBuilder extends TestCase { |
16 | 44139 | jjdelcerro | |
17 | 44769 | jjdelcerro | public TestExpressionBuilder(String testName) { |
18 | 44139 | jjdelcerro | super(testName);
|
19 | } |
||
20 | |||
21 | @Override
|
||
22 | protected void setUp() throws Exception { |
||
23 | super.setUp();
|
||
24 | new DefaultLibrariesInitializer().fullInitialize();
|
||
25 | } |
||
26 | |||
27 | @Override
|
||
28 | protected void tearDown() throws Exception { |
||
29 | super.tearDown();
|
||
30 | } |
||
31 | |||
32 | // TODO add test methods here. The name must begin with 'test'. For example:
|
||
33 | // public void testHello() {}
|
||
34 | |||
35 | protected LexicalAnalyzer createLexicalAnalyzer() {
|
||
36 | ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager(); |
||
37 | LexicalAnalyzer lexer = manager.createLexicalAnalyzer(); |
||
38 | return lexer;
|
||
39 | } |
||
40 | |||
41 | protected org.gvsig.expressionevaluator.Compiler createCompiler() {
|
||
42 | ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager(); |
||
43 | Compiler compiler = manager.createCompiler();
|
||
44 | compiler.setLexicalAnalyzer(createLexicalAnalyzer()); |
||
45 | return compiler;
|
||
46 | } |
||
47 | |||
48 | protected SymbolTable createSymbolTable() {
|
||
49 | ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager(); |
||
50 | MutableSymbolTable symbolTable = manager.createSymbolTable(); |
||
51 | return symbolTable;
|
||
52 | } |
||
53 | |||
54 | protected Interpreter createInterpreter(SymbolTable symbolTable) {
|
||
55 | ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager(); |
||
56 | Interpreter interpreter = manager.createInterpreter(); |
||
57 | interpreter.setSymbolTable(symbolTable); |
||
58 | return interpreter;
|
||
59 | } |
||
60 | 44738 | jjdelcerro | |
61 | private void link(Code code) { |
||
62 | code.link(createSymbolTable()); |
||
63 | 44139 | jjdelcerro | } |
64 | |||
65 | 44769 | jjdelcerro | public void testUseCase1() { |
66 | DataManager dataManager = DALLocator.getDataManager(); |
||
67 | DALExpressionBuilder builder = dataManager.createDALExpressionBuilder(); |
||
68 | 44139 | jjdelcerro | |
69 | 44769 | jjdelcerro | SelectBuilder select = builder.select() |
70 | .column("LID_ACCIDENTE")
|
||
71 | .from("ARENA2_VEHICULOS")
|
||
72 | .where( |
||
73 | builder.expression().and( |
||
74 | builder.expression().eq( |
||
75 | builder.expression().getattr("ARENA2_VEHICULOS","ID_ACCIDENTE"), |
||
76 | builder.expression().getattr("ARENA2_ACCIDENTES","LID_ACCIDENTE") |
||
77 | ), |
||
78 | builder.expression().eq( |
||
79 | builder.expression().column("MODELO"),
|
||
80 | builder.expression().constant("307")
|
||
81 | ) |
||
82 | ) |
||
83 | ) |
||
84 | .limit(1);
|
||
85 | ExpressionBuilder.Value exists = builder.exists(select.toValue(), "EXISTS123");
|
||
86 | 44139 | jjdelcerro | |
87 | 44769 | jjdelcerro | String filter = exists.toString(new DALFormatter()); |
88 | |||
89 | assertEquals("EXISTS((SELECT \"LID_ACCIDENTE\" FROM \"ARENA2_VEHICULOS\" WHERE (( (\"ARENA2_VEHICULOS\".\"ID_ACCIDENTE\") = (\"ARENA2_ACCIDENTES\".\"LID_ACCIDENTE\") ) AND ( (\"MODELO\") = ('307') )) LIMIT 1), 'EXISTS123')", filter);
|
||
90 | |||
91 | // Comprobamos que con el formatter por defecto obtenemos lo mismo.
|
||
92 | assertEquals(filter, exists.toString()); |
||
93 | 44139 | jjdelcerro | |
94 | 44750 | jjdelcerro | Compiler compiler = createCompiler();
|
95 | |||
96 | 44769 | jjdelcerro | Code code = compiler.compileExpression(filter); |
97 | 44750 | jjdelcerro | link(code); |
98 | 45080 | jjdelcerro | assertEquals("EXISTS(SELECT(TUPLE(\"LID_ACCIDENTE\"), \"ARENA2_VEHICULOS\", ((GETATTR(\"ARENA2_VEHICULOS\", 'ID_ACCIDENTE') = GETATTR(\"ARENA2_ACCIDENTES\", 'LID_ACCIDENTE')) AND (\"MODELO\" = '307')), TUPLE(), TUPLE(), 1), 'EXISTS123')", code.toString());
|
99 | 44750 | jjdelcerro | } |
100 | |||
101 | 44836 | jjdelcerro | public void testForeintValue1() { |
102 | DataManager dataManager = DALLocator.getDataManager(); |
||
103 | DALExpressionBuilder builder = dataManager.createDALExpressionBuilder(); |
||
104 | |||
105 | ExpressionBuilder.Function value = builder.foreing_value("SENTIDO", "DESCRIPCION"); |
||
106 | String s = value.toString(new DALFormatter()); |
||
107 | 45080 | jjdelcerro | assertEquals("FOREING_VALUE('SENTIDO.DESCRIPCION')", s);
|
108 | 44836 | jjdelcerro | |
109 | } |
||
110 | 44139 | jjdelcerro | } |