Revision 494

View differences:

org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.splitline/src/main/java/org/gvsig/vectorediting/lib/prov/splitline/SplitLineEditingProvider.java
341 341

  
342 342
                            MultiCurve multiCurve = (MultiCurve) lineToSplit;
343 343

  
344
                            multiCurve =
345
                                splitMultiCurve(multiCurve, projectedPoint);
344
                            List<Geometry> result = splitMultiCurve(multiCurve, projectedPoint);
346 345

  
347
                            if (multiCurve != null) {
348
                                // Copy alfanumeric data and insert new feature
349
                                EditableFeature eFeature =
350
                                    feature.getEditable();
351
                                eFeature.setDefaultGeometry(multiCurve);
352

  
346
                            if (result != null && result.size() > 0) {
347
                                
348
                                // Deletes old feature
353 349
                                editingProviderService
354
                                    .updateFeatureInFeatureStore(eFeature,
350
                                    .deleteFeatureFromFeatureStore(feature,
355 351
                                        featureStore);
352
                                
353
                                for (Geometry geometry : result) {
354
                                    // Copy alfanumeric data and insert new feature
355
                                    EditableFeature eFeature =
356
                                        editingProviderService.getFeatureCopyWithoutPK(
357
                                            featureStore, feature);
358
                                    
359
                                    eFeature.setDefaultGeometry(geometry);
360
                                    editingProviderService
361
                                        .insertFeatureIntoFeatureStore(eFeature,
362
                                            featureStore);
363
                                }
356 364
                            }
357 365
                        }
358 366
                    }
......
366 374
        }
367 375
    }
368 376

  
369
    private MultiCurve splitMultiCurve(MultiCurve multiCurveToSplit,
377
    private List<Geometry> splitMultiCurve(MultiCurve multiCurveToSplit,
370 378
        Point projectedPoint) throws GeometryOperationNotSupportedException,
371 379
        GeometryOperationException, CreateGeometryException, LocatorException,
372 380
        DataException {
373

  
381
        
382
        List<Geometry> result = new ArrayList<Geometry>();
383
        
374 384
        Curve curveToSplit = null;
375 385

  
376 386
        for (int i = 0; i < multiCurveToSplit.getPrimitivesNumber(); i++) {
......
381 391
        }
382 392

  
383 393
        Curve[] splitedCurves = splitCurve(curveToSplit, projectedPoint);
394
            
395
        for(int i = 0; i < splitedCurves.length; i++){
396
            result.add(splitedCurves[i]);
397
        }
384 398

  
385 399
        EditingProviderServices editingProviderService =
386 400
            (EditingProviderServices) getProviderServices();
......
390 404

  
391 405
        for (int i = 0; i < multiCurveToSplit.getPrimitivesNumber(); i++) {
392 406

  
393
            if (intersects(multiCurveToSplit.getCurveAt(i), projectedPoint)) {
394
                multiCurve.addCurve(splitedCurves[0]);
395
                multiCurve.addCurve(splitedCurves[1]);
396
            } else {
407
            if (!intersects(multiCurveToSplit.getCurveAt(i), projectedPoint)) {
397 408
                multiCurve.addCurve(multiCurveToSplit.getCurveAt(i));
398 409
            }
399 410
        }
400

  
401
        return multiCurve;
411
        
412
        result.add(multiCurve);
413
        
414
        return result;
402 415
    }
403 416

  
404 417
    private Curve[] splitCurve(Curve curveToSplit, Point projectedPoint)

Also available in: Unified diff