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

History | View | Annotate | Download (5.63 KB)

1 43983 jjdelcerro
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 44215 jjdelcerro
import java.util.Map;
8 43983 jjdelcerro
import org.gvsig.expressionevaluator.ExpressionEvaluatorLocator;
9
import org.gvsig.expressionevaluator.ExpressionEvaluatorManager;
10
import org.gvsig.expressionevaluator.SymbolTable;
11 44126 jjdelcerro
import org.gvsig.expressionevaluator.SymbolTableFactory;
12 43983 jjdelcerro
import org.gvsig.expressionevaluator.swing.Element;
13 44034 jjdelcerro
import org.gvsig.expressionevaluator.swing.ElementFactory;
14 43983 jjdelcerro
import org.gvsig.expressionevaluator.swing.ExpressionBuilderConfig;
15
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingManager;
16 44215 jjdelcerro
import org.gvsig.tools.util.PropertiesSupportHelper;
17 43983 jjdelcerro
18
/**
19
 *
20
 * @author jjdelcerro
21
 */
22
public class DefaultExpressionBuilderConfig
23 44259 jjdelcerro
        implements ExpressionBuilderConfig, ExpressionBuilderConfig.Preferences {
24 43983 jjdelcerro
25
    private List<Element> elements;
26
    private int limit;
27
    private HashMap<String, SymbolTable> symbolTables;
28 44037 jjdelcerro
    private final ExpressionEvaluatorSwingManager manager;
29 43984 jjdelcerro
    private boolean scriptsEnabled = true;
30 44098 jjdelcerro
    private SymbolTable previewSymbolTable;
31 44191 jjdelcerro
    private boolean SQLCompatible;
32 44259 jjdelcerro
    private final PropertiesSupportHelper propertiesSupportHelper;
33
    private boolean showLabelsOfAttributes;
34 44215 jjdelcerro
35 43983 jjdelcerro
    public DefaultExpressionBuilderConfig(ExpressionEvaluatorSwingManager manager) {
36
        this.manager = manager;
37 44034 jjdelcerro
        this.limit = 6;
38 44191 jjdelcerro
        this.SQLCompatible = false;
39 44215 jjdelcerro
        this.propertiesSupportHelper = new PropertiesSupportHelper();
40 44259 jjdelcerro
        this.showLabelsOfAttributes = true;
41 43983 jjdelcerro
        initSymbolTables();
42
    }
43
44 44259 jjdelcerro
    @Override
45
    public Preferences getPreferences() {
46
        return this;
47
    }
48
49 43983 jjdelcerro
    private void initSymbolTables() {
50
        ExpressionEvaluatorManager theManager = ExpressionEvaluatorLocator.getManager();
51 44126 jjdelcerro
        for (SymbolTableFactory factory : theManager.getSymbolTableFactories()) {
52
            if (factory.isAutoload()) {
53 44389 jjdelcerro
                this.addSymbolTable(factory.create());
54 43987 jjdelcerro
            }
55
        }
56 43983 jjdelcerro
    }
57 44034 jjdelcerro
58 43983 jjdelcerro
    @Override
59
    public List<Element> getElements() {
60
        if (this.elements == null) {
61 44259 jjdelcerro
            this.elements = manager.createElements(this.getSymbolTables());
62 44034 jjdelcerro
            for (ElementFactory factory : manager.getElementFactories()) {
63
                if (factory.isAutoload()) {
64
                    Element e = factory.createElement();
65
                    this.elements.add(e);
66 44259 jjdelcerro
                    e.setConfig(this);
67 44034 jjdelcerro
                }
68
            }
69 43983 jjdelcerro
        }
70 44037 jjdelcerro
        return Collections.unmodifiableList(elements);
71 43983 jjdelcerro
    }
72
73
    @Override
74 44034 jjdelcerro
    public void addElement(Element element) {
75
        if( element==null ) {
76
            return;
77
        }
78 44037 jjdelcerro
        this.getElements(); // Forzamos a crear la lista de elementos
79
        for (Element theElement : this.elements) {
80 44034 jjdelcerro
            if (theElement.getName().equalsIgnoreCase(element.getName())) {
81
                return;
82
            }
83
        }
84 44037 jjdelcerro
        this.elements.add(element);
85 44259 jjdelcerro
        element.setConfig(this);
86 44034 jjdelcerro
    }
87
88
    @Override
89 43983 jjdelcerro
    public Collection<SymbolTable> getSymbolTables() {
90
        return Collections.unmodifiableCollection(this.symbolTables.values());
91
    }
92 43987 jjdelcerro
93
    @Override
94
    public void addSymbolTable(String name) {
95
        ExpressionEvaluatorManager theManager = ExpressionEvaluatorLocator.getManager();
96
        SymbolTable symbolTable = theManager.getSymbolTable(name);
97 44034 jjdelcerro
        if (symbolTable == null) {
98
            throw new IllegalArgumentException("Can't locate symbol table '" + name + "'.");
99 43987 jjdelcerro
        }
100
        addSymbolTable(symbolTable);
101
    }
102 44034 jjdelcerro
103 43983 jjdelcerro
    @Override
104
    public void addSymbolTable(SymbolTable symbolTable) {
105 44034 jjdelcerro
        if (symbolTable == null) {
106 43983 jjdelcerro
            return;
107
        }
108 44034 jjdelcerro
        if (this.elements != null) {
109 43987 jjdelcerro
            throw new IllegalStateException("Can not add symbol tables once the elements are built.");
110 43983 jjdelcerro
        }
111 44034 jjdelcerro
        if (this.symbolTables == null) {
112 43983 jjdelcerro
            this.symbolTables = new HashMap<>();
113
        }
114
        this.symbolTables.put(symbolTable.getName(), symbolTable);
115
    }
116
117
    @Override
118
    public void removeAllSymbolTables() {
119
        this.symbolTables.clear();
120
    }
121
122
    @Override
123
    public int getSimpleElementsLimit() {
124
        return this.limit;
125
    }
126
127
    @Override
128
    public void setSimpleElementsLimit(int limit) {
129
        this.limit = limit;
130
    }
131 43984 jjdelcerro
132
    @Override
133
    public void removeSymbolTable(String name) {
134
        this.symbolTables.remove(name);
135
    }
136
137 44533 jjdelcerro
//    @Override
138
//    public void setScriptsEnabled(boolean enabled) {
139
//        this.scriptsEnabled = enabled;
140
//    }
141
//
142
//    @Override
143
//    public boolean getScriptsEnabled() {
144
//        return this.scriptsEnabled;
145
//    }
146
//
147 43984 jjdelcerro
    @Override
148 44098 jjdelcerro
    public SymbolTable getPreviewSymbolTable() {
149
        return this.previewSymbolTable;
150
    }
151
152
    @Override
153
    public void setPreviewSymbolTable(SymbolTable symbolTable) {
154
        this.previewSymbolTable = symbolTable;
155
    }
156
157 44191 jjdelcerro
    @Override
158
    public void setSQLCompatible(boolean SQLCompatible) {
159
        this.SQLCompatible = SQLCompatible;
160
    }
161
162
    @Override
163
    public boolean isSQLCompatible() {
164
        return SQLCompatible;
165
    }
166 44215 jjdelcerro
167
    @Override
168
    public Object getProperty(String string) {
169
        return this.propertiesSupportHelper.getProperty(string);
170
    }
171
172
    @Override
173
    public void setProperty(String string, Object o) {
174
        this.propertiesSupportHelper.setProperty(string, o);
175
    }
176
177
    @Override
178
    public Map<String, Object> getProperties() {
179
        return this.propertiesSupportHelper.getProperties();
180
    }
181 44259 jjdelcerro
182
    @Override
183
    public boolean getShowLabelsOfElements() {
184
        return this.showLabelsOfAttributes;
185
    }
186
187
    @Override
188
    public void setShowLabelsOfElements(boolean showLabels) {
189
        this.showLabelsOfAttributes = showLabels;
190
    }
191
192 44098 jjdelcerro
193 43983 jjdelcerro
}