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

History | View | Annotate | Download (3.57 KB)

1 43983 jjdelcerro
package org.gvsig.fmap.dal.swing.impl.expressionevaluator;
2
3 44000 omartinez
import org.gvsig.fmap.dal.swing.expressionevaluator.FeatureStoreElement;
4 43983 jjdelcerro
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 44190 jjdelcerro
import org.apache.commons.lang3.StringUtils;
10 43983 jjdelcerro
import org.gvsig.expressionevaluator.Function;
11
import org.gvsig.expressionevaluator.swing.Element;
12 44190 jjdelcerro
import org.gvsig.expressionevaluator.swing.Element.SimpleElement;
13 43983 jjdelcerro
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 44000 omartinez
public class DefaultFeatureStoreElement
25 43983 jjdelcerro
        extends AbstractElement
26 44190 jjdelcerro
        implements FeatureStoreElement , SimpleElement
27 43983 jjdelcerro
{
28
29 44000 omartinez
    private FeatureStore store;
30
    private FeatureType type;
31
    private List<Element> elements;
32 44191 jjdelcerro
    private final ExpressionBuilderConfig config;
33 44190 jjdelcerro
    private String myName;
34 43983 jjdelcerro
35 44000 omartinez
    @SuppressWarnings("OverridableMethodCallInConstructor")
36 44191 jjdelcerro
    public DefaultFeatureStoreElement(ExpressionBuilderConfig config, FeatureStore store) {
37 44128 jjdelcerro
        super("store", "expressionbuilder-element-table");
38 44191 jjdelcerro
        this.config = config;
39 44128 jjdelcerro
        if( store!=null ) {
40
            this.setFeatureStore(store);
41
        }
42 43983 jjdelcerro
    }
43
44
    @Override
45
    public Element get(int index) {
46
        return this.elements.get(index);
47
    }
48
49
    @Override
50 44190 jjdelcerro
    public void setName(String name) {
51
        this.myName = name;
52
    }
53
54
    @Override
55 44000 omartinez
    public String getName() {
56 44190 jjdelcerro
        if( !StringUtils.isBlank(this.myName) ) {
57
            return this.myName;
58
        }
59 44000 omartinez
        if (this.store == null) {
60
            return super.getName();
61
        }
62
        return this.store.getName();
63
    }
64
65
    @Override
66 43983 jjdelcerro
    public int size() {
67
        return this.type.size();
68
    }
69
70
    @Override
71
    public Iterator<Element> iterator() {
72
        return this.elements.iterator();
73
    }
74
75
    @Override
76
    public void addElement(Element element) {
77
    }
78
79
    @Override
80
    public void addElement(Function function) {
81
    }
82
83
    @Override
84
    public List<Element> getElements() {
85
        return Collections.unmodifiableList(this.elements);
86
    }
87
88
    @Override
89
    public boolean hasSubgroups() {
90
        return true;
91
    }
92
93
    @Override
94
    public boolean hasMoreElements() {
95
        return false;
96
    }
97 44128 jjdelcerro
98 44000 omartinez
    @Override
99
    public void setFeatureStore(FeatureStore store) {
100
          if (store==null) {
101
              this.elements = new ArrayList<>();
102
              return;
103
          }
104
          try {
105
106
            this.store = store;
107
            this.type = this.store.getDefaultFeatureType();
108
            this.elements = new ArrayList<>();
109
            for (FeatureAttributeDescriptor attrdesc : type) {
110
                this.elements.add(new FeatureAttributeElement(
111 44191 jjdelcerro
                                this.config,
112 44000 omartinez
                                this.store,
113
                                attrdesc
114
                        )
115
                );
116
            }
117
            Collections.sort(elements, new Comparator<Element>() {
118
                @Override
119
                public int compare(Element o1, Element o2) {
120
                    return o1.getName().compareTo(o2.getName());
121
                }
122
            });
123
        } catch (DataException ex) {
124
            throw new RuntimeException(ex);
125
        }
126
    }
127 43983 jjdelcerro
128 44128 jjdelcerro
    @Override
129
    public FeatureStore getFeatureStore() {
130
        return this.store;
131
    }
132
133 43983 jjdelcerro
134
}