Revision 68

View differences:

org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.spi/src/main/java/org/gvsig/vectorediting/lib/spi/EditingProviderServices.java
180 180
	public GeometryType getGeomType(FeatureStore featureStore)
181 181
			throws DataException;
182 182

  
183
	/**
184
	 * Return a copy of a feature without primary keys data
185
	 *
186
	 * @return the copy of a feature without primary keys data
187
	 * @throws DataException
188
	 */
189
	public EditableFeature getFeatureCopyWithoutPK(FeatureStore featureStore, Feature feature) throws DataException;
190

  
183 191
}
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.impl/src/main/java/org/gvsig/vectorediting/lib/impl/DefaultEditingProviderServices.java
7 7
package org.gvsig.vectorediting.lib.impl;
8 8

  
9 9
import java.awt.geom.Point2D;
10
import java.util.Iterator;
10 11

  
11 12
import org.gvsig.andami.messages.NotificationManager;
12 13
import org.gvsig.editing.EditingNotification;
......
14 15
import org.gvsig.fmap.dal.exception.DataException;
15 16
import org.gvsig.fmap.dal.feature.EditableFeature;
16 17
import org.gvsig.fmap.dal.feature.Feature;
18
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
17 19
import org.gvsig.fmap.dal.feature.FeatureStore;
20
import org.gvsig.fmap.dal.feature.FeatureType;
18 21
import org.gvsig.fmap.geom.Geometry;
19 22
import org.gvsig.fmap.geom.Geometry.SUBTYPES;
20 23
import org.gvsig.fmap.geom.Geometry.TYPES;
......
266 269
        .getGeomType();
267 270
	}
268 271

  
272
	public EditableFeature getFeatureCopyWithoutPK(FeatureStore featureStore, Feature feature)
273
			throws DataException {
274
		EditableFeature editableFeature = featureStore.createNewFeature(
275
				feature.getType(), true);
276

  
277
		FeatureType type_src = feature.getType();
278
		@SuppressWarnings("rawtypes")
279
		Iterator iterator = type_src.iterator();
280
		FeatureType type_dest = editableFeature.getType();
281

  
282
		while (iterator.hasNext()) {
283
			FeatureAttributeDescriptor attribute_src = (FeatureAttributeDescriptor) iterator
284
					.next();
285

  
286
			FeatureAttributeDescriptor attribute_dest = type_dest
287
					.getAttributeDescriptor(attribute_src.getName());
288
			if (attribute_dest != null) {
289
				if (!attribute_dest.isPrimaryKey()) {
290
					editableFeature.set(attribute_dest.getIndex(),
291
							feature.get(attribute_src.getIndex()));
292
				}
293
			}
294
		}
295
		return editableFeature;
296
	}
297

  
298

  
269 299
}
org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.symmetry/src/main/java/org/gvsig/vectorediting/lib/prov/symmetry/SymmetryEditingProvider.java
33 33
import org.gvsig.tools.i18n.I18nManager;
34 34
import org.gvsig.tools.service.spi.ProviderServices;
35 35
import org.gvsig.vectorediting.lib.api.DrawingStatus;
36
import org.gvsig.vectorediting.lib.api.EditingLocator;
36 37
import org.gvsig.vectorediting.lib.api.EditingServiceParameter;
37 38
import org.gvsig.vectorediting.lib.api.EditingServiceParameter.TYPE;
38 39
import org.gvsig.vectorediting.lib.api.exceptions.DrawServiceException;
......
44 45
import org.gvsig.vectorediting.lib.spi.DefaultEditingServiceParameter;
45 46
import org.gvsig.vectorediting.lib.spi.EditingProvider;
46 47
import org.gvsig.vectorediting.lib.spi.EditingProviderFactory;
48
import org.gvsig.vectorediting.lib.spi.EditingProviderLocator;
47 49
import org.gvsig.vectorediting.lib.spi.EditingProviderServices;
48 50

  
49 51
public class SymmetryEditingProvider extends AbstractEditingProvider implements EditingProvider {
......
81 83

  
82 84
	private FeatureStore featureStore;
83 85

  
86
	EditingProviderServices editingProviderServices = (EditingProviderServices) getProviderServices();
87

  
84 88
	public SymmetryEditingProvider(ProviderServices providerServices,
85 89
			DynObject parameters) {
86 90
		super(providerServices);
......
265 269
					it = selected.fastIterator();
266 270

  
267 271
					while (it.hasNext()) {
268
						Feature feat = (Feature) it.next();
269
						Geometry geom = (Geometry) feat.getDefaultGeometry()
272
						Feature feature = (Feature) it.next();
273
						Geometry geom = (Geometry) feature.getDefaultGeometry()
270 274
								.cloneGeometry();
271 275
						geom.transform(at);
272 276
						if (this.deleteOriginalGeometries) {
273 277
							// Se sustituye la geometr?a original por la
274 278
							// calculada
275
							EditableFeature editableFeature = feat
279
							EditableFeature editableFeature = feature
276 280
									.getEditable();
277 281
							editableFeature.setDefaultGeometry(geom);
278 282
							((EditingProviderServices) getProviderServices())
......
281 285
						} else {
282 286
							// Se crea una feature nueva copiando los valores de
283 287
							// la feature original excepto aquellos que sean PK
284
							EditableFeature editableFeature = getFeatureCopyWithoutPK(feat);
288
							EditableFeature editableFeature = editingProviderServices.getFeatureCopyWithoutPK(featureStore, feature);
285 289
							editableFeature.setDefaultGeometry(geom);
286 290
							((EditingProviderServices) getProviderServices())
287 291
									.insertFeatureIntoFeatureStore(
......
297 301
		}
298 302
	}
299 303

  
300
	private EditableFeature getFeatureCopyWithoutPK(Feature feat)
301
			throws DataException {
302
		EditableFeature editableFeature = featureStore.createNewFeature(
303
				feat.getType(), true);
304

  
305
		FeatureType type_src = feat.getType();
306
		@SuppressWarnings("rawtypes")
307
		Iterator iterator = type_src.iterator();
308
		FeatureType type_dest = editableFeature.getType();
309

  
310
		while (iterator.hasNext()) {
311
			FeatureAttributeDescriptor attribute_src = (FeatureAttributeDescriptor) iterator
312
					.next();
313

  
314
			FeatureAttributeDescriptor attribute_dest = type_dest
315
					.getAttributeDescriptor(attribute_src.getName());
316
			if (attribute_dest != null) {
317
				if (!attribute_dest.isPrimaryKey()) {
318
					editableFeature.set(attribute_dest.getIndex(),
319
							feat.get(attribute_src.getIndex()));
320
				}
321
			}
322
		}
323
		return editableFeature;
324
	}
325

  
326 304
	public void start() throws StartServiceException {
327 305
		this.values = new HashMap<EditingServiceParameter, Object>();
328 306
		FeatureSelection selected = null;

Also available in: Unified diff