Revision 10207

View differences:

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