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 / DefaultExpressionEvaluatorSwingManager.java @ 43969

History | View | Annotate | Download (3.27 KB)

1

    
2
package org.gvsig.expressionevaluator.swing.impl;
3

    
4
import java.util.ArrayList;
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.Function;
11
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingManager;
12
import org.gvsig.expressionevaluator.swing.JExpressionBuilder;
13
import org.gvsig.expressionevaluator.swing.JExpressionBuilder.Element;
14
import org.gvsig.expressionevaluator.swing.JExpressionBuilder.GroupElement;
15

    
16

    
17
public class DefaultExpressionEvaluatorSwingManager 
18
    implements ExpressionEvaluatorSwingManager {
19

    
20
    private List<Element> elements;
21
    
22
    public DefaultExpressionEvaluatorSwingManager() {
23
        
24
    }
25
    
26
    private void initElements() {
27
        ExpressionEvaluatorManager manager = ExpressionEvaluatorLocator.getManager();
28
        Map<String, Function> functions = new HashMap<>();
29
        functions.putAll(manager.getAllFunctions());
30
        functions.putAll(manager.getAllOperators());
31
        
32
        Map<String,GroupElement> functionGroups = new HashMap<>();
33
        Map<String,GroupElement> operatorGroups = new HashMap<>();
34
        for (Function function : functions.values()) {
35
            if( function.isOperator() ) {
36
                String groupName = function.group();
37
                GroupElement group = operatorGroups.get(groupName);
38
                if( group == null ) {
39
                    group = new DefaultGroupElement(groupName);
40
                    operatorGroups.put(groupName, group);
41
                }
42
                group.addElement(new DefaultFunctionElement(function));
43
            } else {
44
                String groupName = function.group();
45
                GroupElement group = functionGroups.get(groupName);
46
                if( group == null ) {
47
                    group = new DefaultGroupElement(groupName);
48
                    functionGroups.put(groupName, group);
49
                }
50
                group.addElement(new DefaultFunctionElement(function));
51
            }
52
        }
53
        GroupElement builtinFunctions = this.createGroup("_Builtin_functions");
54
        for (GroupElement group : functionGroups.values()) {
55
            builtinFunctions.addElement(group);
56
        }
57
        GroupElement operatorFunctions = new DefaultGroupElement("_Operators");
58
        for (GroupElement group : operatorGroups.values()) {
59
            operatorFunctions.addElement(group);
60
        }
61
        this.elements = new ArrayList<>();
62
        this.elements.add(operatorFunctions);
63
        this.elements.add(builtinFunctions);
64
    }
65
    
66
    @Override
67
    public List<Element> getElements() {
68
        if( this.elements==null ) {
69
            initElements();
70
        }
71
        return this.elements;
72
    }
73
    
74
    @Override
75
    public GroupElement createGroup(String name) {
76
        DefaultGroupElement g = new DefaultGroupElement(name);
77
        return g;
78
    }
79
    
80
    @Override
81
    public Element createElement(Function function) {
82
        Element f = new DefaultFunctionElement(function);
83
        return f;
84
    }
85
    
86
    @Override
87
    public JExpressionBuilder createJExpressionBuilder() {
88
        DefaultJExpressionBuilder x = new DefaultJExpressionBuilder(this);
89
        return x;
90
    }
91

    
92
}