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

History | View | Annotate | Download (3.88 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.SymbolTable;
10
import org.gvsig.expressionevaluator.swing.Element;
11
import org.gvsig.expressionevaluator.swing.ElementFactory;
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 final ExpressionEvaluatorSwingManager manager;
26
    private boolean scriptsEnabled = true;
27

    
28
    public DefaultExpressionBuilderConfig(ExpressionEvaluatorSwingManager manager) {
29
        this.manager = manager;
30
        this.limit = 6;
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
            for (ElementFactory factory : manager.getElementFactories()) {
48
                if (factory.isAutoload()) {
49
                    Element e = factory.createElement();
50
                    this.elements.add(e);
51
                }
52
            }
53
        }
54
        return Collections.unmodifiableList(elements);
55
    }
56

    
57
    @Override
58
    public void addElement(Element element) {
59
        if( element==null ) {
60
            return;
61
        }
62
        this.getElements(); // Forzamos a crear la lista de elementos
63
        for (Element theElement : this.elements) {
64
            if (theElement.getName().equalsIgnoreCase(element.getName())) {
65
                return;
66
            }
67
        }
68
        this.elements.add(element);
69
    }
70

    
71
    @Override
72
    public Collection<SymbolTable> getSymbolTables() {
73
        return Collections.unmodifiableCollection(this.symbolTables.values());
74
    }
75

    
76
    @Override
77
    public void addSymbolTable(String name) {
78
        ExpressionEvaluatorManager theManager = ExpressionEvaluatorLocator.getManager();
79
        SymbolTable symbolTable = theManager.getSymbolTable(name);
80
        if (symbolTable == null) {
81
            throw new IllegalArgumentException("Can't locate symbol table '" + name + "'.");
82
        }
83
        addSymbolTable(symbolTable);
84
    }
85

    
86
    @Override
87
    public void addSymbolTable(SymbolTable symbolTable) {
88
        if (symbolTable == null) {
89
            return;
90
        }
91
        if (this.elements != null) {
92
            throw new IllegalStateException("Can not add symbol tables once the elements are built.");
93
        }
94
        if (this.symbolTables == null) {
95
            this.symbolTables = new HashMap<>();
96
        }
97
        this.symbolTables.put(symbolTable.getName(), symbolTable);
98
    }
99

    
100
    @Override
101
    public void removeAllSymbolTables() {
102
        this.symbolTables.clear();
103
    }
104

    
105
    @Override
106
    public int getSimpleElementsLimit() {
107
        return this.limit;
108
    }
109

    
110
    @Override
111
    public void setSimpleElementsLimit(int limit) {
112
        this.limit = limit;
113
    }
114

    
115
    @Override
116
    public void removeSymbolTable(String name) {
117
        this.symbolTables.remove(name);
118
    }
119

    
120
    @Override
121
    public void setScriptsEnabled(boolean enabled) {
122
        this.scriptsEnabled = enabled;
123
    }
124

    
125
    @Override
126
    public boolean getScriptsEnabled() {
127
        return this.scriptsEnabled;
128
    }
129

    
130
}