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

History | View | Annotate | Download (2.43 KB)

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

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

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

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

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

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

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

    
45
    @Override
46
    public Iterator<Element> iterator() {
47
        if( aggregateds==null ) {
48
            this.aggregateds = buildChilds(null, elements);
49
        }
50
        return this.aggregateds.iterator();
51
    }
52
    private List<Element>  buildChilds(List<Element> theAggregateds, List<Element> elements) {
53
        if( theAggregateds==null ) {
54
            theAggregateds = new ArrayList<>();
55
        }
56
        for (Element element : elements) {
57
            theAggregateds.add(element);
58
            if( element instanceof GroupElement ) {
59
                buildChilds(theAggregateds, ((GroupElement)element).getElements());
60
            }
61
        }
62
        return theAggregateds;
63
    }
64
    
65
    @Override
66
    public void addElement(Element element) {
67
        this.elements.add(element);
68
    }
69

    
70
    @Override
71
    public void addElement(Function function) {
72
        Element item = this.manager.createConstantElement(function, function.name());
73
        this.addElement(item);
74
    }
75

    
76
    @Override
77
    public boolean hasSubgroups() {
78
        for (Element element : this.getElements()) {
79
            if( element instanceof Element.GroupElement ) {
80
                return true;
81
            }
82
        }
83
        return false;
84
    }
85

    
86
    @Override
87
    public boolean hasMoreElements() {
88
        return false;
89
    }
90
    
91
}