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

History | View | Annotate | Download (4 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 boolean hasSubgroups() {
89
        return true;
90
    }
91

    
92
    @Override
93
    public boolean hasMoreElements() {
94
        return false;
95
    }
96

    
97
    @Override
98
    public void setFeatureStore(FeatureStore store) {
99
        this.store = store;
100
        if( store == null ) {
101
            this.elements = null;
102
        }
103
        this.buildElements();
104
    }
105

    
106
    @Override
107
    public FeatureStore getFeatureStore() {
108
        return this.store;
109
    }
110

    
111
    @Override
112
    public Element setConfig(ExpressionBuilderConfig config) {
113
        super.setConfig(config);
114
        this.buildElements();
115
        return this;
116
    }
117

    
118
    private List<Element> buildElements() {
119
        if (this.elements == null) {
120
            if (this.store == null || this.getConfig() == null) {
121
                return Collections.EMPTY_LIST;
122
            }
123
            try {
124
                FeatureType type = this.store.getDefaultFeatureType();
125

    
126
                this.elements = new ArrayList<>();
127
                Search search = (Search) ToolsLocator.getComplementsManager().get(
128
                        Search.COMPLEMENT_MANE,
129
                        type
130
                );
131
                List<FeatureAttributeDescriptor> attributes = search.getOrderedAttributes(
132
                        FeatureType.ALL_FILTER,
133
                        Search.LABEL_ORDER,
134
                        -1
135
                );
136
                for (FeatureAttributeDescriptor attrdesc : attributes) {
137
                    Element element = new FeatureAttributeElement(this.store, attrdesc);
138
                    element.setConfig(this.getConfig());
139
                    this.elements.add(element);
140
                }
141
            } catch (Exception ex) {
142
                throw new RuntimeException(ex);
143
            }
144
        }
145
        return this.elements;
146
    }
147
}