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
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.Comparator;
7
import java.util.Iterator;
8
import java.util.List;
9
import org.apache.commons.lang3.StringUtils;
10
import org.gvsig.expressionevaluator.Function;
11
import org.gvsig.expressionevaluator.swing.Element;
12
import org.gvsig.expressionevaluator.swing.Element.SimpleElement;
13
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
public class DefaultFeatureStoreElement 
25
        extends AbstractElement
26
        implements FeatureStoreElement , SimpleElement
27
{
28

    
29
    private FeatureStore store;
30
    private FeatureType type;
31
    private List<Element> elements;
32
    private final ExpressionBuilderConfig config;
33
    private String myName;
34

    
35
    @SuppressWarnings("OverridableMethodCallInConstructor")
36
    public DefaultFeatureStoreElement(ExpressionBuilderConfig config, FeatureStore store) {
37
        super("store", "expressionbuilder-element-table");
38
        this.config = config;
39
        if( store!=null ) {
40
            this.setFeatureStore(store);
41
        }
42
    }
43
    
44
    @Override
45
    public Element get(int index) {
46
        return this.elements.get(index);
47
    }
48

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

    
65
    @Override
66
    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

    
98
    @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
                                this.config,
112
                                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

    
128
    @Override
129
    public FeatureStore getFeatureStore() {
130
        return this.store;
131
    }
132

    
133
    
134
}