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
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.expressionevaluator.DALExpressionBuilder.SelectBuilder;
10
import org.gvsig.fmap.dal.feature.spi.SQLBuilderBase;
11
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
12

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

    
19
    public TestExpressionBuilder(String testName) {
20
        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
    
63
    private void link(Code code) {
64
      code.link(createSymbolTable());
65
    }
66

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

    
72
        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

    
93
        String filter = exists.toString(new DALFormatter());
94
        
95
        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
        
97
        // Comprobamos que con el formatter por defecto obtenemos lo mismo.
98
        assertEquals(filter, exists.toString());
99

    
100
        Compiler compiler = createCompiler();
101

    
102
        Code code = compiler.compileExpression(filter);
103
        link(code);
104
        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
    }
106
    
107
    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
      assertEquals("FOREING_VALUE('SENTIDO.DESCRIPCION')", s);
114
      
115
    }
116
}