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

History | View | Annotate | Download (3.6 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.apache.commons.lang3.StringUtils;
10
import org.gvsig.expressionevaluator.Function;
11
import org.gvsig.expressionevaluator.swing.Element;
12
import org.gvsig.expressionevaluator.swing.Element.SimpleElement;
13
import org.gvsig.expressionevaluator.swing.ExpressionBuilderConfig;
14
import org.gvsig.expressionevaluator.swing.spi.AbstractElement;
15
import org.gvsig.fmap.dal.exception.DataException;
16
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
17
import org.gvsig.fmap.dal.feature.FeatureStore;
18
import org.gvsig.fmap.dal.feature.FeatureType;
19

    
20
/**
21
 *
22
 * @author jjdelcerro
23
 */
24
public class DefaultFeatureStoreElement 
25
        extends AbstractElement
26
        implements FeatureStoreElement , SimpleElement
27
{
28

    
29
    private FeatureStore store;
30
    private FeatureType type;
31
    private List<Element> elements;
32
    final ExpressionBuilderConfig configPanel;
33
    private String myName;
34

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

    
49
    @Override
50
    public void setName(String name) {
51
        this.myName = name;
52
    }
53
    
54
    @Override
55
    public String getName() {
56
        if( !StringUtils.isBlank(this.myName) ) {
57
            return this.myName;
58
        }
59
        if (this.store == null) {
60
            return super.getName();
61
        }
62
        return this.store.getName();
63
    }
64
    
65
    
66

    
67
    @Override
68
    public int size() {
69
        return this.type.size();
70
    }
71

    
72
    @Override
73
    public Iterator<Element> iterator() {
74
        return this.elements.iterator();
75
    }
76

    
77
    @Override
78
    public void addElement(Element element) {
79
    }
80

    
81
    @Override
82
    public void addElement(Function function) {
83
    }
84

    
85
    @Override
86
    public List<Element> getElements() {
87
        return Collections.unmodifiableList(this.elements);
88
    }
89

    
90
    @Override
91
    public boolean hasSubgroups() {
92
        return true;
93
    }
94

    
95
    @Override
96
    public boolean hasMoreElements() {
97
        return false;
98
    }
99

    
100
    @Override
101
    public void setFeatureStore(FeatureStore store) {
102
          if (store==null) {
103
              this.elements = new ArrayList<>();
104
              return;
105
          }
106
          try {
107
            
108
            this.store = store;
109
            this.type = this.store.getDefaultFeatureType();
110
            this.elements = new ArrayList<>();
111
            for (FeatureAttributeDescriptor attrdesc : type) {
112
                this.elements.add(new FeatureAttributeElement(
113
                                this.configPanel,
114
                                this.store,
115
                                attrdesc
116
                        )
117
                );
118
            }
119
            Collections.sort(elements, new Comparator<Element>() {
120
                @Override
121
                public int compare(Element o1, Element o2) {
122
                    return o1.getName().compareTo(o2.getName());
123
                }
124
            });
125
        } catch (DataException ex) {
126
            throw new RuntimeException(ex);
127
        }
128
    }
129

    
130
    @Override
131
    public FeatureStore getFeatureStore() {
132
        return this.store;
133
    }
134

    
135
    
136
}