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 @ 44376
History | View | Annotate | Download (3.8 KB)
1 | 43983 | jjdelcerro | package org.gvsig.fmap.dal.swing.impl.expressionevaluator; |
---|---|---|---|
2 | |||
3 | 44000 | omartinez | import org.gvsig.fmap.dal.swing.expressionevaluator.FeatureStoreElement; |
4 | 43983 | jjdelcerro | import java.util.ArrayList; |
5 | import java.util.Collections; |
||
6 | import java.util.Iterator; |
||
7 | import java.util.List; |
||
8 | 44190 | jjdelcerro | import org.apache.commons.lang3.StringUtils; |
9 | 43983 | jjdelcerro | import org.gvsig.expressionevaluator.Function; |
10 | import org.gvsig.expressionevaluator.swing.Element; |
||
11 | 44190 | jjdelcerro | import org.gvsig.expressionevaluator.swing.Element.SimpleElement; |
12 | 43983 | jjdelcerro | import org.gvsig.expressionevaluator.swing.ExpressionBuilderConfig; |
13 | import org.gvsig.expressionevaluator.swing.spi.AbstractElement; |
||
14 | 44262 | jjdelcerro | import org.gvsig.fmap.dal.complements.Search; |
15 | 43983 | jjdelcerro | import org.gvsig.fmap.dal.feature.FeatureStore; |
16 | import org.gvsig.fmap.dal.feature.FeatureType; |
||
17 | 44262 | jjdelcerro | import org.gvsig.tools.ToolsLocator; |
18 | 43983 | jjdelcerro | |
19 | /**
|
||
20 | *
|
||
21 | * @author jjdelcerro
|
||
22 | */
|
||
23 | 44259 | jjdelcerro | @SuppressWarnings("UseSpecificCatch") |
24 | public class DefaultFeatureStoreElement |
||
25 | 43983 | jjdelcerro | extends AbstractElement
|
26 | 44259 | jjdelcerro | implements FeatureStoreElement, SimpleElement {
|
27 | 43983 | jjdelcerro | |
28 | 44000 | omartinez | private FeatureStore store;
|
29 | private List<Element> elements; |
||
30 | 44190 | jjdelcerro | private String myName; |
31 | 43983 | jjdelcerro | |
32 | 44259 | jjdelcerro | public DefaultFeatureStoreElement(FeatureStore store) {
|
33 | 44262 | jjdelcerro | super("store", "store", "featurestore-table"); |
34 | 44259 | jjdelcerro | this.setFeatureStore(store);
|
35 | 43983 | jjdelcerro | } |
36 | 44259 | jjdelcerro | |
37 | 43983 | jjdelcerro | @Override
|
38 | public Element get(int index) { |
||
39 | 44262 | jjdelcerro | return this.buildElements().get(index); |
40 | 43983 | jjdelcerro | } |
41 | |||
42 | @Override
|
||
43 | 44262 | jjdelcerro | public String getLabel() { |
44 | return this.getName(); |
||
45 | } |
||
46 | |||
47 | @Override
|
||
48 | 44190 | jjdelcerro | public void setName(String name) { |
49 | this.myName = name;
|
||
50 | } |
||
51 | 44259 | jjdelcerro | |
52 | 44190 | jjdelcerro | @Override
|
53 | 44000 | omartinez | public String getName() { |
54 | 44259 | jjdelcerro | if (!StringUtils.isBlank(this.myName)) { |
55 | 44190 | jjdelcerro | return this.myName; |
56 | } |
||
57 | 44000 | omartinez | if (this.store == null) { |
58 | return super.getName(); |
||
59 | } |
||
60 | return this.store.getName(); |
||
61 | } |
||
62 | |||
63 | @Override
|
||
64 | 43983 | jjdelcerro | public int size() { |
65 | 44262 | jjdelcerro | return this.buildElements().size(); |
66 | 43983 | jjdelcerro | } |
67 | |||
68 | @Override
|
||
69 | public Iterator<Element> iterator() { |
||
70 | 44262 | jjdelcerro | return this.buildElements().iterator(); |
71 | 43983 | jjdelcerro | } |
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 | 44262 | jjdelcerro | return Collections.unmodifiableList(this.buildElements()); |
84 | 43983 | jjdelcerro | } |
85 | |||
86 | @Override
|
||
87 | 44000 | omartinez | public void setFeatureStore(FeatureStore store) { |
88 | 44262 | jjdelcerro | this.store = store;
|
89 | if( store == null ) { |
||
90 | this.elements = null; |
||
91 | 44000 | omartinez | } |
92 | 44259 | jjdelcerro | this.buildElements();
|
93 | 44000 | omartinez | } |
94 | 43983 | jjdelcerro | |
95 | 44128 | jjdelcerro | @Override
|
96 | public FeatureStore getFeatureStore() {
|
||
97 | return this.store; |
||
98 | } |
||
99 | |||
100 | 44259 | jjdelcerro | @Override
|
101 | public Element setConfig(ExpressionBuilderConfig config) { |
||
102 | super.setConfig(config);
|
||
103 | this.buildElements();
|
||
104 | return this; |
||
105 | } |
||
106 | |||
107 | 44262 | jjdelcerro | private List<Element> buildElements() { |
108 | if (this.elements == null) { |
||
109 | if (this.store == null || this.getConfig() == null) { |
||
110 | return Collections.EMPTY_LIST; |
||
111 | 44259 | jjdelcerro | } |
112 | 44262 | jjdelcerro | 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 | 44337 | jjdelcerro | List<Search.OrderedAttribute> attributes = search.getOrderedAttributes(
|
121 | 44262 | jjdelcerro | FeatureType.ALL_FILTER, |
122 | Search.LABEL_ORDER, |
||
123 | -1
|
||
124 | ); |
||
125 | 44337 | jjdelcerro | for (Search.OrderedAttribute attrdesc : attributes) {
|
126 | Element element = new FeatureAttributeElement(this, this.store, attrdesc.getDescriptor()); |
||
127 | 44262 | jjdelcerro | element.setConfig(this.getConfig());
|
128 | this.elements.add(element);
|
||
129 | } |
||
130 | } catch (Exception ex) { |
||
131 | throw new RuntimeException(ex); |
||
132 | } |
||
133 | 44259 | jjdelcerro | } |
134 | 44262 | jjdelcerro | return this.elements; |
135 | 44259 | jjdelcerro | } |
136 | 43983 | jjdelcerro | } |