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

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