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