Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.library / org.gvsig.expressionevaluator / org.gvsig.expressionevaluator.swing / org.gvsig.expressionevaluator.swing.impl / src / main / java / org / gvsig / expressionevaluator / swing / impl / DefaultExpressionBuilderConfig.java @ 43987

History | View | Annotate | Download (3.21 KB)

1
package org.gvsig.expressionevaluator.swing.impl;
2

    
3
import java.util.Collection;
4
import java.util.Collections;
5
import java.util.HashMap;
6
import java.util.List;
7
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
8
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
9
import org.gvsig.expressionevaluator.MutableSymbolTable;
10
import org.gvsig.expressionevaluator.SymbolTable;
11
import org.gvsig.expressionevaluator.swing.Element;
12
import org.gvsig.expressionevaluator.swing.ExpressionBuilderConfig;
13
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingManager;
14

    
15
/**
16
 *
17
 * @author jjdelcerro
18
 */
19
public class DefaultExpressionBuilderConfig
20
        implements ExpressionBuilderConfig {
21

    
22
    private List<Element> elements;
23
    private int limit;
24
    private HashMap<String, SymbolTable> symbolTables;
25
    private ExpressionEvaluatorSwingManager manager;
26
    private boolean scriptsEnabled = true;
27

    
28
    public DefaultExpressionBuilderConfig(ExpressionEvaluatorSwingManager manager) {
29
        this.manager = manager;
30
        this.limit = 30;
31
        initSymbolTables();
32
    }
33

    
34
    private void initSymbolTables() {
35
        ExpressionEvaluatorManager theManager = ExpressionEvaluatorLocator.getManager();
36
        for (SymbolTable symbolTable : theManager.getSymbolTables()) {
37
            if( theManager.isAutoload(symbolTable) ) {
38
                this.addSymbolTable(symbolTable);
39
            }
40
        }
41
    }
42
    
43
    @Override
44
    public List<Element> getElements() {
45
        if (this.elements == null) {
46
            this.elements = manager.createElements(this.getSymbolTables());
47
        }
48
        return elements;
49
    }
50

    
51
    @Override
52
    public Collection<SymbolTable> getSymbolTables() {
53
        return Collections.unmodifiableCollection(this.symbolTables.values());
54
    }
55

    
56
    @Override
57
    public void addSymbolTable(String name) {
58
        ExpressionEvaluatorManager theManager = ExpressionEvaluatorLocator.getManager();
59
        SymbolTable symbolTable = theManager.getSymbolTable(name);
60
        if( symbolTable == null ) {
61
            throw new IllegalArgumentException("Can't locate symbol table '"+name+"'.");
62
        }
63
        addSymbolTable(symbolTable);
64
    }
65
    
66
    @Override
67
    public void addSymbolTable(SymbolTable symbolTable) {
68
        if( symbolTable == null ) {
69
            return;
70
        }
71
        if( this.elements!=null ) {
72
            throw new IllegalStateException("Can not add symbol tables once the elements are built.");
73
        }
74
        if( this.symbolTables == null ) {
75
            this.symbolTables = new HashMap<>();
76
        }
77
        this.symbolTables.put(symbolTable.getName(), symbolTable);
78
    }
79

    
80
    @Override
81
    public void removeAllSymbolTables() {
82
        this.symbolTables.clear();
83
    }
84

    
85
    @Override
86
    public int getSimpleElementsLimit() {
87
        return this.limit;
88
    }
89

    
90
    @Override
91
    public void setSimpleElementsLimit(int limit) {
92
        this.limit = limit;
93
    }
94

    
95
    @Override
96
    public void removeSymbolTable(String name) {
97
        this.symbolTables.remove(name);
98
    }
99

    
100
    @Override
101
    public void setScriptsEnabled(boolean enabled) {
102
        this.scriptsEnabled = enabled;
103
    }
104

    
105
    @Override
106
    public boolean getScriptsEnabled() {
107
        return this.scriptsEnabled;
108
    }
109
    
110

    
111
}