Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.expressionevaluator / org.gvsig.expressionevaluator.lib / org.gvsig.expressionevaluator.lib.impl / src / main / java / org / gvsig / expressionevaluator / impl / DefaultExpressionEvaluatorManager.java @ 43983

History | View | Annotate | Download (3.62 KB)

1 43521 jjdelcerro
package org.gvsig.expressionevaluator.impl;
2
3 43983 jjdelcerro
import java.util.Collection;
4 43939 jjdelcerro
import java.util.HashMap;
5
import java.util.Map;
6 43521 jjdelcerro
import org.gvsig.expressionevaluator.Code;
7
import org.gvsig.expressionevaluator.CodeBuilder;
8
import org.gvsig.expressionevaluator.Compiler;
9 43983 jjdelcerro
import org.gvsig.expressionevaluator.Expression;
10 43521 jjdelcerro
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
11
import org.gvsig.expressionevaluator.Interpreter;
12
import org.gvsig.expressionevaluator.LexicalAnalyzer;
13
import org.gvsig.expressionevaluator.MutableSymbolTable;
14
import org.gvsig.expressionevaluator.SymbolTable;
15 43983 jjdelcerro
import org.gvsig.expressionevaluator.impl.symboltable.OGCSymbolTable;
16
import org.gvsig.expressionevaluator.impl.symboltable.SQLSymbolTable;
17 43521 jjdelcerro
18
19
public class DefaultExpressionEvaluatorManager implements ExpressionEvaluatorManager {
20
21
    private Double accuracy;
22 43983 jjdelcerro
    private final Map<String,SymbolTable>symbolTables;
23 43521 jjdelcerro
24
    public DefaultExpressionEvaluatorManager() {
25 43983 jjdelcerro
        this.symbolTables = new HashMap<>();
26
        this.registerSymbolTable(new SQLSymbolTable());
27
        this.registerSymbolTable(new OGCSymbolTable());
28 43939 jjdelcerro
    }
29
30 43521 jjdelcerro
    @Override
31 43983 jjdelcerro
    public SymbolTable getSymbolTable(String name) {
32
        return this.symbolTables.get(name.toUpperCase());
33 43939 jjdelcerro
    }
34
35
    @Override
36 43983 jjdelcerro
    public Collection<SymbolTable> getSymbolTables() {
37
        return this.symbolTables.values();
38 43939 jjdelcerro
    }
39
40
    @Override
41 43983 jjdelcerro
    public final void registerSymbolTable(SymbolTable symbolTable) {
42
        this.symbolTables.put(symbolTable.getName().toUpperCase(),symbolTable);
43 43939 jjdelcerro
    }
44
45
    @Override
46 43521 jjdelcerro
    public Object evaluate(String source) {
47
        DefaultInterpreter interpreter = new DefaultInterpreter();
48
        DefaultCompiler compiler = new DefaultCompiler();
49
        Code code = compiler.compileExpression(source);
50
        return interpreter.run(code);
51
    }
52
53
    @Override
54
    public Object evaluate(SymbolTable symbolTable, String source) {
55
        DefaultInterpreter interpreter = new DefaultInterpreter();
56
        DefaultCompiler compiler = new DefaultCompiler();
57
        Code code = compiler.compileExpression(source);
58
        interpreter.setSymbolTable(symbolTable);
59
        return interpreter.run(code);
60
    }
61
62
    @Override
63
    public Object evaluate(SymbolTable symbolTable, Code code) {
64
        DefaultInterpreter interpreter = new DefaultInterpreter();
65
        interpreter.setSymbolTable(symbolTable);
66
        return interpreter.run(code);
67
    }
68
69
    @Override
70
    public Code compile(String source) {
71
        DefaultCompiler compiler = new DefaultCompiler();
72
        return compiler.compileExpression(source);
73
    }
74
75
    @Override
76
    public Code compile(LexicalAnalyzer lex, String source) {
77
        DefaultCompiler compiler = new DefaultCompiler();
78
        compiler.setLexicalAnalyzer(lex);
79
        return compiler.compileExpression(source);
80
    }
81
82
    @Override
83
    public MutableSymbolTable createSymbolTable() {
84
        return new DefaultSymbolTable();
85
    }
86 43939 jjdelcerro
87 43521 jjdelcerro
    @Override
88
    public LexicalAnalyzer createLexicalAnalyzer() {
89
        return new SQLLexicalAnalyzer();
90
    }
91
92
    @Override
93
    public CodeBuilder createCodeBuilder() {
94
        return new DefaultCodeBuilder();
95
    }
96
97
    @Override
98
    public Compiler createCompiler() {
99
        return new DefaultCompiler();
100
    }
101
102
    @Override
103
    public Interpreter createInterpreter() {
104
        return new DefaultInterpreter();
105
    }
106
107
    @Override
108
    public Double getAccuracy() {
109
        return this.accuracy;
110
    }
111
112
    @Override
113
    public void setAccuracy(Double accuracy) {
114
        this.accuracy = accuracy;
115
    }
116 43983 jjdelcerro
117
    @Override
118
    public Expression createExpression() {
119
        DefaultExpression e = new DefaultExpression();
120
        return e;
121
    }
122
123 43521 jjdelcerro
}