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 / TestSelectWithLocalVariables.java @ 47606

History | View | Annotate | Download (4.46 KB)

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

    
3
import junit.framework.TestCase;
4
import org.gvsig.expressionevaluator.Code;
5
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
6
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
7
import org.gvsig.expressionevaluator.Interpreter;
8
import org.gvsig.expressionevaluator.LexicalAnalyzer;
9
import org.gvsig.expressionevaluator.MutableSymbolTable;
10
import org.gvsig.expressionevaluator.SymbolTable;
11
import org.gvsig.fmap.dal.store.jdbc2.AbstractTestUtils;
12
import org.gvsig.sqlite.dal.TestUtilsSQLite;
13
import org.gvsig.tools.library.impl.DefaultLibrariesInitializer;
14
import org.slf4j.Logger;
15
import org.slf4j.LoggerFactory;
16

    
17
@SuppressWarnings("UseSpecificCatch")
18
public class TestSelectWithLocalVariables extends TestCase {
19

    
20
    private static final Logger LOGGER = LoggerFactory.getLogger(TestSelectWithLocalVariables.class);
21

    
22
    public TestSelectWithLocalVariables(String testName) {
23
        super(testName);
24
    }
25

    
26
    @Override
27
    protected void setUp() throws Exception {
28
        super.setUp();
29
        new DefaultLibrariesInitializer().fullInitialize();
30
    }
31

    
32
    @Override
33
    protected void tearDown() throws Exception {
34
        super.tearDown();
35
    }
36

    
37
    protected AbstractTestUtils utils;
38

    
39
    public AbstractTestUtils utils() {
40
        if (this.utils == null) {
41
            this.utils = this.createUtils();
42
        }
43
        return this.utils;
44
    }
45

    
46
    protected AbstractTestUtils createUtils() {
47
        return new TestUtilsSQLite();
48
    }
49
    
50
    protected LexicalAnalyzer createLexicalAnalyzer() {
51
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
52
        LexicalAnalyzer lexer = manager.createLexicalAnalyzer();
53
        return lexer;
54
    }
55

    
56
    protected org.gvsig.expressionevaluator.Compiler createCompiler() {
57
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
58
        org.gvsig.expressionevaluator.Compiler compiler = manager.createCompiler();
59
        compiler.setLexicalAnalyzer(createLexicalAnalyzer());
60
        return compiler;
61
    }
62

    
63
    protected SymbolTable createSymbolTable() {
64
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
65
        MutableSymbolTable symbolTable = manager.createSymbolTable();
66
        symbolTable.setVar("precio", 200);
67
        symbolTable.setVar("1990", 0.168873933773767);
68
        return symbolTable;
69
    }
70

    
71
    protected Interpreter createInterpreter(SymbolTable symbolTable) {
72
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
73
        Interpreter interpreter = manager.createInterpreter();
74
        interpreter.setSymbolTable(symbolTable);
75
        return interpreter;
76
    }
77
    
78
    private void link(Code code) {
79
      code.link(createSymbolTable());
80
    }
81

    
82
    public void testSelectWithLocalVariables() throws Exception {
83
        try {
84
//            FeatureStore sourceStore = utils().openCountriesStore();
85
//            
86
//            JDBCServerExplorer explorer = utils().openServerExplorer("testCountXXXXX");
87
//
88
//            utils().info_jdbc(explorer);
89
//            utils().drop_tables(explorer, sourceStore.getName());
90
//
91
//            utils().create_table_from(explorer, sourceStore.getName(), sourceStore);
92
//            utils().insert_into_from(explorer, sourceStore.getName(), sourceStore, FeatureStore.MODE_APPEND);
93
//            
94
//            DataManager dataManager = DALLocator.getDataManager();
95
//            dataManager.getStoresRepository().add(sourceStore.getName(), explorer.get(sourceStore.getName()));
96
            
97
            StringBuilder source = new StringBuilder();
98
            source.append("BEGIN ");
99
            source.append("CREATE PROCEDURE fn1() AS");
100
            source.append("  BEGIN ");
101
            source.append("    X := 10; ");
102
            source.append("    SELECT * INTO ROW FROM countries ORDER BY (AREA + X) LIMIT 1;"); 
103
            source.append("  END; ");
104
            source.append("fn1();");
105
            source.append("END ");
106

    
107
            MutableSymbolTable symbolTable = (MutableSymbolTable) createSymbolTable();
108
            org.gvsig.expressionevaluator.Compiler compiler = createCompiler();
109
            Interpreter interpreter = createInterpreter(symbolTable);
110

    
111
            Code code = compiler.compileExpression(source.toString());
112
            link(code);            
113
            Object v = interpreter.run(code);
114
            
115

    
116
        } catch (Throwable th) {
117
            LOGGER.warn("", th);
118
            throw th;
119
        }
120
    }
121
}