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

History | View | Annotate | Download (3.85 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.FeatureAttributeDescriptor;
16
import org.gvsig.fmap.dal.feature.FeatureStore;
17
import org.gvsig.fmap.dal.feature.FeatureType;
18
import org.gvsig.tools.ToolsLocator;
19

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

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

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

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

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

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

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

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

    
69
    @Override
70
    public Iterator<Element> iterator() {
71
        return this.buildElements().iterator();
72
    }
73

    
74
    @Override
75
    public void addElement(Element element) {
76
    }
77

    
78
    @Override
79
    public void addElement(Function function) {
80
    }
81

    
82
    @Override
83
    public List<Element> getElements() {
84
        return Collections.unmodifiableList(this.buildElements());
85
    }
86

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

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

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

    
108
    private List<Element> buildElements() {
109
        if (this.elements == null) {
110
            if (this.store == null || this.getConfig() == null) {
111
                return Collections.EMPTY_LIST;
112
            }
113
            try {
114
                FeatureType type = this.store.getDefaultFeatureType();
115

    
116
                this.elements = new ArrayList<>();
117
                Search search = (Search) ToolsLocator.getComplementsManager().get(
118
                        Search.COMPLEMENT_MANE,
119
                        type
120
                );
121
                List<FeatureAttributeDescriptor> attributes = search.getOrderedAttributes(
122
                        FeatureType.ALL_FILTER,
123
                        Search.LABEL_ORDER,
124
                        -1
125
                );
126
                for (FeatureAttributeDescriptor attrdesc : attributes) {
127
                    Element element = new FeatureAttributeElement(this, this.store, attrdesc);
128
                    element.setConfig(this.getConfig());
129
                    this.elements.add(element);
130
                }
131
            } catch (Exception ex) {
132
                throw new RuntimeException(ex);
133
            }
134
        }
135
        return this.elements;
136
    }
137
}