Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.compat.cdc / org.gvsig.fmap.dal / org.gvsig.fmap.dal.swing / org.gvsig.fmap.dal.swing.impl / src / main / java / org / gvsig / fmap / dal / swing / impl / expressionevaluator / DefaultFeatureStoreElement.java @ 44128

History | View | Annotate | Download (3.27 KB)

1
package org.gvsig.fmap.dal.swing.impl.expressionevaluator;
2

    
3
import org.gvsig.fmap.dal.swing.expressionevaluator.FeatureStoreElement;
4
import java.util.ArrayList;
5
import java.util.Collections;
6
import java.util.Comparator;
7
import java.util.Iterator;
8
import java.util.List;
9
import org.gvsig.expressionevaluator.Function;
10
import org.gvsig.expressionevaluator.swing.Element;
11
import org.gvsig.expressionevaluator.swing.ExpressionBuilderConfig;
12
import org.gvsig.expressionevaluator.swing.spi.AbstractElement;
13
import org.gvsig.fmap.dal.exception.DataException;
14
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
15
import org.gvsig.fmap.dal.feature.FeatureStore;
16
import org.gvsig.fmap.dal.feature.FeatureType;
17

    
18
/**
19
 *
20
 * @author jjdelcerro
21
 */
22
public class DefaultFeatureStoreElement 
23
        extends AbstractElement
24
        implements FeatureStoreElement 
25
{
26

    
27
    private FeatureStore store;
28
    private FeatureType type;
29
    private List<Element> elements;
30
    final ExpressionBuilderConfig configPanel;
31

    
32
    @SuppressWarnings("OverridableMethodCallInConstructor")
33
    public DefaultFeatureStoreElement(ExpressionBuilderConfig configPanel, FeatureStore store) {
34
        super("store", "expressionbuilder-element-table");
35
        this.configPanel = configPanel;
36
        if( store!=null ) {
37
            this.setFeatureStore(store);
38
        }
39
    }
40
    
41
    @Override
42
    public Element get(int index) {
43
        return this.elements.get(index);
44
    }
45

    
46
    @Override
47
    public String getName() {
48
        if (this.store == null) {
49
            return super.getName();
50
        }
51
        return this.store.getName();
52
    }
53
    
54
    
55

    
56
    @Override
57
    public int size() {
58
        return this.type.size();
59
    }
60

    
61
    @Override
62
    public Iterator<Element> iterator() {
63
        return this.elements.iterator();
64
    }
65

    
66
    @Override
67
    public void addElement(Element element) {
68
    }
69

    
70
    @Override
71
    public void addElement(Function function) {
72
    }
73

    
74
    @Override
75
    public List<Element> getElements() {
76
        return Collections.unmodifiableList(this.elements);
77
    }
78

    
79
    @Override
80
    public boolean hasSubgroups() {
81
        return true;
82
    }
83

    
84
    @Override
85
    public boolean hasMoreElements() {
86
        return false;
87
    }
88

    
89
    @Override
90
    public void setFeatureStore(FeatureStore store) {
91
          if (store==null) {
92
              this.elements = new ArrayList<>();
93
              return;
94
          }
95
          try {
96
            
97
            this.store = store;
98
            this.type = this.store.getDefaultFeatureType();
99
            this.elements = new ArrayList<>();
100
            for (FeatureAttributeDescriptor attrdesc : type) {
101
                this.elements.add(new FeatureAttributeElement(
102
                                this.configPanel,
103
                                this.store,
104
                                attrdesc
105
                        )
106
                );
107
            }
108
            Collections.sort(elements, new Comparator<Element>() {
109
                @Override
110
                public int compare(Element o1, Element o2) {
111
                    return o1.getName().compareTo(o2.getName());
112
                }
113
            });
114
        } catch (DataException ex) {
115
            throw new RuntimeException(ex);
116
        }
117
    }
118

    
119
    @Override
120
    public FeatureStore getFeatureStore() {
121
        return this.store;
122
    }
123

    
124
    
125
}