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

History | View | Annotate | Download (4.43 KB)

1
package org.gvsig.expressionevaluator.impl;
2

    
3
import java.util.Collection;
4
import java.util.HashMap;
5
import java.util.HashSet;
6
import java.util.Map;
7
import java.util.Set;
8
import org.gvsig.expressionevaluator.Code;
9
import org.gvsig.expressionevaluator.CodeBuilder;
10
import org.gvsig.expressionevaluator.Compiler;
11
import org.gvsig.expressionevaluator.Expression;
12
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
13
import org.gvsig.expressionevaluator.Interpreter;
14
import org.gvsig.expressionevaluator.LexicalAnalyzer;
15
import org.gvsig.expressionevaluator.MutableSymbolTable;
16
import org.gvsig.expressionevaluator.SymbolTable;
17
import org.gvsig.expressionevaluator.impl.symboltable.OGCSymbolTable;
18
import org.gvsig.expressionevaluator.impl.symboltable.SQLSymbolTable;
19

    
20

    
21
public class DefaultExpressionEvaluatorManager implements ExpressionEvaluatorManager {
22

    
23
    private Double accuracy;
24
    private final Map<String,SymbolTable>symbolTables;
25
    private final Set<String>autoloadSymbolTables;
26

    
27
    public DefaultExpressionEvaluatorManager() {
28
        this.symbolTables = new HashMap<>();
29
        this.autoloadSymbolTables = new HashSet<>();
30
        this.registerSymbolTable(new SQLSymbolTable(), true);
31
        this.registerSymbolTable(new OGCSymbolTable(), true);
32
    }
33

    
34
    @Override
35
    public SymbolTable getSymbolTable(String name) {
36
        return this.symbolTables.get(name.toUpperCase());
37
    }
38

    
39
    @Override
40
    public Collection<SymbolTable> getSymbolTables() {
41
        return this.symbolTables.values();
42
    }
43

    
44
    @Override
45
    public final void registerSymbolTable(SymbolTable symbolTable, boolean autoload) {
46
        this.symbolTables.put(symbolTable.getName().toUpperCase(),symbolTable);
47
        if( autoload ) {
48
            this.autoloadSymbolTables.add(symbolTable.getName().toUpperCase());
49
        }
50
    }
51

    
52
    @Override
53
    public boolean isAutoload(SymbolTable symbolTable) {
54
        return this.autoloadSymbolTables.contains(symbolTable.getName().toUpperCase());
55
    }
56

    
57
    @Override
58
    public Object evaluate(String source) {
59
        DefaultInterpreter interpreter = new DefaultInterpreter();
60
        DefaultCompiler compiler = new DefaultCompiler();
61
        Code code = compiler.compileExpression(source);
62
        return interpreter.run(code);
63
    }
64

    
65
    @Override
66
    public Object evaluate(SymbolTable symbolTable, String source) {
67
        DefaultInterpreter interpreter = new DefaultInterpreter();
68
        DefaultCompiler compiler = new DefaultCompiler();
69
        Code code = compiler.compileExpression(source);
70
        interpreter.setSymbolTable(symbolTable);
71
        return interpreter.run(code);
72
    }
73

    
74
    @Override
75
    public Object evaluate(SymbolTable symbolTable, Code code) {
76
        DefaultInterpreter interpreter = new DefaultInterpreter();
77
        interpreter.setSymbolTable(symbolTable);
78
        return interpreter.run(code);
79
    }
80

    
81
    @Override
82
    public Code compile(String source) {
83
        DefaultCompiler compiler = new DefaultCompiler();
84
        return compiler.compileExpression(source);
85
    }
86

    
87
    @Override
88
    public Code compile(LexicalAnalyzer lex, String source) {
89
        DefaultCompiler compiler = new DefaultCompiler();
90
        compiler.setLexicalAnalyzer(lex);
91
        return compiler.compileExpression(source);
92
    }
93

    
94
    @Override
95
    public MutableSymbolTable createSymbolTable() {
96
        DefaultSymbolTable theSymbolTable = new DefaultSymbolTable();
97
        return theSymbolTable;
98
    }
99
    
100
    public void populateSymbolTable(SymbolTable aSymbolTable) {
101
        for (String name : this.autoloadSymbolTables ) {
102
            SymbolTable symbolTable = this.symbolTables.get(name);
103
            if( symbolTable!=null ) {
104
                aSymbolTable.addSymbolTable(symbolTable);
105
            }
106
        }
107
    }
108
    
109
    @Override
110
    public LexicalAnalyzer createLexicalAnalyzer() {
111
        return new SQLLexicalAnalyzer();
112
    }
113

    
114
    @Override
115
    public CodeBuilder createCodeBuilder() {
116
        return new DefaultCodeBuilder();
117
    }
118

    
119
    @Override
120
    public Compiler createCompiler() {
121
        return new DefaultCompiler();
122
    }
123

    
124
    @Override
125
    public Interpreter createInterpreter() {
126
        return new DefaultInterpreter();
127
    }
128

    
129
    @Override
130
    public Double getAccuracy() {
131
        return this.accuracy;
132
    }
133

    
134
    @Override
135
    public void setAccuracy(Double accuracy) {
136
        this.accuracy = accuracy;
137
    }
138

    
139
    @Override
140
    public Expression createExpression() {
141
        DefaultExpression e = new DefaultExpression();
142
        return e;
143
    }
144
   
145
}
146