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 / elements / DefaultAggregateElements.java @ 44263

History | View | Annotate | Download (2.63 KB)

1
package org.gvsig.expressionevaluator.swing.impl.elements;
2

    
3
import java.util.ArrayList;
4
import java.util.Collection;
5
import java.util.Iterator;
6
import java.util.List;
7
import org.gvsig.expressionevaluator.Function;
8
import org.gvsig.expressionevaluator.swing.Element;
9
import org.gvsig.expressionevaluator.swing.ExpressionBuilderConfig;
10
import org.gvsig.expressionevaluator.swing.ExpressionEvaluatorSwingManager;
11
import org.gvsig.expressionevaluator.swing.spi.AbstractElement;
12

    
13
/**
14
 *
15
 * @author jjdelcerro
16
 */
17
public class DefaultAggregateElements 
18
        extends AbstractElement
19
        implements Element.GroupElement 
20
    {
21
    
22
    private final List<Element> elements;
23
    private final ExpressionEvaluatorSwingManager manager;
24
    private List<Element> aggregateds;
25

    
26
    public DefaultAggregateElements(ExpressionEvaluatorSwingManager manager, String name) {
27
        super(name, name, "expressionbuilder-element-group");
28
        this.manager = manager;
29
        this.elements = new ArrayList<>();
30
    }
31

    
32
    @Override
33
    public List<Element> getElements() {
34
        return this.elements;
35
    }
36

    
37
    @Override
38
    public Element get(int index) {
39
        return this.elements.get(index);
40
    }
41

    
42
    @Override
43
    public int size() {
44
        return this.elements.size();
45
    }
46

    
47
    @Override
48
    public Iterator<Element> iterator() {
49
        return this.elements.iterator();
50
    }
51

    
52
    @Override
53
    public Collection<Element> getValues() {
54
        if( aggregateds==null ) {
55
            this.aggregateds = buildChilds(null, elements);
56
        }
57
        return this.aggregateds;
58
    }
59
    
60
    private List<Element>  buildChilds(List<Element> theAggregateds, List<Element> elements) {
61
        if( theAggregateds==null ) {
62
            theAggregateds = new ArrayList<>();
63
        }
64
        for (Element element : elements) {
65
            theAggregateds.add(element);
66
            if( element instanceof GroupElement ) {
67
                buildChilds(theAggregateds, ((GroupElement)element).getElements());
68
            }
69
        }
70
        return theAggregateds;
71
    }
72
    
73
    @Override
74
    public void addElement(Element element) {
75
        this.elements.add(element);
76
    }
77

    
78
    @Override
79
    public void addElement(Function function) {
80
        Element item = this.manager.createConstantElement(function, function.name());
81
        item.setConfig(this.getConfig());
82
        this.addElement(item);
83
    }
84

    
85
    @Override
86
    public Element setConfig(ExpressionBuilderConfig config) {
87
        super.setConfig(config);
88
        if( this.elements!=null ) {
89
            for (Element element : this.elements) {
90
                element.setConfig(config);
91
            }
92
        }
93
        return this;
94
    }
95

    
96
}