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

View differences:

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