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

History | View | Annotate | Download (6.33 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 java.util.Objects;
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.complements.Search;
15
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
16
import org.gvsig.fmap.dal.feature.FeatureStore;
17
import org.gvsig.fmap.dal.feature.ForeingKey;
18
import org.gvsig.fmap.dal.swing.expressionevaluator.FeatureStoreElement;
19
import org.gvsig.fmap.dal.swing.impl.searchpanel.AdvancedAttributeSelectionTreeModel;
20
import org.gvsig.fmap.dal.swing.impl.searchpanel.AdvancedAttributeSelectionTreeModel.Node;
21

    
22
/**
23
 *
24
 * @author jjdelcerro
25
 */
26
public class DefaultFeatureStoreElement2
27
        extends AbstractElement
28
        implements SimpleElement, GroupElement, FeatureStoreElement {
29

    
30
    private class ForeingKeyElement
31
            extends FeatureAttributeElement
32
            implements SimpleElement, GroupElement {
33

    
34
        private final Node node;
35
        private List<Element> elements;
36

    
37
        public ForeingKeyElement(Element parent, Node node) {
38
            super(
39
                    parent,
40
                    node.getFeatureStore(),
41
                    node.getValue(), "featurestore-foreing-key"
42
            );
43
            this.node = node;
44
        }
45
        
46
        @Override
47
        public String getLabel() {
48
            FeatureAttributeDescriptor attribute = this.node.getValue();
49
            if( attribute!=null && attribute.isForeingKey() ) {
50
                ForeingKey foreingKey = attribute.getForeingKey();
51
                return String.format("%s [%s]", super.getLabel(), foreingKey.getTableName());
52
            }
53
            return super.getLabel();
54
        }
55
        
56
        @Override
57
        public Element get(int index) {
58
            return this.getElements().get(index);
59
        }
60

    
61
        @Override
62
        public int size() {
63
            return this.getElements().size();
64
        }
65

    
66
        @Override
67
        public Iterator<Element> iterator() {
68
            return this.getElements().iterator();
69
        }
70

    
71
        @Override
72
        public void addElement(Element element) {
73

    
74
        }
75

    
76
        @Override
77
        public void addElement(Function function) {
78

    
79
        }
80

    
81
        @Override
82
        public List<Element> getElements() {
83
            if (this.elements == null) {
84
                this.elements = new ArrayList<>();
85
                List<Node> children = this.node.getChildren();
86
                for (Node child : children) {
87
                    Element e;
88
                    FeatureAttributeDescriptor attrdesc = child.getValue();
89
                    if (attrdesc.isForeingKey()) {
90
                        e = new ForeingKeyElement(this, child);
91
                    } else {
92
                        e = new FeatureAttributeElement(this, child.getFeatureStore(), attrdesc);
93
                    }
94
                    e.setConfig(this.getConfig());
95
                    this.elements.add(e);
96
                }
97
            }
98
            return this.elements;
99
        }
100

    
101
        @Override
102
        public Element setConfig(ExpressionBuilderConfig config) {
103
            super.setConfig(config);
104
            if (this.elements != null) {
105
                for (Element element : this.elements) {
106
                    element.setConfig(config);
107
                }
108
            }
109
            return this;
110
        }
111
    }
112

    
113
    private List<Element> elements;
114
    private FeatureStore store;
115
    private AdvancedAttributeSelectionTreeModel treemodel;
116

    
117
    public DefaultFeatureStoreElement2(FeatureStore store) {
118
        super("store", "store", "featurestore-table");
119
        this.setFeatureStore(store);
120
    }
121

    
122
    @Override
123
    public Element get(int index) {
124
        return this.getElements().get(index);
125
    }
126

    
127
    @Override
128
    public int size() {
129
        return this.getElements().size();
130
    }
131

    
132
    @Override
133
    public Iterator<Element> iterator() {
134
        return this.getElements().iterator();
135
    }
136

    
137
    @Override
138
    public void addElement(Element element) {
139
    }
140

    
141
    @Override
142
    public void addElement(Function function) {
143
    }
144

    
145
    @Override
146
    public Collection<Element> getValues() {
147
        return this.getElements();
148
    }
149

    
150
    @Override
151
    public List<Element> getElements() {
152
        if (this.elements == null) {
153
            this.elements = new ArrayList<>();
154
            Node root = (Node) treemodel.getRoot();
155
            List<Node> children = root.getChildren();
156
            for (Node child : children) {
157
                Element e;
158
                FeatureAttributeDescriptor attrdesc = child.getValue();
159
                if (attrdesc.isForeingKey()) {
160
                    e = new ForeingKeyElement(this, child);
161
                } else {
162
                    e = new FeatureAttributeElement(this, child.getFeatureStore(), attrdesc);
163
                }
164
                e.setConfig(this.getConfig());
165
                this.elements.add(e);
166
            }
167
        }
168
        return this.elements;
169
    }
170

    
171
    @Override
172
    public String getLabel() {
173
        if (this.store == null) {
174
            return super.getLabel();
175
        }
176
        return this.store.getName();
177
    }
178
    
179
    @Override
180
    public String getRenderedValue() {
181
        if (this.store == null) {
182
            return super.getRenderedValue();
183
        }
184
        return this.store.getName();
185
    }
186
    
187
    @Override
188
    public void setName(String name) {
189
        super.setName(name);
190
    }
191

    
192
    @Override
193
    public final void setFeatureStore(FeatureStore store) {
194
        this.store = store;
195
        if (store == null) {
196
            this.treemodel = null;
197
        } else {
198
            this.treemodel = new AdvancedAttributeSelectionTreeModel(store, Search.ALL_FILTER);
199
        }
200
    }
201

    
202
    @Override
203
    public FeatureStore getFeatureStore() {
204
        return this.store;
205
    }
206

    
207
    @Override
208
    public Element setConfig(ExpressionBuilderConfig config) {
209
        super.setConfig(config);
210
        if (this.elements != null) {
211
            for (Element element : this.elements) {
212
                element.setConfig(config);
213
            }
214
        }
215
        return this;
216
    }
217

    
218
}