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

History | View | Annotate | Download (5.11 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 java.util.Map;
8
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
9
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
10
import org.gvsig.expressionevaluator.SymbolTable;
11
import org.gvsig.expressionevaluator.SymbolTableFactory;
12
import org.gvsig.expressionevaluator.swing.Element;
13
import org.gvsig.expressionevaluator.swing.ElementFactory;
14
import org.gvsig.expressionevaluator.swing.ExpressionBuilderConfig;
15
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingManager;
16
import org.gvsig.tools.util.PropertiesSupportHelper;
17

    
18
/**
19
 *
20
 * @author jjdelcerro
21
 */
22
public class DefaultExpressionBuilderConfig
23
        implements ExpressionBuilderConfig {
24

    
25
    private List<Element> elements;
26
    private int limit;
27
    private HashMap<String, SymbolTable> symbolTables;
28
    private final ExpressionEvaluatorSwingManager manager;
29
    private boolean scriptsEnabled = true;
30
    private SymbolTable previewSymbolTable;
31
    private boolean SQLCompatible;
32
    private PropertiesSupportHelper propertiesSupportHelper;
33
    
34
    public DefaultExpressionBuilderConfig(ExpressionEvaluatorSwingManager manager) {
35
        this.manager = manager;
36
        this.limit = 6;
37
        this.SQLCompatible = false;
38
        this.propertiesSupportHelper = new PropertiesSupportHelper();
39
        initSymbolTables();
40
    }
41

    
42
    private void initSymbolTables() {
43
        ExpressionEvaluatorManager theManager = ExpressionEvaluatorLocator.getManager();
44
        for (SymbolTableFactory factory : theManager.getSymbolTableFactories()) {
45
            if (factory.isAutoload()) {
46
                this.addSymbolTable(factory.createSymbolTable());
47
            }
48
        }
49
    }
50

    
51
    @Override
52
    public List<Element> getElements() {
53
        if (this.elements == null) {
54
            this.elements = manager.createElements(this, this.getSymbolTables());
55
            for (ElementFactory factory : manager.getElementFactories()) {
56
                if (factory.isAutoload()) {
57
                    Element e = factory.createElement();
58
                    this.elements.add(e);
59
                }
60
            }
61
        }
62
        return Collections.unmodifiableList(elements);
63
    }
64

    
65
    @Override
66
    public void addElement(Element element) {
67
        if( element==null ) {
68
            return;
69
        }
70
        this.getElements(); // Forzamos a crear la lista de elementos
71
        for (Element theElement : this.elements) {
72
            if (theElement.getName().equalsIgnoreCase(element.getName())) {
73
                return;
74
            }
75
        }
76
        this.elements.add(element);
77
    }
78

    
79
    @Override
80
    public Collection<SymbolTable> getSymbolTables() {
81
        return Collections.unmodifiableCollection(this.symbolTables.values());
82
    }
83

    
84
    @Override
85
    public void addSymbolTable(String name) {
86
        ExpressionEvaluatorManager theManager = ExpressionEvaluatorLocator.getManager();
87
        SymbolTable symbolTable = theManager.getSymbolTable(name);
88
        if (symbolTable == null) {
89
            throw new IllegalArgumentException("Can't locate symbol table '" + name + "'.");
90
        }
91
        addSymbolTable(symbolTable);
92
    }
93

    
94
    @Override
95
    public void addSymbolTable(SymbolTable symbolTable) {
96
        if (symbolTable == null) {
97
            return;
98
        }
99
        if (this.elements != null) {
100
            throw new IllegalStateException("Can not add symbol tables once the elements are built.");
101
        }
102
        if (this.symbolTables == null) {
103
            this.symbolTables = new HashMap<>();
104
        }
105
        this.symbolTables.put(symbolTable.getName(), symbolTable);
106
    }
107

    
108
    @Override
109
    public void removeAllSymbolTables() {
110
        this.symbolTables.clear();
111
    }
112

    
113
    @Override
114
    public int getSimpleElementsLimit() {
115
        return this.limit;
116
    }
117

    
118
    @Override
119
    public void setSimpleElementsLimit(int limit) {
120
        this.limit = limit;
121
    }
122

    
123
    @Override
124
    public void removeSymbolTable(String name) {
125
        this.symbolTables.remove(name);
126
    }
127

    
128
    @Override
129
    public void setScriptsEnabled(boolean enabled) {
130
        this.scriptsEnabled = enabled;
131
    }
132

    
133
    @Override
134
    public boolean getScriptsEnabled() {
135
        return this.scriptsEnabled;
136
    }
137

    
138
    @Override
139
    public SymbolTable getPreviewSymbolTable() {
140
        return this.previewSymbolTable;
141
    }
142

    
143
    @Override
144
    public void setPreviewSymbolTable(SymbolTable symbolTable) {
145
        this.previewSymbolTable = symbolTable;
146
    }
147

    
148
    @Override
149
    public void setSQLCompatible(boolean SQLCompatible) {
150
        this.SQLCompatible = SQLCompatible;
151
    }
152

    
153
    @Override
154
    public boolean isSQLCompatible() {
155
        return SQLCompatible;
156
    }
157

    
158
    @Override
159
    public Object getProperty(String string) {
160
        return this.propertiesSupportHelper.getProperty(string);
161
    }
162

    
163
    @Override
164
    public void setProperty(String string, Object o) {
165
        this.propertiesSupportHelper.setProperty(string, o);
166
    }
167

    
168
    @Override
169
    public Map<String, Object> getProperties() {
170
        return this.propertiesSupportHelper.getProperties();
171
    }
172
    
173
}