Revision 39410

View differences:

branches/v2_0_0_prep/libraries/libFMap_controls/src/org/gvsig/fmap/mapcontrol/dal/feature/swing/table/ConfigurableFeatureTableModel.java
37 37

  
38 38
import org.gvsig.fmap.dal.DataTypes;
39 39
import org.gvsig.fmap.dal.feature.EditableFeature;
40
import org.gvsig.fmap.dal.feature.EditableFeatureAttributeDescriptor;
40 41
import org.gvsig.fmap.dal.feature.Feature;
41 42
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
42 43
import org.gvsig.fmap.dal.feature.FeatureQuery;
......
150 151
    public void setFeatureType(FeatureType featureType) {
151 152
        // Check if there is a new column name
152 153
        List<String> newColumns = new ArrayList<String>();
154
        List<String> renamedColumnsNewName = new ArrayList<String>();
155
        
153 156
        @SuppressWarnings("unchecked")
154 157
        Iterator<FeatureAttributeDescriptor> attrIter = featureType.iterator();
158
        FeatureAttributeDescriptor fad = null;
159
        EditableFeatureAttributeDescriptor efad = null;
160
        
155 161
        String colName;
156 162
        while (attrIter.hasNext()) {
157
            colName = attrIter.next().getName();
163
            fad = attrIter.next();
164
            colName = fad.getName();
158 165
            if (!columnNames.contains(colName)) {
159
                newColumns.add(colName);
166
                if (fad instanceof EditableFeatureAttributeDescriptor) {
167
                    efad = (EditableFeatureAttributeDescriptor) fad; 
168
                    /*
169
                     * If editable att descriptor,
170
                     * check original name
171
                     */
172
                    if (efad.getOriginalName() != null) {
173
                        if (!columnNames.contains(efad.getOriginalName())) {
174
                            /*
175
                             * Check with original name but add current name
176
                             */
177
                            newColumns.add(colName);
178
                        } else {
179
                            /*
180
                             * List of new names of renamed columns
181
                             */
182
                            renamedColumnsNewName.add(colName);
183
                        }
184
                    } else {
185
                        newColumns.add(colName);
186
                    }
187
                } else {
188
                    newColumns.add(colName);
189
                }
160 190
            }
161 191
        }
162 192

  
......
166 196
        Iterator<FeatureAttributeDescriptor> visibleAttrIter =
167 197
            featureType.iterator();
168 198
        while (visibleAttrIter.hasNext()) {
169
            colName = visibleAttrIter.next().getName();
199
            fad = visibleAttrIter.next();
200
            colName = fad.getName();
170 201
            columnNames.add(colName);
171 202
            //If the column is added has to be visible
172
            if (!visibleColumnNames.contains(colName) && newColumns.contains(colName)) {
173
                // Add new columns
174
                visibleColumnNames.add(colName);
175
                visibleColumnNamesOriginal.add(colName);
203
            if (!visibleColumnNames.contains(colName)) {
204

  
205
                if (newColumns.contains(colName)) {
206
                    // Add new columns
207
                    visibleColumnNames.add(colName);
208
                    visibleColumnNamesOriginal.add(colName);
209
                }
210
                if (renamedColumnsNewName.contains(colName)) {
211
                    // Add new columns
212
                    insertWhereOldName(visibleColumnNames, colName, fad);
213
                    insertWhereOldName(visibleColumnNamesOriginal, colName, fad);
214
                }
176 215
            }
177 216
        }
178 217

  
......
188 227

  
189 228
    }
190 229

  
230
    private void insertWhereOldName(
231
        List<String> str_list,
232
        String str,
233
        FeatureAttributeDescriptor fad) {
234
        
235
        if (fad instanceof EditableFeatureAttributeDescriptor) {
236
            EditableFeatureAttributeDescriptor efad =
237
                (EditableFeatureAttributeDescriptor) fad;
238
            if (efad.getOriginalName() != null) {
239
                int old_ind = str_list.indexOf(efad.getOriginalName());
240
                if (old_ind != -1) {
241
                    // Insert before old name
242
                    str_list.add(old_ind, str);
243
                } else {
244
                    // Insert anyway (add)
245
                    str_list.add(str);
246
                }
247
            } else {
248
                // Insert anyway (add)
249
                str_list.add(str);
250
            }
251
        } else {
252
            // Insert anyway (add)
253
            str_list.add(str);
254
        }
255
    }
256

  
191 257
    /**
192 258
     * Sets the current visible columns list, in the original order.
193 259
     * 

Also available in: Unified diff