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

View differences:

DefaultFeatureStoreElement2.java
1 1
package org.gvsig.fmap.dal.swing.impl.expressionevaluator;
2 2

  
3 3
import java.util.ArrayList;
4
import java.util.Collection;
4 5
import java.util.Iterator;
5 6
import java.util.List;
7
import java.util.Objects;
6 8
import org.gvsig.expressionevaluator.Function;
7 9
import org.gvsig.expressionevaluator.swing.Element;
8 10
import org.gvsig.expressionevaluator.swing.Element.GroupElement;
9 11
import org.gvsig.expressionevaluator.swing.Element.SimpleElement;
12
import org.gvsig.expressionevaluator.swing.ExpressionBuilderConfig;
10 13
import org.gvsig.expressionevaluator.swing.spi.AbstractElement;
14
import org.gvsig.fmap.dal.complements.Search;
15
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
11 16
import org.gvsig.fmap.dal.feature.FeatureStore;
17
import org.gvsig.fmap.dal.feature.ForeingKey;
12 18
import org.gvsig.fmap.dal.swing.expressionevaluator.FeatureStoreElement;
13 19
import org.gvsig.fmap.dal.swing.impl.searchpanel.AdvancedAttributeSelectionTreeModel;
14 20
import org.gvsig.fmap.dal.swing.impl.searchpanel.AdvancedAttributeSelectionTreeModel.Node;
......
21 27
        extends AbstractElement
22 28
        implements SimpleElement, GroupElement, FeatureStoreElement {
23 29

  
24
    private List<Element> elements;
25

  
26
    private class Entry
27
            extends AbstractElement
30
    private class ForeingKeyElement
31
            extends FeatureAttributeElement
28 32
            implements SimpleElement, GroupElement {
29 33

  
30
        private final Node me;
34
        private final Node node;
31 35
        private List<Element> elements;
32 36

  
33
        public Entry(Node me) {
37
        public ForeingKeyElement(Element parent, Node node) {
34 38
            super(
35
                    me.getLabel(), 
36
                    me.getValue().getName(), 
37
                    me.isLeaf()? "featurestore-column" : "featurestore-foreing-key"
39
                    parent,
40
                    node.getFeatureStore(),
41
                    node.getValue(), "featurestore-foreing-key"
38 42
            );
39
            this.me = me;
43
            this.node = node;
40 44
        }
41

  
45
        
42 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
43 57
        public Element get(int index) {
44 58
            return this.getElements().get(index);
45 59
        }
......
56 70

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

  
59 74
        }
60 75

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

  
63 79
        }
64 80

  
65 81
        @Override
66 82
        public List<Element> getElements() {
67 83
            if (this.elements == null) {
68 84
                this.elements = new ArrayList<>();
69
                List<Node> children = me.getChilds();
85
                List<Node> children = this.node.getChildren();
70 86
                for (Node child : children) {
71
                    Entry e = new Entry(child);
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());
72 95
                    this.elements.add(e);
73 96
                }
74 97
            }
......
76 99
        }
77 100

  
78 101
        @Override
79
        public boolean hasSubgroups() {
80
            return !me.isLeaf();
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;
81 110
        }
82

  
83
        @Override
84
        public boolean hasMoreElements() {
85
            return false;
86
        }
87

  
88 111
    }
89 112

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

  
92 117
    public DefaultFeatureStoreElement2(FeatureStore store) {
93 118
        super("store", "store", "featurestore-table");
94
        this.treemodel = new AdvancedAttributeSelectionTreeModel(store, null);
119
        this.setFeatureStore(store);
95 120
    }
96 121

  
97 122
    @Override
......
118 143
    }
119 144

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

  
150
    @Override
121 151
    public List<Element> getElements() {
122 152
        if (this.elements == null) {
123 153
            this.elements = new ArrayList<>();
124 154
            Node root = (Node) treemodel.getRoot();
125
            List<Node> children = root.getChilds();
155
            List<Node> children = root.getChildren();
126 156
            for (Node child : children) {
127
                Entry e = new Entry(child);
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());
128 165
                this.elements.add(e);
129 166
            }
130 167
        }
......
132 169
    }
133 170

  
134 171
    @Override
135
    public boolean hasSubgroups() {
136
        return true;
172
    public String getLabel() {
173
        if (this.store == null) {
174
            return super.getLabel();
175
        }
176
        return this.store.getName();
137 177
    }
138

  
178
    
139 179
    @Override
140
    public boolean hasMoreElements() {
141
        return false;
180
    public String getRenderedValue() {
181
        if (this.store == null) {
182
            return super.getRenderedValue();
183
        }
184
        return this.store.getName();
142 185
    }
143

  
186
    
144 187
    @Override
145 188
    public void setName(String name) {
146
        // TODO: Por implementar
189
        super.setName(name);
147 190
    }
148 191

  
149 192
    @Override
150
    public void setFeatureStore(FeatureStore store) {
151
        // TODO: Por implementar
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
        }
152 200
    }
153 201

  
154 202
    @Override
155 203
    public FeatureStore getFeatureStore() {
156
        // TODO: Por implementar
157
        return null;
204
        return this.store;
158 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

  
159 218
}

Also available in: Unified diff