Revision 896

View differences:

org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.algorithm/org.gvsig.geoprocess.algorithm.base/src/main/java/org/gvsig/geoprocess/algorithm/base/core/DALFeaturePersister.java
193 193
		}
194 194

  
195 195
		if(newDalGeom != null && acceptType(store, newDalGeom)) {
196
            if(getShapeType(store)==org.gvsig.fmap.geom.Geometry.TYPES.POINT){
196
            org.gvsig.fmap.geom.Geometry multiGeometry = convertGeometry2MultiGeometry(newDalGeom);
197
            if(multiGeometry!=null && acceptType(store, multiGeometry)){
198
                feat.setGeometry("GEOMETRY", multiGeometry);
199
            } else {
197 200
                feat.setGeometry("GEOMETRY", newDalGeom);
198
            } else {
199
                feat.setGeometry("GEOMETRY", convertGeometry2MultiGeometry(newDalGeom));
200 201
            }
201 202
			store.insert(feat);
202 203
			return feat;
203 204
		} else if(dalGeomList != null) {
204 205
			for (int i = 0; i < dalGeomList.size(); i++) {
205 206
				if(acceptType(store, dalGeomList.get(i))) {
206
		            if(getShapeType(store)==org.gvsig.fmap.geom.Geometry.TYPES.POINT){
207
		            org.gvsig.fmap.geom.Geometry multiGeometry = convertGeometry2MultiGeometry(dalGeomList.get(i));
208
		            if(multiGeometry!=null && acceptType(store, multiGeometry)){
209
		                feat.setGeometry("GEOMETRY", multiGeometry);
210
		            } else {
207 211
		                feat.setGeometry("GEOMETRY", dalGeomList.get(i));
208
		            } else {
209
	                    feat.setGeometry("GEOMETRY", convertGeometry2MultiGeometry(dalGeomList.get(i)));
210 212
		            }
211 213
		            store.insert(feat);
212 214
				}
......
238 240
		}
239 241

  
240 242
		if(newDalGeom != null && acceptType(store, newDalGeom)) {
241
			feat.setGeometry("GEOMETRY", convertGeometry2MultiGeometry(newDalGeom));
243
	          org.gvsig.fmap.geom.Geometry multiGeometry = convertGeometry2MultiGeometry(newDalGeom);
244
	            if(multiGeometry!=null && acceptType(store, multiGeometry)){
245
	                feat.setGeometry("GEOMETRY", multiGeometry);
246
	            } else {
247
	                feat.setGeometry("GEOMETRY", newDalGeom);
248
	            }
242 249
			store.insert(feat);
243 250
			return feat;
244 251
		}
......
452 459
				}
453 460
			}
454 461

  
455
			org.gvsig.fmap.geom.Geometry geometry = newDalGeom;
462
			org.gvsig.fmap.geom.Geometry multiGeometry = null;
463
			try {
464
			    multiGeometry = convertGeometry2MultiGeometry(newDalGeom);
465
            } catch (CreateGeometryException e) {
466
                Sextante.addErrorToLog(e);
467
            }
456 468

  
457
			if(getShapeType(store)!=org.gvsig.fmap.geom.Geometry.TYPES.POINT){
458
			    try {
459
                    geometry = convertGeometry2MultiGeometry(newDalGeom);
460
                } catch (CreateGeometryException e) {
461
                    Sextante.addErrorToLog(e);
462
                }
469
			if(multiGeometry!=null && acceptType(store, multiGeometry)){
470
			    feat.setGeometry("GEOMETRY", multiGeometry);
471
			} else {
472
			    feat.setGeometry("GEOMETRY", newDalGeom);
463 473
			}
464
			feat.setGeometry("GEOMETRY", geometry);
465 474
			store.insert(feat);
466 475
			return feat;
467 476
		}
......
482 491
			EditableFeature feat = store.createNewFeature();
483 492
			feat.set(0, id);
484 493
			feat.set(1, value);
485
			feat.setGeometry("GEOMETRY", convertGeometry2MultiGeometry(newDalGeom));
494
	           org.gvsig.fmap.geom.Geometry multiGeometry = convertGeometry2MultiGeometry(newDalGeom);
495
               if(multiGeometry!=null && acceptType(store, multiGeometry)){
496
                   feat.setGeometry("GEOMETRY", multiGeometry);
497
               } else {
498
                   feat.setGeometry("GEOMETRY", newDalGeom);
499
               }
486 500
			store.insert(feat);
487 501
			return feat;
488 502
		}
......
521 535
		if(newDalGeom != null && acceptType(store, newDalGeom)) {
522 536
			EditableFeature feat = store.createNewFeature();
523 537
			feat.set(name, value);
524
			feat.setGeometry("GEOMETRY", convertGeometry2MultiGeometry(newDalGeom));
538
	           org.gvsig.fmap.geom.Geometry multiGeometry = convertGeometry2MultiGeometry(newDalGeom);
539
               if(multiGeometry!=null && acceptType(store, multiGeometry)){
540
                   feat.setGeometry("GEOMETRY", multiGeometry);
541
               } else {
542
                   feat.setGeometry("GEOMETRY", newDalGeom);
543
               }
525 544
			store.insert(feat);
526 545
			return feat;
527 546
		}
......
539 558
		if(newGeom != null && acceptType(store, newGeom)) {
540 559
			EditableFeature feat = store.createNewFeature();
541 560
			feat.set(name, value);
542
			feat.setGeometry("GEOMETRY", convertGeometry2MultiGeometry(newGeom));
561
	           org.gvsig.fmap.geom.Geometry multiGeometry = convertGeometry2MultiGeometry(newGeom);
562
               if(multiGeometry!=null && acceptType(store, multiGeometry)){
563
                   feat.setGeometry("GEOMETRY", multiGeometry);
564
               } else {
565
                   feat.setGeometry("GEOMETRY", newGeom);
566
               }
543 567
			store.insert(feat);
544 568
			return feat;
545 569
		}
......
559 583
			for (int i = 0; i < values.size(); i++) {
560 584
				feat.set(names.get(i), values.get(i));
561 585
			}
562
			feat.setGeometry("GEOMETRY", convertGeometry2MultiGeometry(newGeom));
586
	           org.gvsig.fmap.geom.Geometry multiGeometry = convertGeometry2MultiGeometry(newGeom);
587
               if(multiGeometry!=null && acceptType(store, multiGeometry)){
588
                   feat.setGeometry("GEOMETRY", multiGeometry);
589
               } else {
590
                   feat.setGeometry("GEOMETRY", newGeom);
591
               }
563 592
			store.insert(feat);
564 593
			return feat;
565 594
		}
......
581 610
			for (int i = 0; i < values.size(); i++) {
582 611
				feat.set(names.get(i), values.get(i));
583 612
			}
584
			feat.setGeometry("GEOMETRY", convertGeometry2MultiGeometry(newDalGeom));
613
	           org.gvsig.fmap.geom.Geometry multiGeometry = convertGeometry2MultiGeometry(newDalGeom);
614
               if(multiGeometry!=null && acceptType(store, multiGeometry)){
615
                   feat.setGeometry("GEOMETRY", multiGeometry);
616
               } else {
617
                   feat.setGeometry("GEOMETRY", newDalGeom);
618
               }
585 619
			store.insert(feat);
586 620
			return feat;
587 621
		}
......
603 637
			feat.set(0, id);
604 638
			feat.set(1, value1);
605 639
			feat.set(2, value2);
606
			feat.setGeometry("GEOMETRY", convertGeometry2MultiGeometry(newDalGeom));
640
	           org.gvsig.fmap.geom.Geometry multiGeometry = convertGeometry2MultiGeometry(newDalGeom);
641
               if(multiGeometry!=null && acceptType(store, multiGeometry)){
642
                   feat.setGeometry("GEOMETRY", multiGeometry);
643
               } else {
644
                   feat.setGeometry("GEOMETRY", newDalGeom);
645
               }
607 646
			store.insert(feat);
608 647
			return feat;
609 648
		}
......
636 675
			}
637 676

  
638 677
			//Sets the geometry
639
			feat.setGeometry(fieldNames.length, convertGeometry2MultiGeometry(newGeom));
678
			org.gvsig.fmap.geom.Geometry multiGeometry = convertGeometry2MultiGeometry(newGeom);
679
			if(multiGeometry!=null && acceptType(store, multiGeometry)){
680
			    feat.setGeometry("GEOMETRY", multiGeometry);
681
			} else {
682
			    feat.setGeometry("GEOMETRY", newGeom);
683
			}
640 684
			store.insert(feat);
641 685
			return feat;
642 686
		}
......
653 697
	public EditableFeature addFeature(Feature feature, org.gvsig.fmap.geom.Geometry newGeom) throws CreateGeometryException, DataException {
654 698
		if(acceptType(store, newGeom)) {
655 699
			EditableFeature feat = store.createNewFeature(store.getDefaultFeatureType(), feature);
656
			org.gvsig.fmap.geom.Geometry newMultiGeom = convertGeometry2MultiGeometry(newGeom);
657
			if (acceptType(store, newMultiGeom)){
658
				feat.setGeometry(fieldNames.length, newMultiGeom);
700
			org.gvsig.fmap.geom.Geometry multiGeometry = convertGeometry2MultiGeometry(newGeom);
701
			if (multiGeometry!=null && acceptType(store, multiGeometry)){
702
				feat.setGeometry(fieldNames.length, multiGeometry);
659 703
			} else {
660 704
				feat.setGeometry(fieldNames.length, newGeom);
661 705
			}

Also available in: Unified diff