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