Revision 68
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