Revision 10450 branches/simbologia/libraries/libFMap/src/com/iver/cit/gvsig/fmap/edition/EditableAdapter.java

View differences:

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