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

History | View | Annotate | Download (4.51 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.SymbolTableFactory;
11
import org.gvsig.expressionevaluator.swing.Element;
12
import org.gvsig.expressionevaluator.swing.ElementFactory;
13
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
    private final ExpressionEvaluatorSwingManager manager;
27
    private boolean scriptsEnabled = true;
28
    private SymbolTable previewSymbolTable;
29
    private boolean SQLCompatible;
30

    
31
    public DefaultExpressionBuilderConfig(ExpressionEvaluatorSwingManager manager) {
32
        this.manager = manager;
33
        this.limit = 6;
34
        this.SQLCompatible = false;
35
        initSymbolTables();
36
    }
37

    
38
    private void initSymbolTables() {
39
        ExpressionEvaluatorManager theManager = ExpressionEvaluatorLocator.getManager();
40
        for (SymbolTableFactory factory : theManager.getSymbolTableFactories()) {
41
            if (factory.isAutoload()) {
42
                this.addSymbolTable(factory.createSymbolTable());
43
            }
44
        }
45
    }
46

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

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

    
75
    @Override
76
    public Collection<SymbolTable> getSymbolTables() {
77
        return Collections.unmodifiableCollection(this.symbolTables.values());
78
    }
79

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

    
90
    @Override
91
    public void addSymbolTable(SymbolTable symbolTable) {
92
        if (symbolTable == null) {
93
            return;
94
        }
95
        if (this.elements != null) {
96
            throw new IllegalStateException("Can not add symbol tables once the elements are built.");
97
        }
98
        if (this.symbolTables == null) {
99
            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

    
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

    
134
    @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
    @Override
145
    public void setSQLCompatible(boolean SQLCompatible) {
146
        this.SQLCompatible = SQLCompatible;
147
    }
148

    
149
    @Override
150
    public boolean isSQLCompatible() {
151
        return SQLCompatible;
152
    }
153
    
154
}