Revision 2616 org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.duplicate/src/main/java/org/gvsig/vectorediting/lib/prov/duplicate/DuplicateEditingProvider.java

View differences:

DuplicateEditingProvider.java
29 29
import java.util.HashMap;
30 30
import java.util.List;
31 31
import java.util.Map;
32

  
33 32
import org.gvsig.fmap.dal.exception.DataException;
34 33
import org.gvsig.fmap.dal.feature.EditableFeature;
35 34
import org.gvsig.fmap.dal.feature.Feature;
......
52 51
import org.gvsig.fmap.mapcontext.rendering.symbols.ISymbol;
53 52
import org.gvsig.tools.ToolsLocator;
54 53
import org.gvsig.tools.dispose.DisposableIterator;
54
import org.gvsig.tools.dispose.DisposeUtils;
55 55
import org.gvsig.tools.dynobject.DynObject;
56 56
import org.gvsig.tools.exception.BaseException;
57 57
import org.gvsig.tools.service.spi.ProviderServices;
......
81 81
public class DuplicateEditingProvider extends AbstractEditingProvider implements
82 82
    EditingProvider {
83 83

  
84
    private EditingServiceParameter selection;
84
    private final EditingServiceParameter selection;
85 85

  
86
    private EditingServiceParameter firstPoint;
86
    private final EditingServiceParameter firstPoint;
87 87

  
88
    private EditingServiceParameter secondPoint;
88
    private final EditingServiceParameter secondPoint;
89 89

  
90
    private FeatureStore featureStore;
90
    private final FeatureStore featureStore;
91 91

  
92 92
    private Map<EditingServiceParameter, Object> values;
93 93

  
94 94
    /**
95 95
     * Default constructor.
96 96
     *
97
     * @param providerServices
97
     * @param services
98 98
     *            available services for this provider
99 99
     * @param parameters
100 100
     *            of this provider
......
120 120
                TYPE.POSITION);
121 121
    }
122 122

  
123
    @Override
123 124
    public EditingServiceParameter next() {
124 125
        if (values.get(selection) == null) {
125 126
            return selection;
......
131 132
        return null;
132 133
    }
133 134

  
135
    @Override
134 136
    public DrawingStatus getDrawingStatus(Point mousePosition)
135 137
        throws DrawServiceException {
136 138
        DefaultDrawingStatus drawingStatus = new DefaultDrawingStatus();
......
151 153
        ISymbol polygonSymbolEditing = editingProviderManager.getSymbol("polygon-symbol-editing");
152 154
        ISymbol auxiliaryPointSymbolEditing = editingProviderManager.getSymbol("auxiliary-point-symbol-editing");
153 155

  
156
        
154 157
        if (values != null) {
155 158

  
156 159
            FeatureSelection featureSelection =
......
173 176
                    it = featureSelection.fastIterator();
174 177
                    while (it.hasNext()) {
175 178
                        Feature feature = (Feature) it.next();
179
                        ISymbol previewSymbol = this.getPreviewSymbol(feature);
176 180

  
177 181
                        Geometry geometry =
178 182
                            feature.getDefaultGeometry().cloneGeometry();
......
193 197
                            int primitivesNumber = ((Aggregate)geometry).getPrimitivesNumber();
194 198
                            for (int i = 0; i < primitivesNumber; i++) {
195 199
                                drawingStatus.addStatus(((Aggregate)geometry).getPrimitiveAt(i), symbol, "");
200
                                drawingStatus.addStatus(((Aggregate)geometry).getPrimitiveAt(i), previewSymbol, "");
196 201
                            }
197 202
                        } else {
198 203
                            drawingStatus.addStatus(geometry, symbol, "");
204
                            drawingStatus.addStatus(geometry, previewSymbol, "");
199 205
                        }
200 206
//                        drawingStatus.addGeometry(geometry);
201 207
                    }
202 208
                } catch (BaseException e) {
203 209
                    throw new DrawServiceException(e);
204 210
                } finally {
205
                    it.dispose();
211
                    DisposeUtils.disposeQuietly(it);
206 212
                }
207 213
            }
208 214
        }
......
220 226
        return translate;
221 227
    }
222 228

  
229
    @Override
223 230
    public void stop() throws StopServiceException {
224 231
        if (values != null) {
225 232
            values.clear();
226 233
        }
227 234
    }
228 235

  
236
    @Override
229 237
    public List<EditingServiceParameter> getParameters() {
230 238
        List<EditingServiceParameter> parameters =
231
            new ArrayList<EditingServiceParameter>();
239
            new ArrayList<>();
232 240
        parameters.add(selection);
233 241
        parameters.add(firstPoint);
234 242
        parameters.add(secondPoint);
......
240 248
        validateAndInsertValue(parameter, value);
241 249
    }
242 250

  
251
    @Override
243 252
    public void setValue(Object value) throws InvalidEntryException {
244 253
        EditingServiceParameter parameter = next();
245 254
        validateAndInsertValue(parameter, value);
......
257 266
        } else if (parameter == firstPoint || parameter == secondPoint) {
258 267
            if (value instanceof Point) {
259 268
                values.put(parameter, value);
260
                return;
261 269
            }
262 270
        }
263 271
    }
264 272

  
273
    @Override
265 274
    public Geometry finish() throws FinishServiceException {
266 275
        return null;
267 276
    }
268 277

  
278
    @Override
269 279
    public void finishAndStore() throws FinishServiceException {
270 280
        if (values != null) {
271 281

  
......
277 287
            ToolsLocator.getDisposableManager().bind(featureSelection);
278 288

  
279 289
            try {
280
                featureSelection.accept(new Visitor() {
281

  
282
                    public void visit(Object obj)
283
                        throws VisitCanceledException, BaseException {
284
                        Feature feature = (Feature) obj;
285

  
286
                        EditingProviderServices editingProviderServices =
290
                featureSelection.accept((Object obj) -> {
291
                    Feature feature = (Feature) obj;
292
                    
293
                    EditingProviderServices editingProviderServices =
287 294
                            (EditingProviderServices) getProviderServices();
288

  
289
                        EditableFeature editable =
295
                    
296
                    EditableFeature editable =
290 297
                            editingProviderServices.getFeatureCopyWithoutUniqueIndex(
291
                                featureStore, feature);
292

  
293
                        Geometry geometry =
298
                                    featureStore, feature);
299
                    
300
                    Geometry geometry =
294 301
                            feature.getDefaultGeometry().cloneGeometry();
295
                        geometry.transform(getMoveAffineTransform(p1, p2));
296

  
297
                        editable.setDefaultGeometry(geometry);
298
                        editingProviderServices.insertFeatureIntoFeatureStore(
302
                    geometry.transform(getMoveAffineTransform(p1, p2));
303
                    
304
                    editable.setDefaultGeometry(geometry);
305
                    editingProviderServices.insertFeatureIntoFeatureStore(
299 306
                            editable, featureStore);
300
                    }
301 307
                });
302 308

  
303 309
                featureStore.getFeatureSelection().deselectAll();
......
309 315
        }
310 316
    }
311 317

  
318
    @Override
312 319
    public void start() throws StartServiceException, InvalidEntryException {
313
        values = new HashMap<EditingServiceParameter, Object>();
320
        values = new HashMap<>();
314 321
        FeatureSelection selected = null;
315 322
        if (featureStore != null) {
316 323
            try {
......
326 333
        }
327 334
    }
328 335

  
336
    @Override
329 337
    public String getName() {
330 338
        return DuplicateEditingProviderFactory.PROVIDER_NAME;
331 339
    }

Also available in: Unified diff