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 @ 46517

History | View | Annotate | Download (4.41 KB)

1
package org.gvsig.expressionevaluator;
2

    
3
import junit.framework.TestCase;
4
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.SQLBuilder;
8
import org.gvsig.fmap.dal.expressionevaluator.DALExpressionBuilder;
9
import org.gvsig.fmap.dal.feature.spi.SQLBuilderBase;
10
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
11

    
12
/**
13
 *
14
 * @author jjdelcerro
15
 */
16
public class TestExpressionBuilder extends TestCase {
17

    
18
    public TestExpressionBuilder(String testName) {
19
        super(testName);
20
    }
21

    
22
    @Override
23
    protected void setUp() throws Exception {
24
        super.setUp();
25
        new DefaultLibrariesInitializer().fullInitialize();
26
    }
27

    
28
    @Override
29
    protected void tearDown() throws Exception {
30
        super.tearDown();
31
    }
32

    
33
    // TODO add test methods here. The name must begin with 'test'. For example:
34
    // public void testHello() {}
35
    
36
    protected LexicalAnalyzer createLexicalAnalyzer() {
37
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
38
        LexicalAnalyzer lexer = manager.createLexicalAnalyzer();
39
        return lexer;
40
    }
41

    
42
    protected org.gvsig.expressionevaluator.Compiler createCompiler() {
43
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
44
        Compiler compiler = manager.createCompiler();
45
        compiler.setLexicalAnalyzer(createLexicalAnalyzer());
46
        return compiler;
47
    }
48

    
49
    protected SymbolTable createSymbolTable() {
50
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
51
        MutableSymbolTable symbolTable = manager.createSymbolTable();
52
        return symbolTable;
53
    }
54

    
55
    protected Interpreter createInterpreter(SymbolTable symbolTable) {
56
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
57
        Interpreter interpreter = manager.createInterpreter();
58
        interpreter.setSymbolTable(symbolTable);
59
        return interpreter;
60
    }
61
    
62
    private void link(Code code) {
63
      code.link(createSymbolTable());
64
    }
65

    
66
    public void testUseCase1() {
67
      DataManager dataManager = DALLocator.getDataManager();
68
      DALExpressionBuilder builder1 = dataManager.createDALExpressionBuilder();
69
      SQLBuilderBase builder = new SQLBuilderBase();
70

    
71
        SQLBuilder.SelectBuilder select = builder.select();
72
        select.column().name("LID_ACCIDENTE");
73
        select.from().table().name("ARENA2_VEHICULOS");
74
        select.where().value(
75
                builder.expression().and(
76
                        builder.expression().eq(
77
                                builder.expression().getattr("ARENA2_VEHICULOS","ID_ACCIDENTE"),
78
                                builder.expression().getattr("ARENA2_ACCIDENTES","LID_ACCIDENTE")
79
                        ),
80
                        builder.expression().eq(
81
                                builder.expression().column("MODELO"),
82
                                builder.expression().constant("307")
83
                        )
84
                )
85
        );
86
        select.limit(1);
87
        
88
        
89
              
90
        ExpressionBuilder.Value exists = builder1.exists(select, "EXISTS123");
91

    
92
        String filter = exists.toString(new DALFormatter());
93
        
94
        assertEquals("EXISTS(SELECT \"LID_ACCIDENTE\" FROM \"ARENA2_VEHICULOS\" WHERE (( (\"ARENA2_VEHICULOS\".\"ID_ACCIDENTE\") = (\"ARENA2_ACCIDENTES\".\"LID_ACCIDENTE\") ) AND ( (\"MODELO\") = ('307') )) LIMIT 1, 'EXISTS123')", filter);
95
        
96
        // Comprobamos que con el formatter por defecto obtenemos lo mismo.
97
        assertEquals(filter, exists.toString());
98

    
99
        Compiler compiler = createCompiler();
100

    
101
        Code code = compiler.compileExpression(filter);
102
        link(code);
103
        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());
104
    }
105
    
106
    public void testForeintValue1() {
107
      DataManager dataManager = DALLocator.getDataManager();
108
      DALExpressionBuilder builder = dataManager.createDALExpressionBuilder();
109
      
110
      ExpressionBuilder.Function value = builder.foreing_value("SENTIDO", "DESCRIPCION");
111
      String s = value.toString(new DALFormatter());
112
      assertEquals("FOREING_VALUE('SENTIDO.DESCRIPCION')", s);
113
      
114
    }
115
}