Revision 3067 org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.stretch/src/main/java/org/gvsig/vectorediting/lib/prov/stretch/StretchEditingProvider.java

View differences:

StretchEditingProvider.java
5 5

  
6 6
import java.awt.geom.AffineTransform;
7 7
import java.util.ArrayList;
8
import java.util.Collections;
8 9
import java.util.HashMap;
9 10
import java.util.Iterator;
10 11
import java.util.List;
11 12
import java.util.Map;
13
import org.apache.commons.collections4.CollectionUtils;
12 14
import org.gvsig.fmap.dal.exception.DataException;
13 15
import org.gvsig.fmap.dal.feature.EditableFeature;
14 16
import org.gvsig.fmap.dal.feature.Feature;
......
58 60
import org.slf4j.Logger;
59 61
import org.slf4j.LoggerFactory;
60 62

  
63
@SuppressWarnings("UseSpecificCatch")
61 64
public class StretchEditingProvider extends AbstractEditingProvider implements
62 65
    EditingProvider {
63 66

  
......
75 78

  
76 79
    private final FeatureStore featureStore;
77 80

  
81
    private List<Feature> selectedFeatures;
82
    
78 83
    public StretchEditingProvider(ProviderServices providerServices,
79 84
        DynObject parameters) {
80 85
        super(providerServices);
......
118 123
        if (param == selectionParameter) {
119 124
            if (value instanceof FeatureSelection) {
120 125
                values.put(param, value);
126
                this.selectedFeatures = this.getSelectedFeaturesCopy((FeatureSelection)value);
121 127
            }
122 128
        } else if (param == firstPointParameter) {
123 129
            if (value instanceof Point) {
......
248 254
        FeatureSelection selection =
249 255
            (FeatureSelection) values.get(this.selectionParameter);
250 256
        try {
251
            if ((selection != null) && !selection.isEmpty()) {
257
            if ( CollectionUtils.isNotEmpty(selectedFeatures) ) {
252 258
                Geometry geometry = (Geometry) values.get(this.geometryParameter);
253 259
                if (geometry != null) {
254 260
                    //
255 261
                    List<Point> selectedVertex = new ArrayList<>();
256
                    DisposableIterator it = null;
257

  
258 262
                    try {
259
                        it = selection.fastIterator();
260

  
261
                        while (it.hasNext()) {
262
                            Feature feature = (Feature) it.next();
263
                        for (Feature feature : selectedFeatures) {
263 264
                            Geometry featureGeometry = feature.getDefaultGeometry();
264 265
                            List<Point> vertex = getSelectedVertex(featureGeometry, geometry);
265 266
                            if(vertex != null){
......
268 269
                        }
269 270
                    } catch (BaseException e) {
270 271
                        throw new InvalidEntryException(e);
271
                    } finally {
272
                        DisposeUtils.disposeQuietly(it);
273 272
                    }
274 273

  
275 274
                    if(!selectedVertex.isEmpty()){
......
290 289
                            }
291 290
                        }
292 291

  
293
                        it = null;
294 292
                        try {
295
                            it = selection.fastIterator();
296

  
297
                            while (it.hasNext()) {
298
                                Feature feature = (Feature) it.next();
299

  
293
                            for (Feature feature : selectedFeatures) {
300 294
                                ISymbol previewSymbol = this.getPreviewSymbol(feature);
301 295
        
302 296
                                Geometry featureGeometry = feature.getDefaultGeometry();
......
322 316
                            }
323 317
                        } catch (BaseException e) {
324 318
                            throw new InvalidEntryException(e);
325
                        } finally {
326
                            DisposeUtils.disposeQuietly(it);
327 319
                        }
328 320
                    }
329 321
                }
......
347 339
    @Override
348 340
    public void stop() {
349 341
        values.clear();
342
        this.selectedFeatures = Collections.EMPTY_LIST;
350 343
    }
351 344

  
352 345

  
......
369 362
                = (FeatureSelection) values.get(selectionParameter);
370 363

  
371 364
        try {
372
            if ((selection != null) && !selection.isEmpty()) {
365
            if ( CollectionUtils.isNotEmpty(selectedFeatures) ) {
373 366
                Geometry geometry = (Geometry) values.get(this.geometryParameter);
374 367
                if (geometry != null) {
375 368
                    Point firstPoint
......
381 374
                            AffineTransform at
382 375
                                    = getMoveAffineTransform(firstPoint, secondPoint);
383 376

  
384
                            DisposableIterator it = null;
385

  
386 377
                            try {
387
                                it = selection.fastIterator();
388

  
389
                                while (it.hasNext()) {
390
                                    Feature feature = (Feature) it.next();
378
                                for (Feature feature : selectedFeatures) {
391 379
                                    Geometry featureGeometry
392 380
                                            = feature.getDefaultGeometry();
393 381

  
......
404 392
                                }
405 393
                            } catch (BaseException e) {
406 394
                                throw new FinishServiceException(e);
407
                            } finally {
408
                                DisposeUtils.disposeQuietly(it);
409 395
                            }
410 396
                        }
411 397
                    }
......
424 410
    @Override
425 411
    public void start() throws StartServiceException {
426 412
        this.values = new HashMap<>();
427
        FeatureSelection selected = null;
413
        this.selectedFeatures = Collections.EMPTY_LIST;
414

  
428 415
        if (featureStore != null) {
416
            FeatureSelection selected = null;
429 417
            try {
430
                selected =
431
                    (FeatureSelection) featureStore.getFeatureSelection()
432
                        .clone();
418
                selected = (FeatureSelection) featureStore.getFeatureSelection().clone();
433 419
            } catch (DataException e) {
434 420
                throw new StartServiceException(e);
435
            } catch (CloneNotSupportedException e) {
436
                // Do nothing
421
            } catch (CloneNotSupportedException ex) {
422
                LOGGER.debug("Can't init selection",ex);
437 423
            }
438 424
            if ((selected != null) && (selected.getSelectedCount() > 0)) {
439 425
                values.put(selectionParameter, selected);
426
                this.selectedFeatures = this.getSelectedFeaturesCopy(selected);
440 427
            }
441 428
        }
442 429
    }

Also available in: Unified diff