Revision 10207
trunk/libraries/libFMap/src/com/iver/cit/gvsig/fmap/edition/EditableAdapter.java | ||
---|---|---|
138 | 138 |
|
139 | 139 |
protected boolean isFullExtentDirty = false; |
140 | 140 |
|
141 |
private ArrayList events=new ArrayList(); |
|
142 |
|
|
141 | 143 |
/** |
142 | 144 |
* Crea un nuevo EditableAdapter. |
143 | 145 |
*/ |
... | ... | |
349 | 351 |
{ |
350 | 352 |
for (int i = 0; i < rowCount; i++) { |
351 | 353 |
IRowEdited rowEdited = getRow(i); |
352 |
|
|
354 |
|
|
353 | 355 |
if (rowEdited != null) { |
354 | 356 |
writer.process(rowEdited); |
355 | 357 |
} |
... | ... | |
495 | 497 |
throws DriverIOException, IOException { |
496 | 498 |
|
497 | 499 |
try { |
498 |
validateRow(row); |
|
500 |
validateRow(row,sourceType);
|
|
499 | 501 |
} catch (EditionException e) { |
500 | 502 |
e.printStackTrace(); |
501 | 503 |
throw new IOException(e.getMessage()); |
... | ... | |
575 | 577 |
throws IOException, DriverIOException { |
576 | 578 |
|
577 | 579 |
try { |
578 |
validateRow(row); |
|
580 |
validateRow(row,sourceType);
|
|
579 | 581 |
} catch (EditionException e) { |
580 | 582 |
e.printStackTrace(); |
581 | 583 |
throw new IOException(e.getMessage()); |
... | ... | |
623 | 625 |
commands.setDescription(description); |
624 | 626 |
cr.pushCommand(commands); |
625 | 627 |
complex = false; |
628 |
for (int i = 0; i < events.size(); i++) { |
|
629 |
IEditionListener listener = (IEditionListener) editionListeners |
|
630 |
.get(i); |
|
631 |
listener.afterFieldEditEvent((AfterFieldEditEvent)events.get(i)); |
|
632 |
} |
|
633 |
events.clear(); |
|
626 | 634 |
} |
627 | 635 |
|
628 | 636 |
/** |
... | ... | |
730 | 738 |
|
731 | 739 |
int pos = -1; |
732 | 740 |
Integer integer = new Integer(index); |
733 |
System.err.println("Modifica una Row en la posici?n: " + index); |
|
741 |
// System.err.println("Modifica una Row en la posici?n: " + index);
|
|
734 | 742 |
// Si la geometr?a no ha sido modificada |
735 | 743 |
if (!relations.containsKey(integer)) { |
736 | 744 |
int expansionIndex = expansionFile.addRow(feat, |
... | ... | |
869 | 877 |
return ods; |
870 | 878 |
} |
871 | 879 |
} |
872 |
|
|
880 |
|
|
873 | 881 |
/** |
874 | 882 |
* Return always the original recordset (even when is editing, |
875 | 883 |
* nor the getRecorset() method) |
876 |
*
|
|
884 |
* |
|
877 | 885 |
* */ |
878 | 886 |
public SelectableDataSource getOriginalRecordset(){ |
879 | 887 |
return ods; |
... | ... | |
1170 | 1178 |
protected void fireAfterRemoveRow(int index, int sourceType) { |
1171 | 1179 |
AfterRowEditEvent event = new AfterRowEditEvent(this, index, |
1172 | 1180 |
EditionEvent.CHANGE_TYPE_DELETE, sourceType); |
1181 |
if (complex) { |
|
1182 |
events.add(event); |
|
1183 |
return; |
|
1184 |
} |
|
1173 | 1185 |
for (int i = 0; i < editionListeners.size(); i++) { |
1174 | 1186 |
IEditionListener listener = (IEditionListener) editionListeners |
1175 | 1187 |
.get(i); |
... | ... | |
1195 | 1207 |
protected void fireAfterRowAdded(IRow feat,int calculatedIndex, int sourceType) { |
1196 | 1208 |
AfterRowEditEvent event = new AfterRowEditEvent(this, calculatedIndex, |
1197 | 1209 |
EditionEvent.CHANGE_TYPE_ADD, sourceType); |
1210 |
if (complex) { |
|
1211 |
events.add(event); |
|
1212 |
return; |
|
1213 |
} |
|
1198 | 1214 |
for (int i = 0; i < editionListeners.size(); i++) { |
1199 | 1215 |
IEditionListener listener = (IEditionListener) editionListeners |
1200 | 1216 |
.get(i); |
... | ... | |
1205 | 1221 |
protected void fireAfterFieldAdded(FieldDescription field) { |
1206 | 1222 |
AfterFieldEditEvent event = new AfterFieldEditEvent(this,field, |
1207 | 1223 |
EditionEvent.CHANGE_TYPE_ADD); |
1224 |
if (complex) { |
|
1225 |
events.add(event); |
|
1226 |
return; |
|
1227 |
} |
|
1208 | 1228 |
for (int i = 0; i < editionListeners.size(); i++) { |
1209 | 1229 |
IEditionListener listener = (IEditionListener) editionListeners |
1210 | 1230 |
.get(i); |
1211 | 1231 |
listener.afterFieldEditEvent(event); |
1232 |
|
|
1212 | 1233 |
} |
1213 | 1234 |
} |
1214 | 1235 |
|
1215 | 1236 |
protected void fireAfterFieldRemoved(FieldDescription field) { |
1216 | 1237 |
AfterFieldEditEvent event = new AfterFieldEditEvent(this,field, |
1217 | 1238 |
EditionEvent.CHANGE_TYPE_DELETE); |
1239 |
if (complex) { |
|
1240 |
events.add(event); |
|
1241 |
return; |
|
1242 |
} |
|
1218 | 1243 |
for (int i = 0; i < editionListeners.size(); i++) { |
1219 | 1244 |
IEditionListener listener = (IEditionListener) editionListeners |
1220 | 1245 |
.get(i); |
... | ... | |
1225 | 1250 |
protected void fireAfterFieldModified(FieldDescription field) { |
1226 | 1251 |
AfterFieldEditEvent event = new AfterFieldEditEvent(this,field, |
1227 | 1252 |
EditionEvent.CHANGE_TYPE_MODIFY); |
1253 |
if (complex) { |
|
1254 |
events.add(event); |
|
1255 |
return; |
|
1256 |
} |
|
1228 | 1257 |
for (int i = 0; i < editionListeners.size(); i++) { |
1229 | 1258 |
IEditionListener listener = (IEditionListener) editionListeners |
1230 | 1259 |
.get(i); |
... | ... | |
1294 | 1323 |
} |
1295 | 1324 |
|
1296 | 1325 |
protected void fireAfterModifyRow(int index, int sourceType) { |
1326 |
if (complex) |
|
1327 |
return; |
|
1297 | 1328 |
AfterRowEditEvent event = new AfterRowEditEvent(this, index, |
1298 | 1329 |
EditionEvent.CHANGE_TYPE_MODIFY, sourceType); |
1299 | 1330 |
for (int i = 0; i < editionListeners.size(); i++) { |
... | ... | |
1360 | 1391 |
* contenga el nombre de la tabla (y por tanto requiere |
1361 | 1392 |
* DBLayerDefinition-en realidad hace falta DBTableDefinition) |
1362 | 1393 |
* TODO REVISAR LA ARQUITECTURA DE ESTO |
1363 |
*
|
|
1394 |
* |
|
1364 | 1395 |
* */ |
1365 | 1396 |
public ITableDefinition getTableDefinition() throws DriverLoadException, |
1366 | 1397 |
DriverException { |
... | ... | |
1373 | 1404 |
}else{ |
1374 | 1405 |
AlphanumericDBDriver dbDriver = (AlphanumericDBDriver)originalDriver; |
1375 | 1406 |
return dbDriver.getTableDefinition(); |
1376 |
|
|
1407 |
|
|
1377 | 1408 |
} |
1378 |
|
|
1379 |
|
|
1409 |
|
|
1410 |
|
|
1380 | 1411 |
} |
1381 | 1412 |
|
1382 |
public void validateRow(IRow row) throws EditionException { |
|
1413 |
public void validateRow(IRow row,int sourceType) throws EditionException {
|
|
1383 | 1414 |
for (int i = 0; i < rules.size(); i++) { |
1384 | 1415 |
IRule rule = (IRule) rules.get(i); |
1385 |
boolean bAux = rule.validate(row); |
|
1416 |
boolean bAux = rule.validate(row,sourceType);
|
|
1386 | 1417 |
if (bAux == false) { |
1387 | 1418 |
EditionException ex = new EditionException( |
1388 | 1419 |
"NOT follow the rule: " + rule.getDescription()); |
Also available in: Unified diff