Revision 46 org.gvsig.vectorediting/trunk/org.gvsig.vectorediting/org.gvsig.vectorediting.lib/org.gvsig.vectorediting.lib.prov/org.gvsig.vectorediting.lib.prov.circle2P/src/main/java/org/gvsig/vectorediting/lib/prov/circle2P/Circle2PEditingProvider.java
Circle2PEditingProvider.java | ||
---|---|---|
13 | 13 |
|
14 | 14 |
import org.gvsig.fmap.dal.feature.FeatureStore; |
15 | 15 |
import org.gvsig.fmap.geom.Geometry; |
16 |
import org.gvsig.fmap.geom.aggregate.MultiCurve; |
|
17 |
import org.gvsig.fmap.geom.aggregate.MultiSurface; |
|
18 |
import org.gvsig.fmap.geom.exception.CreateGeometryException; |
|
19 |
import org.gvsig.fmap.geom.operation.GeometryOperationException; |
|
20 |
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException; |
|
21 |
import org.gvsig.fmap.geom.primitive.Arc; |
|
16 | 22 |
import org.gvsig.fmap.geom.primitive.Circle; |
17 | 23 |
import org.gvsig.fmap.geom.primitive.Point; |
18 |
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
|
|
24 |
import org.gvsig.fmap.geom.type.GeometryType;
|
|
19 | 25 |
import org.gvsig.tools.dynobject.DynObject; |
20 | 26 |
import org.gvsig.tools.service.spi.ProviderServices; |
21 | 27 |
import org.gvsig.vectorediting.lib.api.EditingServiceParameter; |
... | ... | |
25 | 31 |
import org.gvsig.vectorediting.lib.spi.EditingProvider; |
26 | 32 |
import org.gvsig.vectorediting.lib.spi.EditingProviderFactory; |
27 | 33 |
import org.gvsig.vectorediting.lib.spi.EditingProviderServices; |
34 |
import org.slf4j.Logger; |
|
35 |
import org.slf4j.LoggerFactory; |
|
28 | 36 |
|
29 | 37 |
public class Circle2PEditingProvider extends AbstractEditingProvider implements |
30 | 38 |
EditingProvider { |
31 | 39 |
|
40 |
private static final Logger logger = LoggerFactory.getLogger(Circle2PEditingProvider.class); |
|
41 |
|
|
32 | 42 |
private EditingServiceParameter center = new DefaultEditingServiceParameter( |
33 | 43 |
"Center", "Center position of circle", TYPE.POSITION); |
34 | 44 |
|
... | ... | |
91 | 101 |
public void finish() { |
92 | 102 |
Point centerPoint = (Point) values.get(center); |
93 | 103 |
Point radiusPoint = (Point) values.get(radius); |
94 |
Circle geometry = createCircle(centerPoint, radiusPoint, |
|
95 |
featureStore); |
|
96 |
((EditingProviderServices) getProviderServices()) |
|
97 |
.insertGeometryIntoFeatureStore(geometry, featureStore); |
|
104 |
GeometryType storeGeomType = getGeomType(featureStore); |
|
105 |
Geometry geometry = null; |
|
106 |
if(storeGeomType.isTypeOf(SURFACE)){ |
|
107 |
geometry = createCircle(centerPoint, radiusPoint, featureStore); |
|
108 |
((EditingProviderServices) getProviderServices()).insertGeometryIntoFeatureStore(geometry, featureStore); |
|
109 |
} else if(storeGeomType.isTypeOf(CURVE)){ |
|
110 |
try { |
|
111 |
geometry = createArc(centerPoint, centerPoint.distance(radiusPoint), 0, 2*Math.PI, featureStore); |
|
112 |
} catch (GeometryOperationNotSupportedException e) { |
|
113 |
// TODO Auto-generated catch block |
|
114 |
e.printStackTrace(); |
|
115 |
} catch (GeometryOperationException e) { |
|
116 |
// TODO Auto-generated catch block |
|
117 |
e.printStackTrace(); |
|
118 |
} |
|
119 |
((EditingProviderServices) getProviderServices()).insertGeometryIntoFeatureStore(geometry, featureStore); |
|
120 |
} else if(storeGeomType.isTypeOf(MULTISURFACE)){ |
|
121 |
geometry = createCircle(centerPoint, radiusPoint, featureStore); |
|
122 |
MultiSurface multisurface; |
|
123 |
try { |
|
124 |
multisurface = geomManager.createMultiSurface(storeGeomType.getSubType()); |
|
125 |
multisurface.addSurface((Circle)geometry); |
|
126 |
((EditingProviderServices) getProviderServices()).insertGeometryIntoFeatureStore(multisurface, featureStore); |
|
127 |
} catch (CreateGeometryException e) { |
|
128 |
logger.error("Can't create multisurface", e); |
|
129 |
((EditingProviderServices) getProviderServices()).insertGeometryIntoFeatureStore(geometry, featureStore); |
|
130 |
} |
|
131 |
} else if(storeGeomType.isTypeOf(MULTICURVE)){ |
|
132 |
try { |
|
133 |
geometry = createArc(centerPoint, centerPoint.distance(radiusPoint), 0, 2*Math.PI, featureStore); |
|
134 |
} catch (GeometryOperationNotSupportedException e1) { |
|
135 |
// TODO Auto-generated catch block |
|
136 |
e1.printStackTrace(); |
|
137 |
} catch (GeometryOperationException e1) { |
|
138 |
// TODO Auto-generated catch block |
|
139 |
e1.printStackTrace(); |
|
140 |
} |
|
141 |
MultiCurve multicurve; |
|
142 |
try { |
|
143 |
multicurve = geomManager.createMultiCurve(storeGeomType.getSubType()); |
|
144 |
multicurve.addCurve((Arc)geometry); |
|
145 |
((EditingProviderServices) getProviderServices()).insertGeometryIntoFeatureStore(multicurve, featureStore); |
|
146 |
} catch (CreateGeometryException e) { |
|
147 |
logger.error("Can't create multisurface", e); |
|
148 |
((EditingProviderServices) getProviderServices()).insertGeometryIntoFeatureStore(geometry, featureStore); |
|
149 |
} |
|
98 | 150 |
|
151 |
} else { |
|
152 |
((EditingProviderServices) getProviderServices()).insertGeometryIntoFeatureStore(geometry, featureStore); |
|
153 |
} |
|
99 | 154 |
} |
100 | 155 |
|
101 | 156 |
public void start() { |
Also available in: Unified diff