Statistics
| Revision:

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
}