Revision 2616 org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.extendline/src/main/java/org/gvsig/vectorediting/lib/prov/extendline/ExtendLineEditingProvider.java

View differences:

ExtendLineEditingProvider.java
123 123
                        "geometry_to_extend_to", TYPE.POSITION);
124 124
    }
125 125

  
126
    @Override
126 127
    public EditingServiceParameter next() {
127 128
        if (values.get(selectionParameter) == null) {
128 129
            return selectionParameter;
......
218 219
        return operation.extendLine(curve, mousePosition, boundaryGeometry);
219 220
    }
220 221

  
222
    @Override
221 223
    public void stop() throws StopServiceException {
222 224
        values.clear();
223 225
    }
224 226

  
227
    @Override
225 228
    public List<EditingServiceParameter> getParameters() {
226 229
        List<EditingServiceParameter> parameters = new ArrayList<>();
227 230
        parameters.add(selectionParameter);
......
234 237
        validateAndInsertValue(parameter, value);
235 238
    }
236 239

  
240
    @Override
237 241
    public void setValue(Object value) throws InvalidEntryException {
238 242
        EditingServiceParameter parameter = next();
239 243
        validateAndInsertValue(parameter, value);
......
248 252
                FeatureSelection featureSelection = (FeatureSelection) value;
249 253
                if (featureSelection.getSelectedCount() > 0) {
250 254
                    try {
251
                        featureSelection.accept(new Visitor() {
252

  
253
                            public void visit(Object obj)
254
                                    throws VisitCanceledException, BaseException {
255
                                Feature feature = (Feature) obj;
256
                                Geometry geometry
257
                                        = feature.getDefaultGeometry();
258

  
259
                                if (!isValidGeometryToSelect(geometry)) {
260
                                    throw new InvalidEntryException(null);
261
                                }
255
                        featureSelection.accept((Object obj) -> {
256
                            Feature feature = (Feature) obj;
257
                            Geometry geometry
258
                                    = feature.getDefaultGeometry();
259
                            
260
                            if (!isValidGeometryToSelect(geometry)) {
261
                                throw new InvalidEntryException(null);
262 262
                            }
263 263
                        });
264 264
                        values.put(parameter, featureSelection);
......
295 295
        if (geoType.isTypeOf(CURVE)) {
296 296
            if (geometry instanceof Line ) {
297 297
                Line line = (Line) geometry;
298
                if (line.isClosed()) {
299
                    return false;
300
                }
301
                return true;
298
                return !line.isClosed();
302 299
            }
303 300
            if (geometry instanceof Arc ) {
304 301
                Arc arc = (Arc) geometry;
305
                if (arc.getInitPoint().equals(arc.getEndPoint())) {
306
                    return false;
307
                }
308
                return true;
302
                return !arc.getInitPoint().equals(arc.getEndPoint());
309 303
            }
310 304
            return false;
311 305
        }
......
346 340
        return this.featureStore.getFeatureSet(queryByGeometry);
347 341
    }
348 342

  
343
    @Override
349 344
    public Geometry finish() throws FinishServiceException {
350 345
        return null;
351 346
    }
352 347

  
348
    @Override
353 349
    public void finishAndStore() throws FinishServiceException {
354 350
        FeatureSelection selection = (FeatureSelection) values.get(selectionParameter);
355 351
        Geometry geometryToExtendTo = (Geometry) values.get(geometryToExtendToParameter);
356 352
        if (selection != null && geometryToExtendTo != null) {
357 353

  
358 354
            try {
359
                selection.accept(new Visitor() {
360
                    @Override
361
                    public void visit(Object obj) throws VisitCanceledException, BaseException {
362
                        Feature feature = (Feature) obj;
363
                        Geometry geometry = feature.getDefaultGeometry();
364
                        EditableFeature eFeature = feature.getEditable();
365

  
366
                        if (geometry instanceof MultiCurve) {
367

  
368
                            // Create new multicurve geometry
369
                            MultiCurve extendedMultiCurve
370
                                    = createMultiCurve(geometry);
371

  
372
                            // Iterate overs primitives and execute extend
373
                            // line operation
374
                            MultiCurve multiCurve = (MultiCurve) geometry;
375

  
376
                            for (int i = 0; i < multiCurve
377
                                    .getPrimitivesNumber(); i++) {
378

  
379
                                Curve curve = multiCurve.getCurveAt(i);
380
                                Curve extendedCurve
381
                                        = extendLine(insertedPoint, curve, geometryToExtendTo);
382
                                extendedMultiCurve.addCurve(extendedCurve);
383
                            }
384

  
385
                            eFeature.setDefaultGeometry(extendedMultiCurve);
386

  
387
                        } else if (geometry instanceof Curve) {
355
                selection.accept((Object obj) -> {
356
                    Feature feature = (Feature) obj;
357
                    Geometry geometry = feature.getDefaultGeometry();
358
                    EditableFeature eFeature = feature.getEditable();
359
                    
360
                    if (geometry instanceof MultiCurve) {
361
                        
362
                        // Create new multicurve geometry
363
                        MultiCurve extendedMultiCurve
364
                                = createMultiCurve(geometry);
365
                        
366
                        // Iterate overs primitives and execute extend
367
                        // line operation
368
                        MultiCurve multiCurve = (MultiCurve) geometry;
369
                        
370
                        for (int i = 0; i < multiCurve
371
                                .getPrimitivesNumber(); i++) {
372
                            
373
                            Curve curve = multiCurve.getCurveAt(i);
388 374
                            Curve extendedCurve
389
                                    = extendLine(insertedPoint, (Curve) geometry, geometryToExtendTo);
390
                            eFeature.setDefaultGeometry(extendedCurve);
375
                                    = extendLine(insertedPoint, curve, geometryToExtendTo);
376
                            extendedMultiCurve.addCurve(extendedCurve);
391 377
                        }
392

  
393
                        selection.update(eFeature);
378
                        
379
                        eFeature.setDefaultGeometry(extendedMultiCurve);
380
                        
381
                    } else if (geometry instanceof Curve) {
382
                        Curve extendedCurve
383
                                = extendLine(insertedPoint, (Curve) geometry, geometryToExtendTo);
384
                        eFeature.setDefaultGeometry(extendedCurve);
394 385
                    }
395 386

  
387
                    selection.update(eFeature);
396 388
                });
397 389

  
398 390
            } catch (BaseException e) {
......
416 408
        return extendedMultiCurve;
417 409
    }
418 410

  
411
    @Override
419 412
    public void start() throws StartServiceException, InvalidEntryException {
420 413
        this.values = new HashMap<>();
421 414
        FeatureSelection selected = null;
......
435 428
        }
436 429
    }
437 430

  
431
    @Override
438 432
    public String getName() {
439 433
        return ExtendLineEditingProviderFactory.PROVIDER_NAME;
440 434
    }

Also available in: Unified diff