Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.sqlite / org.gvsig.sqlite.provider / src / test / java / org / gvsig / sqlite / dal / operations / usecases / arena2 / TestSelectArena2A.java @ 47539

History | View | Annotate | Download (5.99 KB)

1
package org.gvsig.sqlite.dal.operations.usecases.arena2;
2

    
3
import java.util.Objects;
4
import junit.framework.TestCase;
5
import static junit.framework.TestCase.assertEquals;
6
import org.gvsig.expressionevaluator.Code;
7
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
8
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
9
import org.gvsig.expressionevaluator.Interpreter;
10
import org.gvsig.expressionevaluator.LexicalAnalyzer;
11
import org.gvsig.expressionevaluator.MutableSymbolTable;
12
import org.gvsig.expressionevaluator.SymbolTable;
13
import org.gvsig.fmap.dal.DALLocator;
14
import org.gvsig.fmap.dal.DataManager;
15
import org.gvsig.fmap.dal.feature.FeatureStore;
16
import org.gvsig.fmap.dal.store.jdbc2.AbstractTestUtils;
17
import org.gvsig.fmap.dal.store.jdbc2.JDBCServerExplorer;
18
import org.gvsig.sqlite.dal.TestUtilsSQLite;
19
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
20
import org.slf4j.Logger;
21
import org.slf4j.LoggerFactory;
22

    
23
@SuppressWarnings("UseSpecificCatch")
24
public class TestSelectArena2A extends TestCase {
25

    
26
    private static final Logger LOGGER = LoggerFactory.getLogger(TestSelectArena2A.class);
27

    
28
    public TestSelectArena2A(String testName) {
29
        super(testName);
30
    }
31

    
32
    @Override
33
    protected void setUp() throws Exception {
34
        super.setUp();
35
        new DefaultLibrariesInitializer().fullInitialize();
36
    }
37

    
38
    @Override
39
    protected void tearDown() throws Exception {
40
        super.tearDown();
41
    }
42

    
43
    protected AbstractTestUtils utils;
44

    
45
    public AbstractTestUtils utils() {
46
        if (this.utils == null) {
47
            this.utils = this.createUtils();
48
        }
49
        return this.utils;
50
    }
51

    
52
    protected AbstractTestUtils createUtils() {
53
        return new TestUtilsSQLite();
54
    }
55
    
56
    protected LexicalAnalyzer createLexicalAnalyzer() {
57
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
58
        LexicalAnalyzer lexer = manager.createLexicalAnalyzer();
59
        return lexer;
60
    }
61

    
62
    protected org.gvsig.expressionevaluator.Compiler createCompiler() {
63
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
64
        org.gvsig.expressionevaluator.Compiler compiler = manager.createCompiler();
65
        compiler.setLexicalAnalyzer(createLexicalAnalyzer());
66
        return compiler;
67
    }
68

    
69
    protected SymbolTable createSymbolTable() {
70
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
71
        MutableSymbolTable symbolTable = manager.createSymbolTable();
72
        symbolTable.setVar("precio", 200);
73
        symbolTable.setVar("1990", 0.168873933773767);
74
        return symbolTable;
75
    }
76

    
77
    protected Interpreter createInterpreter(SymbolTable symbolTable) {
78
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
79
        Interpreter interpreter = manager.createInterpreter();
80
        interpreter.setSymbolTable(symbolTable);
81
        return interpreter;
82
    }
83
    
84
    private void dump(String testname, Object expected, Object actual) {
85
        System.out.println("### ---------------------");
86
        System.out.println("### "+testname);
87
        System.out.println("### expected: ["+Objects.toString(expected)+"]");
88
        System.out.println("### actual  : ["+Objects.toString(actual)+"]");
89
    }
90
    
91
    private void checkEquals(String testname, Object expected, Object actual) {
92
        dump(testname,expected,actual);
93
        assertEquals(expected, actual);
94
    }
95

    
96
    private void checkEquals(Object expected, Object actual) {
97
        try {
98
            throw new RuntimeException();
99
        } catch(Throwable t) {
100
            String testname = t.getStackTrace()[1].getMethodName();
101
            dump(testname,expected,actual);
102
            assertEquals(expected, actual);
103
        }
104
    }
105

    
106
    
107
    private void link(Code code) {
108
      code.link(createSymbolTable());
109
    }
110

    
111
    public void testSelectArena2A() throws Exception {
112
        try {
113
            FeatureStore sourceStoreConductores = utils().openCSVStore("usecases/arena2/ARENA2_CONDUCTORES.csv");
114
            FeatureStore sourceStoreVehiculos = utils().openCSVStore("usecases/arena2/ARENA2_VEHICULOS.csv");
115
            
116
            JDBCServerExplorer explorer = utils().openServerExplorer("testSelectArena2A");
117

    
118
            utils().info_jdbc(explorer);
119
            utils().drop_tables(explorer, sourceStoreConductores.getName());
120
            utils().drop_tables(explorer, sourceStoreVehiculos.getName());
121

    
122
            utils().create_table_from(explorer, sourceStoreConductores.getName(), sourceStoreConductores);
123
            utils().create_table_from(explorer, sourceStoreVehiculos.getName(), sourceStoreVehiculos);
124
            utils().insert_into_from(explorer, sourceStoreConductores.getName(), sourceStoreConductores, FeatureStore.MODE_APPEND);
125
            utils().insert_into_from(explorer, sourceStoreVehiculos.getName(), sourceStoreVehiculos, FeatureStore.MODE_APPEND);
126
            
127
            DataManager dataManager = DALLocator.getDataManager();
128
            dataManager.getStoresRepository().add(sourceStoreConductores.getName(), explorer.get(sourceStoreConductores.getName()));
129
            dataManager.getStoresRepository().add(sourceStoreVehiculos.getName(), explorer.get(sourceStoreVehiculos.getName()));
130
            
131
            StringBuilder source = new StringBuilder();
132
            source.append("SELECT * FROM ARENA2_CONDUCTORES  WHERE ARENA2_CONDUCTORES.LID_VEHICULO = ARENA2_VEHICULOS.LID_VEHICULO");
133

    
134
            MutableSymbolTable symbolTable = (MutableSymbolTable) createSymbolTable();
135
            org.gvsig.expressionevaluator.Compiler compiler = createCompiler();
136
            Interpreter interpreter = createInterpreter(symbolTable);
137

    
138
            Code code = compiler.compileExpression(source.toString());
139
            link(code);       
140
            checkEquals("( SELECT * FROM \"ARENA2_CONDUCTORES\" WHERE (\"ARENA2_CONDUCTORES\".\"LID_VEHICULO\" = \"ARENA2_VEHICULOS\".\"LID_VEHICULO\") )", code.toString());
141

    
142

    
143
        } catch (Throwable th) {
144
            LOGGER.warn("", th);
145
            throw th;
146
        }
147
    }
148
}