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
package org.gvsig.fmap.dal.swing.impl.expressionevaluator;
2

    
3
import java.util.ArrayList;
4
import java.util.Collection;
5
import java.util.Iterator;
6
import java.util.List;
7
import org.apache.commons.lang3.StringUtils;
8
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
import org.gvsig.expressionevaluator.swing.ExpressionBuilderConfig;
13
import org.gvsig.expressionevaluator.swing.spi.AbstractElement;
14
import org.gvsig.fmap.dal.DALLocator;
15
import org.gvsig.fmap.dal.complements.Search;
16
import org.gvsig.fmap.dal.expressionevaluator.FeatureSymbolTable;
17
import org.gvsig.fmap.dal.feature.Feature;
18
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
19
import org.gvsig.fmap.dal.feature.FeatureStore;
20
import org.gvsig.fmap.dal.feature.ForeingKey;
21
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
    private final static String DEFAULT_ELEMENT_NAME = "store";
34
    
35
    private class ForeingKeyElement
36
            extends FeatureAttributeElement
37
            implements SimpleElement, GroupElement {
38

    
39
        private final Node node;
40
        private List<Element> elements;
41

    
42
        public ForeingKeyElement(Element parent, Node node) {
43
            super(
44
                    parent,
45
                    node.getFeatureStore(),
46
                    node.getValue(), "featurestore-foreing-key"
47
            );
48
            this.node = node;
49
        }
50
        
51
        @Override
52
        public String getLabel() {
53
            FeatureAttributeDescriptor attribute = this.node.getValue();
54
            if( attribute!=null && attribute.isForeingKey() ) {
55
                ForeingKey foreingKey = attribute.getForeingKey();
56
                if (getConfig().getPreferences().getShowLabelsOfElements()) {
57
                    if (!StringUtils.equals(attrdesc.getName(), attrdesc.getLabel())) {
58
                        return String.format(
59
                            "<html>%s<br><font size=\"2\"><i>(%s[%s])</i></font></html>", 
60
                            attrdesc.getLocalizedLabel(), 
61
                            attrdesc.getName(),
62
                            foreingKey.getTableName()
63
                        );
64
                    }
65
                    return String.format(
66
                        "<html>%s<br><font size=\"2\"><i>([%s])</i></font></html>", 
67
                        attrdesc.getLocalizedLabel(), 
68
                        foreingKey.getTableName()
69
                    );
70
                }
71
                return String.format(
72
                    "<html>%s<br><font size=\"2\"><i>([%s])</i></font></html>", 
73
                    attrdesc.getName(), 
74
                    foreingKey.getTableName()
75
                );
76
            }
77
            return super.getLabel();
78
        }
79
        
80
        @Override
81
        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

    
98
        }
99

    
100
        @Override
101
        public void addElement(Function function) {
102

    
103
        }
104

    
105
        @Override
106
        public List<Element> getElements() {
107
            if (this.elements == null) {
108
                this.elements = new ArrayList<>();
109
                List<Node> children = this.node.getChildren();
110
                for (Node child : children) {
111
                    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
                    this.elements.add(e);
120
                }
121
            }
122
            return this.elements;
123
        }
124

    
125
        @Override
126
        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
        }
135
    }
136

    
137
    private List<Element> elements;
138
    private FeatureStore store;
139
    private AdvancedAttributeSelectionTreeModel treemodel;
140

    
141
    public DefaultFeatureStoreElement2(FeatureStore store) {
142
        super(DEFAULT_ELEMENT_NAME, "store", "featurestore-table");
143
        this.setFeatureStore(store);
144
    }
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
    public Collection<Element> getValues() {
171
        return this.getElements();
172
    }
173

    
174
    @Override
175
    public List<Element> getElements() {
176
        if( this.treemodel==null ) {
177
            return null;
178
        }
179
        if (this.elements == null) {
180
            this.elements = new ArrayList<>();
181
            Node root = (Node) treemodel.getRoot();
182
            List<Node> children = root.getChildren();
183
            for (Node child : children) {
184
                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
                this.elements.add(e);
193
            }
194
        }
195
        return this.elements;
196
    }
197

    
198
    @Override
199
    public String getLabel() {
200
        if (this.store == null) {
201
            return super.getLabel();
202
        }
203
        return this.store.getName();
204
    }
205
    
206
    @Override
207
    public String getRenderedValue() {
208
        if (this.store == null) {
209
            return super.getRenderedValue();
210
        }
211
        return this.store.getName();
212
    }
213
    
214
    @Override
215
    public void setName(String name) {
216
        super.setName(name);
217
    }
218

    
219
    @Override
220
    public FeatureStore getFeatureStore() {
221
        return this.store;
222
    }
223

    
224
    @Override
225
    public final void setFeatureStore(FeatureStore store) {
226
        this.store = store;
227
        this.init();
228
    }
229

    
230
    @Override
231
    public Element setConfig(ExpressionBuilderConfig config) {
232
        super.setConfig(config);
233
        this.init();
234
        return this;
235
    }
236

    
237
    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
        if (this.getConfig().getPreviewSymbolTable()==null) { 
247
        Feature sampleFeature = this.store.getSampleFeature();
248
           if( sampleFeature!=null ) {
249
                FeatureSymbolTable featureSymbolTable = DALLocator.getDataManager().createFeatureSymbolTable();
250
                featureSymbolTable.setFeature(sampleFeature);
251
                this.getConfig().setPreviewSymbolTable(featureSymbolTable.createParent());
252
            } 
253
        }     
254
        this.treemodel = new AdvancedAttributeSelectionTreeModel(this.store, Search.ALL_FILTER);
255
    }
256
}