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

History | View | Annotate | Download (3.8 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.Iterator;
7
import java.util.List;
8
import org.apache.commons.lang3.StringUtils;
9
import org.gvsig.expressionevaluator.Function;
10
import org.gvsig.expressionevaluator.swing.Element;
11
import org.gvsig.expressionevaluator.swing.Element.SimpleElement;
12
import org.gvsig.expressionevaluator.swing.ExpressionBuilderConfig;
13
import org.gvsig.expressionevaluator.swing.spi.AbstractElement;
14
import org.gvsig.fmap.dal.complements.Search;
15
import org.gvsig.fmap.dal.feature.FeatureStore;
16
import org.gvsig.fmap.dal.feature.FeatureType;
17
import org.gvsig.tools.ToolsLocator;
18

    
19
/**
20
 *
21
 * @author jjdelcerro
22
 */
23
@SuppressWarnings("UseSpecificCatch")
24
public class DefaultFeatureStoreElement
25
        extends AbstractElement
26
        implements FeatureStoreElement, SimpleElement {
27

    
28
    private FeatureStore store;
29
    private List<Element> elements;
30
    private String myName;
31

    
32
    public DefaultFeatureStoreElement(FeatureStore store) {
33
        super("store", "store", "featurestore-table");
34
        this.setFeatureStore(store);
35
    }
36

    
37
    @Override
38
    public Element get(int index) {
39
        return this.buildElements().get(index);
40
    }
41

    
42
    @Override
43
    public String getLabel() {
44
        return this.getName();
45
    }
46

    
47
    @Override
48
    public void setName(String name) {
49
        this.myName = name;
50
    }
51

    
52
    @Override
53
    public String getName() {
54
        if (!StringUtils.isBlank(this.myName)) {
55
            return this.myName;
56
        }
57
        if (this.store == null) {
58
            return super.getName();
59
        }
60
        return this.store.getName();
61
    }
62

    
63
    @Override
64
    public int size() {
65
        return this.buildElements().size();
66
    }
67

    
68
    @Override
69
    public Iterator<Element> iterator() {
70
        return this.buildElements().iterator();
71
    }
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
        return Collections.unmodifiableList(this.buildElements());
84
    }
85

    
86
    @Override
87
    public void setFeatureStore(FeatureStore store) {
88
        this.store = store;
89
        if( store == null ) {
90
            this.elements = null;
91
        }
92
        this.buildElements();
93
    }
94

    
95
    @Override
96
    public FeatureStore getFeatureStore() {
97
        return this.store;
98
    }
99

    
100
    @Override
101
    public Element setConfig(ExpressionBuilderConfig config) {
102
        super.setConfig(config);
103
        this.buildElements();
104
        return this;
105
    }
106

    
107
    private List<Element> buildElements() {
108
        if (this.elements == null) {
109
            if (this.store == null || this.getConfig() == null) {
110
                return Collections.EMPTY_LIST;
111
            }
112
            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
                List<Search.OrderedAttribute> attributes = search.getOrderedAttributes(
121
                        FeatureType.ALL_FILTER,
122
                        Search.LABEL_ORDER,
123
                        -1
124
                );
125
                for (Search.OrderedAttribute attrdesc : attributes) {
126
                    Element element = new FeatureAttributeElement(this, this.store, attrdesc.getDescriptor());
127
                    element.setConfig(this.getConfig());
128
                    this.elements.add(element);
129
                }
130
            } catch (Exception ex) {
131
                throw new RuntimeException(ex);
132
            }
133
        }
134
        return this.elements;
135
    }
136
}