Revision 10450 branches/simbologia/libraries/libFMap/src/com/iver/cit/gvsig/fmap/edition/EditableAdapter.java
EditableAdapter.java | ||
---|---|---|
143 | 143 |
|
144 | 144 |
protected boolean isFullExtentDirty = false; |
145 | 145 |
|
146 |
private ArrayList fieldEvents=new ArrayList(); |
|
147 |
private ArrayList rowEvents=new ArrayList(); |
|
148 |
|
|
146 | 149 |
/** |
147 | 150 |
* Crea un nuevo EditableAdapter. |
148 | 151 |
*/ |
... | ... | |
354 | 357 |
{ |
355 | 358 |
for (int i = 0; i < rowCount; i++) { |
356 | 359 |
IRowEdited rowEdited = getRow(i); |
357 |
|
|
360 |
|
|
358 | 361 |
if (rowEdited != null) { |
359 | 362 |
writer.process(rowEdited); |
360 | 363 |
} |
... | ... | |
500 | 503 |
throws DriverIOException, IOException { |
501 | 504 |
|
502 | 505 |
try { |
503 |
validateRow(row); |
|
506 |
validateRow(row,sourceType);
|
|
504 | 507 |
} catch (EditionException e) { |
505 | 508 |
e.printStackTrace(); |
506 | 509 |
throw new IOException(e.getMessage()); |
... | ... | |
580 | 583 |
throws IOException, DriverIOException { |
581 | 584 |
|
582 | 585 |
try { |
583 |
validateRow(row); |
|
586 |
validateRow(row,sourceType);
|
|
584 | 587 |
} catch (EditionException e) { |
585 | 588 |
e.printStackTrace(); |
586 | 589 |
throw new IOException(e.getMessage()); |
... | ... | |
628 | 631 |
commands.setDescription(description); |
629 | 632 |
cr.pushCommand(commands); |
630 | 633 |
complex = false; |
634 |
for (int j = 0; j < editionListeners.size(); j++) { |
|
635 |
for (int i = 0; i < fieldEvents.size(); i++) { |
|
636 |
IEditionListener listener = (IEditionListener) editionListeners |
|
637 |
.get(j); |
|
638 |
listener.afterFieldEditEvent((AfterFieldEditEvent)fieldEvents.get(i)); |
|
639 |
} |
|
640 |
for (int i = 0; i < rowEvents.size(); i++) { |
|
641 |
IEditionListener listener = (IEditionListener) editionListeners |
|
642 |
.get(j); |
|
643 |
listener.afterRowEditEvent(null,(AfterRowEditEvent)rowEvents.get(i)); |
|
644 |
} |
|
645 |
} |
|
646 |
fieldEvents.clear(); |
|
647 |
rowEvents.clear(); |
|
631 | 648 |
} |
632 | 649 |
|
633 | 650 |
/** |
... | ... | |
678 | 695 |
relations.put(new Integer(geometryIndex), new Integer( |
679 | 696 |
previousExpansionFileIndex)); |
680 | 697 |
} |
681 |
fireAfterModifyRow(geometryIndex, sourceType); |
|
698 |
//fireAfterModifyRow(geometryIndex, sourceType);
|
|
682 | 699 |
} |
683 | 700 |
|
684 | 701 |
/** |
... | ... | |
735 | 752 |
|
736 | 753 |
int pos = -1; |
737 | 754 |
Integer integer = new Integer(index); |
738 |
System.err.println("Modifica una Row en la posici?n: " + index); |
|
755 |
// System.err.println("Modifica una Row en la posici?n: " + index);
|
|
739 | 756 |
// Si la geometr?a no ha sido modificada |
740 | 757 |
if (!relations.containsKey(integer)) { |
741 | 758 |
int expansionIndex = expansionFile.addRow(feat, |
... | ... | |
760 | 777 |
relations.put(integer, new Integer(num)); |
761 | 778 |
} |
762 | 779 |
isFullExtentDirty = true; |
763 |
fireAfterModifyRow(index, sourceType); |
|
780 |
//fireAfterModifyRow(index, sourceType);
|
|
764 | 781 |
return pos; |
765 | 782 |
} |
766 | 783 |
|
... | ... | |
874 | 891 |
return ods; |
875 | 892 |
} |
876 | 893 |
} |
877 |
|
|
894 |
|
|
878 | 895 |
/** |
879 | 896 |
* Return always the original recordset (even when is editing, |
880 | 897 |
* nor the getRecorset() method) |
881 |
*
|
|
898 |
* |
|
882 | 899 |
* */ |
883 | 900 |
public SelectableDataSource getOriginalRecordset(){ |
884 | 901 |
return ods; |
... | ... | |
1175 | 1192 |
protected void fireAfterRemoveRow(int index, int sourceType) { |
1176 | 1193 |
AfterRowEditEvent event = new AfterRowEditEvent(this, index, |
1177 | 1194 |
EditionEvent.CHANGE_TYPE_DELETE, sourceType); |
1195 |
if (complex){ |
|
1196 |
rowEvents.add(event); |
|
1197 |
return; |
|
1198 |
} |
|
1178 | 1199 |
for (int i = 0; i < editionListeners.size(); i++) { |
1179 | 1200 |
IEditionListener listener = (IEditionListener) editionListeners |
1180 | 1201 |
.get(i); |
... | ... | |
1200 | 1221 |
protected void fireAfterRowAdded(IRow feat,int calculatedIndex, int sourceType) { |
1201 | 1222 |
AfterRowEditEvent event = new AfterRowEditEvent(this, calculatedIndex, |
1202 | 1223 |
EditionEvent.CHANGE_TYPE_ADD, sourceType); |
1224 |
if (complex){ |
|
1225 |
rowEvents.add(event); |
|
1226 |
return; |
|
1227 |
} |
|
1203 | 1228 |
for (int i = 0; i < editionListeners.size(); i++) { |
1204 | 1229 |
IEditionListener listener = (IEditionListener) editionListeners |
1205 | 1230 |
.get(i); |
... | ... | |
1210 | 1235 |
protected void fireAfterFieldAdded(FieldDescription field) { |
1211 | 1236 |
AfterFieldEditEvent event = new AfterFieldEditEvent(this,field, |
1212 | 1237 |
EditionEvent.CHANGE_TYPE_ADD); |
1238 |
if (complex) { |
|
1239 |
fieldEvents.add(event); |
|
1240 |
return; |
|
1241 |
} |
|
1213 | 1242 |
for (int i = 0; i < editionListeners.size(); i++) { |
1214 | 1243 |
IEditionListener listener = (IEditionListener) editionListeners |
1215 | 1244 |
.get(i); |
1216 | 1245 |
listener.afterFieldEditEvent(event); |
1246 |
|
|
1217 | 1247 |
} |
1218 | 1248 |
} |
1219 | 1249 |
|
1220 | 1250 |
protected void fireAfterFieldRemoved(FieldDescription field) { |
1221 | 1251 |
AfterFieldEditEvent event = new AfterFieldEditEvent(this,field, |
1222 | 1252 |
EditionEvent.CHANGE_TYPE_DELETE); |
1253 |
if (complex) { |
|
1254 |
fieldEvents.add(event); |
|
1255 |
return; |
|
1256 |
} |
|
1223 | 1257 |
for (int i = 0; i < editionListeners.size(); i++) { |
1224 | 1258 |
IEditionListener listener = (IEditionListener) editionListeners |
1225 | 1259 |
.get(i); |
... | ... | |
1230 | 1264 |
protected void fireAfterFieldModified(FieldDescription field) { |
1231 | 1265 |
AfterFieldEditEvent event = new AfterFieldEditEvent(this,field, |
1232 | 1266 |
EditionEvent.CHANGE_TYPE_MODIFY); |
1267 |
if (complex) { |
|
1268 |
fieldEvents.add(event); |
|
1269 |
return; |
|
1270 |
} |
|
1233 | 1271 |
for (int i = 0; i < editionListeners.size(); i++) { |
1234 | 1272 |
IEditionListener listener = (IEditionListener) editionListeners |
1235 | 1273 |
.get(i); |
... | ... | |
1301 | 1339 |
protected void fireAfterModifyRow(int index, int sourceType) { |
1302 | 1340 |
AfterRowEditEvent event = new AfterRowEditEvent(this, index, |
1303 | 1341 |
EditionEvent.CHANGE_TYPE_MODIFY, sourceType); |
1342 |
if (complex){ |
|
1343 |
rowEvents.add(event); |
|
1344 |
return; |
|
1345 |
} |
|
1304 | 1346 |
for (int i = 0; i < editionListeners.size(); i++) { |
1305 | 1347 |
IEditionListener listener = (IEditionListener) editionListeners |
1306 | 1348 |
.get(i); |
... | ... | |
1373 | 1415 |
* contenga el nombre de la tabla (y por tanto requiere |
1374 | 1416 |
* DBLayerDefinition-en realidad hace falta DBTableDefinition) |
1375 | 1417 |
* TODO REVISAR LA ARQUITECTURA DE ESTO |
1376 |
*
|
|
1418 |
* |
|
1377 | 1419 |
* */ |
1378 | 1420 |
public ITableDefinition getTableDefinition() throws DriverLoadException, |
1379 | 1421 |
DriverException { |
... | ... | |
1386 | 1428 |
}else{ |
1387 | 1429 |
AlphanumericDBDriver dbDriver = (AlphanumericDBDriver)originalDriver; |
1388 | 1430 |
return dbDriver.getTableDefinition(); |
1389 |
|
|
1431 |
|
|
1390 | 1432 |
} |
1391 |
|
|
1392 |
|
|
1433 |
|
|
1434 |
|
|
1393 | 1435 |
} |
1394 | 1436 |
|
1395 |
public void validateRow(IRow row) throws EditionException { |
|
1437 |
public void validateRow(IRow row,int sourceType) throws EditionException {
|
|
1396 | 1438 |
for (int i = 0; i < rules.size(); i++) { |
1397 | 1439 |
IRule rule = (IRule) rules.get(i); |
1398 |
boolean bAux = rule.validate(row); |
|
1440 |
boolean bAux = rule.validate(row,sourceType);
|
|
1399 | 1441 |
if (bAux == false) { |
1400 | 1442 |
EditionException ex = new EditionException( |
1401 | 1443 |
"NOT follow the rule: " + rule.getDescription()); |
Also available in: Unified diff