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 / DefaultFeatureStoreElement2.java @ 44630

History | View | Annotate | Download (8.12 KB)

1 44262 jjdelcerro
package org.gvsig.fmap.dal.swing.impl.expressionevaluator;
2
3
import java.util.ArrayList;
4 44263 jjdelcerro
import java.util.Collection;
5 44262 jjdelcerro
import java.util.Iterator;
6
import java.util.List;
7 44264 jjdelcerro
import org.apache.commons.lang3.StringUtils;
8 44262 jjdelcerro
import org.gvsig.expressionevaluator.Function;
9
import org.gvsig.expressionevaluator.swing.Element;
10
import org.gvsig.expressionevaluator.swing.Element.GroupElement;
11
import org.gvsig.expressionevaluator.swing.Element.SimpleElement;
12 44263 jjdelcerro
import org.gvsig.expressionevaluator.swing.ExpressionBuilderConfig;
13 44262 jjdelcerro
import org.gvsig.expressionevaluator.swing.spi.AbstractElement;
14 44285 jjdelcerro
import org.gvsig.fmap.dal.DALLocator;
15 44263 jjdelcerro
import org.gvsig.fmap.dal.complements.Search;
16 44285 jjdelcerro
import org.gvsig.fmap.dal.expressionevaluator.FeatureSymbolTable;
17
import org.gvsig.fmap.dal.feature.Feature;
18 44263 jjdelcerro
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
19 44262 jjdelcerro
import org.gvsig.fmap.dal.feature.FeatureStore;
20 44263 jjdelcerro
import org.gvsig.fmap.dal.feature.ForeingKey;
21 44262 jjdelcerro
import org.gvsig.fmap.dal.swing.expressionevaluator.FeatureStoreElement;
22
import org.gvsig.fmap.dal.swing.impl.searchpanel.AdvancedAttributeSelectionTreeModel;
23
import org.gvsig.fmap.dal.swing.impl.searchpanel.AdvancedAttributeSelectionTreeModel.Node;
24
25
/**
26
 *
27
 * @author jjdelcerro
28
 */
29
public class DefaultFeatureStoreElement2
30
        extends AbstractElement
31
        implements SimpleElement, GroupElement, FeatureStoreElement {
32
33 44285 jjdelcerro
    private final static String DEFAULT_ELEMENT_NAME = "store";
34
35 44263 jjdelcerro
    private class ForeingKeyElement
36
            extends FeatureAttributeElement
37 44262 jjdelcerro
            implements SimpleElement, GroupElement {
38
39 44263 jjdelcerro
        private final Node node;
40 44262 jjdelcerro
        private List<Element> elements;
41
42 44263 jjdelcerro
        public ForeingKeyElement(Element parent, Node node) {
43 44262 jjdelcerro
            super(
44 44263 jjdelcerro
                    parent,
45
                    node.getFeatureStore(),
46
                    node.getValue(), "featurestore-foreing-key"
47 44262 jjdelcerro
            );
48 44263 jjdelcerro
            this.node = node;
49 44262 jjdelcerro
        }
50 44263 jjdelcerro
51 44262 jjdelcerro
        @Override
52 44263 jjdelcerro
        public String getLabel() {
53
            FeatureAttributeDescriptor attribute = this.node.getValue();
54
            if( attribute!=null && attribute.isForeingKey() ) {
55
                ForeingKey foreingKey = attribute.getForeingKey();
56 44264 jjdelcerro
                if (getConfig().getPreferences().getShowLabelsOfElements()) {
57
                    if (!StringUtils.equals(attrdesc.getName(), attrdesc.getLabel())) {
58
                        return String.format(
59 44338 jjdelcerro
                            "<html>%s<br><font size=\"2\"><i>(%s[%s])</i></font></html>",
60
                            attrdesc.getLocalizedLabel(),
61
                            attrdesc.getName(),
62 44264 jjdelcerro
                            foreingKey.getTableName()
63
                        );
64
                    }
65
                    return String.format(
66 44338 jjdelcerro
                        "<html>%s<br><font size=\"2\"><i>([%s])</i></font></html>",
67
                        attrdesc.getLocalizedLabel(),
68
                        foreingKey.getTableName()
69 44264 jjdelcerro
                    );
70
                }
71
                return String.format(
72 44338 jjdelcerro
                    "<html>%s<br><font size=\"2\"><i>([%s])</i></font></html>",
73
                    attrdesc.getName(),
74
                    foreingKey.getTableName()
75 44264 jjdelcerro
                );
76 44263 jjdelcerro
            }
77
            return super.getLabel();
78
        }
79
80
        @Override
81 44262 jjdelcerro
        public Element get(int index) {
82
            return this.getElements().get(index);
83
        }
84
85
        @Override
86
        public int size() {
87
            return this.getElements().size();
88
        }
89
90
        @Override
91
        public Iterator<Element> iterator() {
92
            return this.getElements().iterator();
93
        }
94
95
        @Override
96
        public void addElement(Element element) {
97 44263 jjdelcerro
98 44262 jjdelcerro
        }
99
100
        @Override
101
        public void addElement(Function function) {
102 44263 jjdelcerro
103 44262 jjdelcerro
        }
104
105
        @Override
106
        public List<Element> getElements() {
107
            if (this.elements == null) {
108
                this.elements = new ArrayList<>();
109 44263 jjdelcerro
                List<Node> children = this.node.getChildren();
110 44262 jjdelcerro
                for (Node child : children) {
111 44263 jjdelcerro
                    Element e;
112
                    FeatureAttributeDescriptor attrdesc = child.getValue();
113
                    if (attrdesc.isForeingKey()) {
114
                        e = new ForeingKeyElement(this, child);
115
                    } else {
116
                        e = new FeatureAttributeElement(this, child.getFeatureStore(), attrdesc);
117
                    }
118
                    e.setConfig(this.getConfig());
119 44262 jjdelcerro
                    this.elements.add(e);
120
                }
121
            }
122
            return this.elements;
123
        }
124
125
        @Override
126 44263 jjdelcerro
        public Element setConfig(ExpressionBuilderConfig config) {
127
            super.setConfig(config);
128
            if (this.elements != null) {
129
                for (Element element : this.elements) {
130
                    element.setConfig(config);
131
                }
132
            }
133
            return this;
134 44262 jjdelcerro
        }
135
    }
136
137 44263 jjdelcerro
    private List<Element> elements;
138
    private FeatureStore store;
139
    private AdvancedAttributeSelectionTreeModel treemodel;
140 44262 jjdelcerro
141
    public DefaultFeatureStoreElement2(FeatureStore store) {
142 44285 jjdelcerro
        super(DEFAULT_ELEMENT_NAME, "store", "featurestore-table");
143 44263 jjdelcerro
        this.setFeatureStore(store);
144 44262 jjdelcerro
    }
145
146
    @Override
147
    public Element get(int index) {
148
        return this.getElements().get(index);
149
    }
150
151
    @Override
152
    public int size() {
153
        return this.getElements().size();
154
    }
155
156
    @Override
157
    public Iterator<Element> iterator() {
158
        return this.getElements().iterator();
159
    }
160
161
    @Override
162
    public void addElement(Element element) {
163
    }
164
165
    @Override
166
    public void addElement(Function function) {
167
    }
168
169
    @Override
170 44263 jjdelcerro
    public Collection<Element> getValues() {
171
        return this.getElements();
172
    }
173
174
    @Override
175 44262 jjdelcerro
    public List<Element> getElements() {
176 44285 jjdelcerro
        if( this.treemodel==null ) {
177
            return null;
178
        }
179 44262 jjdelcerro
        if (this.elements == null) {
180
            this.elements = new ArrayList<>();
181
            Node root = (Node) treemodel.getRoot();
182 44263 jjdelcerro
            List<Node> children = root.getChildren();
183 44262 jjdelcerro
            for (Node child : children) {
184 44263 jjdelcerro
                Element e;
185
                FeatureAttributeDescriptor attrdesc = child.getValue();
186
                if (attrdesc.isForeingKey()) {
187
                    e = new ForeingKeyElement(this, child);
188
                } else {
189
                    e = new FeatureAttributeElement(this, child.getFeatureStore(), attrdesc);
190
                }
191
                e.setConfig(this.getConfig());
192 44262 jjdelcerro
                this.elements.add(e);
193
            }
194
        }
195
        return this.elements;
196
    }
197
198
    @Override
199 44263 jjdelcerro
    public String getLabel() {
200
        if (this.store == null) {
201
            return super.getLabel();
202
        }
203
        return this.store.getName();
204 44262 jjdelcerro
    }
205 44263 jjdelcerro
206 44262 jjdelcerro
    @Override
207 44263 jjdelcerro
    public String getRenderedValue() {
208
        if (this.store == null) {
209
            return super.getRenderedValue();
210
        }
211
        return this.store.getName();
212 44262 jjdelcerro
    }
213 44263 jjdelcerro
214 44262 jjdelcerro
    @Override
215
    public void setName(String name) {
216 44263 jjdelcerro
        super.setName(name);
217 44262 jjdelcerro
    }
218
219
    @Override
220 44285 jjdelcerro
    public FeatureStore getFeatureStore() {
221
        return this.store;
222 44262 jjdelcerro
    }
223
224
    @Override
225 44285 jjdelcerro
    public final void setFeatureStore(FeatureStore store) {
226
        this.store = store;
227
        this.init();
228 44262 jjdelcerro
    }
229 44263 jjdelcerro
230
    @Override
231
    public Element setConfig(ExpressionBuilderConfig config) {
232
        super.setConfig(config);
233 44285 jjdelcerro
        this.init();
234 44263 jjdelcerro
        return this;
235
    }
236
237 44285 jjdelcerro
    private void init() {
238
        this.treemodel = null;
239
        this.elements = null;
240
        if (this.store == null || this.getConfig()==null ) {
241
            return;
242
        }
243
        if( StringUtils.equalsIgnoreCase(DEFAULT_ELEMENT_NAME, this.store.getName()) ) {
244
            this.setName(this.store.getName());
245
        }
246 44630 omartinez
        if (this.getConfig().getPreviewSymbolTable()==null) {
247 44285 jjdelcerro
        Feature sampleFeature = this.store.getSampleFeature();
248 44630 omartinez
           if( sampleFeature!=null ) {
249
                FeatureSymbolTable featureSymbolTable = DALLocator.getDataManager().createFeatureSymbolTable();
250
                featureSymbolTable.setFeature(sampleFeature);
251
                this.getConfig().setPreviewSymbolTable(featureSymbolTable.createParent());
252
            }
253
        }
254 44285 jjdelcerro
        this.treemodel = new AdvancedAttributeSelectionTreeModel(this.store, Search.ALL_FILTER);
255
    }
256 44262 jjdelcerro
}