gvsig-vectorediting / org.gvsig.vectorediting / trunk / org.gvsig.vectorediting / org.gvsig.vectorediting.lib / org.gvsig.vectorediting.lib.prov / org.gvsig.vectorediting.lib.prov.circlecr / src / main / java / org / gvsig / vectorediting / lib / prov / circlecr / CircumferenceCREditingProvider.java @ 94
History | View | Annotate | Download (2.6 KB)
1 |
/*
|
---|---|
2 |
* Copyright 2014 DiSiD Technologies S.L.L. All rights reserved.
|
3 |
*
|
4 |
* Project : DiSiD org.gvsig.vectorediting.lib.prov.circle2P
|
5 |
* SVN Id : $Id$
|
6 |
*/
|
7 |
package org.gvsig.vectorediting.lib.prov.circlecr; |
8 |
|
9 |
import java.util.HashMap; |
10 |
|
11 |
import org.gvsig.fmap.geom.Geometry; |
12 |
import org.gvsig.fmap.geom.aggregate.MultiCurve; |
13 |
import org.gvsig.fmap.geom.primitive.Arc; |
14 |
import org.gvsig.fmap.geom.primitive.Point; |
15 |
import org.gvsig.fmap.geom.type.GeometryType; |
16 |
import org.gvsig.tools.dynobject.DynObject; |
17 |
import org.gvsig.tools.service.spi.ProviderServices; |
18 |
import org.gvsig.vectorediting.lib.api.EditingServiceParameter; |
19 |
import org.gvsig.vectorediting.lib.api.exceptions.FinishServiceException; |
20 |
import org.gvsig.vectorediting.lib.api.exceptions.StartServiceException; |
21 |
import org.gvsig.vectorediting.lib.spi.EditingProvider; |
22 |
import org.gvsig.vectorediting.lib.spi.EditingProviderServices; |
23 |
|
24 |
public class CircumferenceCREditingProvider extends CircleCREditingProvider implements |
25 |
EditingProvider { |
26 |
|
27 |
public CircumferenceCREditingProvider(ProviderServices providerServices,
|
28 |
DynObject parameters) { |
29 |
super(providerServices, parameters);
|
30 |
} |
31 |
|
32 |
public void finishAndStore() throws FinishServiceException { |
33 |
EditingProviderServices editingProviderServices = (EditingProviderServices) getProviderServices(); |
34 |
Geometry geometry = finish(); |
35 |
editingProviderServices.insertGeometryIntoFeatureStore(geometry, featureStore); |
36 |
} |
37 |
|
38 |
public Geometry finish() throws FinishServiceException { |
39 |
Point centerPoint = (Point) values.get(center); |
40 |
double radiusValue = (Double) values.get(radius); |
41 |
EditingProviderServices editingProviderServices = (EditingProviderServices) getProviderServices(); |
42 |
try {
|
43 |
GeometryType storeGeomType = editingProviderServices |
44 |
.getGeomType(featureStore); |
45 |
Geometry geometry = null;
|
46 |
|
47 |
if (storeGeomType.isTypeOf(MULTICURVE)) {
|
48 |
geometry = editingProviderServices.createArc(centerPoint, radiusValue, |
49 |
0, 2 * Math.PI, featureStore); |
50 |
MultiCurve multicurve; |
51 |
multicurve = geomManager.createMultiCurve(storeGeomType.getSubType()); |
52 |
multicurve.addCurve((Arc) geometry); |
53 |
return multicurve;
|
54 |
} else {
|
55 |
geometry = editingProviderServices.createArc(centerPoint, radiusValue, |
56 |
0, 2 * Math.PI, featureStore); |
57 |
} |
58 |
return geometry;
|
59 |
} |
60 |
catch (Exception e) { |
61 |
throw new FinishServiceException(e); |
62 |
} |
63 |
} |
64 |
|
65 |
public void start() throws StartServiceException { |
66 |
this.values = new HashMap<EditingServiceParameter, Object>(); |
67 |
} |
68 |
|
69 |
public String getName() { |
70 |
return CircumferenceCREditingProviderFactory.PROVIDER_NAME;
|
71 |
} |
72 |
|
73 |
} |