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

History | View | Annotate | Download (3.8 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.Iterator;
7
import java.util.List;
8 44190 jjdelcerro
import org.apache.commons.lang3.StringUtils;
9 43983 jjdelcerro
import org.gvsig.expressionevaluator.Function;
10
import org.gvsig.expressionevaluator.swing.Element;
11 44190 jjdelcerro
import org.gvsig.expressionevaluator.swing.Element.SimpleElement;
12 43983 jjdelcerro
import org.gvsig.expressionevaluator.swing.ExpressionBuilderConfig;
13
import org.gvsig.expressionevaluator.swing.spi.AbstractElement;
14 44262 jjdelcerro
import org.gvsig.fmap.dal.complements.Search;
15 43983 jjdelcerro
import org.gvsig.fmap.dal.feature.FeatureStore;
16
import org.gvsig.fmap.dal.feature.FeatureType;
17 44262 jjdelcerro
import org.gvsig.tools.ToolsLocator;
18 43983 jjdelcerro
19
/**
20
 *
21
 * @author jjdelcerro
22
 */
23 44259 jjdelcerro
@SuppressWarnings("UseSpecificCatch")
24
public class DefaultFeatureStoreElement
25 43983 jjdelcerro
        extends AbstractElement
26 44259 jjdelcerro
        implements FeatureStoreElement, SimpleElement {
27 43983 jjdelcerro
28 44000 omartinez
    private FeatureStore store;
29
    private List<Element> elements;
30 44190 jjdelcerro
    private String myName;
31 43983 jjdelcerro
32 44259 jjdelcerro
    public DefaultFeatureStoreElement(FeatureStore store) {
33 44262 jjdelcerro
        super("store", "store", "featurestore-table");
34 44259 jjdelcerro
        this.setFeatureStore(store);
35 43983 jjdelcerro
    }
36 44259 jjdelcerro
37 43983 jjdelcerro
    @Override
38
    public Element get(int index) {
39 44262 jjdelcerro
        return this.buildElements().get(index);
40 43983 jjdelcerro
    }
41
42
    @Override
43 44262 jjdelcerro
    public String getLabel() {
44
        return this.getName();
45
    }
46
47
    @Override
48 44190 jjdelcerro
    public void setName(String name) {
49
        this.myName = name;
50
    }
51 44259 jjdelcerro
52 44190 jjdelcerro
    @Override
53 44000 omartinez
    public String getName() {
54 44259 jjdelcerro
        if (!StringUtils.isBlank(this.myName)) {
55 44190 jjdelcerro
            return this.myName;
56
        }
57 44000 omartinez
        if (this.store == null) {
58
            return super.getName();
59
        }
60
        return this.store.getName();
61
    }
62
63
    @Override
64 43983 jjdelcerro
    public int size() {
65 44262 jjdelcerro
        return this.buildElements().size();
66 43983 jjdelcerro
    }
67
68
    @Override
69
    public Iterator<Element> iterator() {
70 44262 jjdelcerro
        return this.buildElements().iterator();
71 43983 jjdelcerro
    }
72
73
    @Override
74
    public void addElement(Element element) {
75
    }
76
77
    @Override
78
    public void addElement(Function function) {
79
    }
80
81
    @Override
82
    public List<Element> getElements() {
83 44262 jjdelcerro
        return Collections.unmodifiableList(this.buildElements());
84 43983 jjdelcerro
    }
85
86
    @Override
87 44000 omartinez
    public void setFeatureStore(FeatureStore store) {
88 44262 jjdelcerro
        this.store = store;
89
        if( store == null ) {
90
            this.elements = null;
91 44000 omartinez
        }
92 44259 jjdelcerro
        this.buildElements();
93 44000 omartinez
    }
94 43983 jjdelcerro
95 44128 jjdelcerro
    @Override
96
    public FeatureStore getFeatureStore() {
97
        return this.store;
98
    }
99
100 44259 jjdelcerro
    @Override
101
    public Element setConfig(ExpressionBuilderConfig config) {
102
        super.setConfig(config);
103
        this.buildElements();
104
        return this;
105
    }
106
107 44262 jjdelcerro
    private List<Element> buildElements() {
108
        if (this.elements == null) {
109
            if (this.store == null || this.getConfig() == null) {
110
                return Collections.EMPTY_LIST;
111 44259 jjdelcerro
            }
112 44262 jjdelcerro
            try {
113
                FeatureType type = this.store.getDefaultFeatureType();
114
115
                this.elements = new ArrayList<>();
116
                Search search = (Search) ToolsLocator.getComplementsManager().get(
117
                        Search.COMPLEMENT_MANE,
118
                        type
119
                );
120 44337 jjdelcerro
                List<Search.OrderedAttribute> attributes = search.getOrderedAttributes(
121 44262 jjdelcerro
                        FeatureType.ALL_FILTER,
122
                        Search.LABEL_ORDER,
123
                        -1
124
                );
125 44337 jjdelcerro
                for (Search.OrderedAttribute attrdesc : attributes) {
126
                    Element element = new FeatureAttributeElement(this, this.store, attrdesc.getDescriptor());
127 44262 jjdelcerro
                    element.setConfig(this.getConfig());
128
                    this.elements.add(element);
129
                }
130
            } catch (Exception ex) {
131
                throw new RuntimeException(ex);
132
            }
133 44259 jjdelcerro
        }
134 44262 jjdelcerro
        return this.elements;
135 44259 jjdelcerro
    }
136 43983 jjdelcerro
}