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

History | View | Annotate | Download (3.66 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
        if( this.elements == null ) {
86
            return Collections.EMPTY_LIST;
87
        }
88
        return Collections.unmodifiableList(this.elements);
89
    }
90

    
91
    @Override
92
    public boolean hasSubgroups() {
93
        return true;
94
    }
95

    
96
    @Override
97
    public boolean hasMoreElements() {
98
        return false;
99
    }
100

    
101
    @Override
102
    public void setFeatureStore(FeatureStore store) {
103
          if (store==null) {
104
              this.elements = Collections.EMPTY_LIST;
105
              return;
106
          }
107
          try {
108
            
109
            this.store = store;
110
            this.type = this.store.getDefaultFeatureType();
111
            this.elements = new ArrayList<>();
112
            for (FeatureAttributeDescriptor attrdesc : type) {
113
                this.elements.add(new FeatureAttributeElement(
114
                                this.config,
115
                                this.store,
116
                                attrdesc
117
                        )
118
                );
119
            }
120
            Collections.sort(elements, new Comparator<Element>() {
121
                @Override
122
                public int compare(Element o1, Element o2) {
123
                    return o1.getName().compareTo(o2.getName());
124
                }
125
            });
126
        } catch (DataException ex) {
127
            throw new RuntimeException(ex);
128
        }
129
    }
130

    
131
    @Override
132
    public FeatureStore getFeatureStore() {
133
        return this.store;
134
    }
135

    
136
    
137
}