Revision 56 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/CircleCREditingProvider.java

View differences:

CircleCREditingProvider.java
44 44
public class CircleCREditingProvider extends AbstractEditingProvider implements
45 45
    EditingProvider {
46 46

  
47
  private static final Logger logger = LoggerFactory.getLogger(CircleCREditingProvider.class);
47
  private static final Logger logger = LoggerFactory
48
      .getLogger(CircleCREditingProvider.class);
48 49

  
49 50
  protected GeometryManager geomManager = GeometryLocator.getGeometryManager();
50

  
51
  
51 52
  private EditingServiceParameter center = new DefaultEditingServiceParameter(
52 53
      "Center", "Center position of circle", TYPE.POSITION);
53 54

  
......
66 67
  }
67 68

  
68 69
  public DefaultDrawingStatus draw(Point mousePosition) throws BaseException {
69
	  DefaultDrawingStatus geometries = new DefaultDrawingStatus();
70
    DefaultDrawingStatus geometries = new DefaultDrawingStatus();
70 71
    if (values.get(center) != null) {
71 72
      Point centerPoint = (Point) values.get(center);
72
      Curve line = ((EditingProviderServices) getProviderServices()).createLine(centerPoint.getX(), centerPoint.getY(), mousePosition.getX(), mousePosition.getY(), featureStore);
73
      Arc circle = ((EditingProviderServices) getProviderServices()).createArc(centerPoint, mousePosition.distance(centerPoint), 0, 2*Math.PI, featureStore);
73
      Curve line = ((EditingProviderServices) getProviderServices())
74
          .createLine(centerPoint.getX(), centerPoint.getY(),
75
              mousePosition.getX(), mousePosition.getY(), featureStore);
76
      Arc circle = ((EditingProviderServices) getProviderServices()).createArc(
77
          centerPoint, mousePosition.distance(centerPoint), 0, 2 * Math.PI,
78
          featureStore);
74 79
      geometries.addGeometry(circle);
75 80
      geometries.addGeometry(centerPoint);
76 81
      geometries.addGeometry(line);
......
92 97
    return null;
93 98
  }
94 99

  
95
  public void stop(){
100
  public void stop() {
96 101

  
97 102
  }
98 103

  
99
	private void validateAndInsertValue(EditingServiceParameter param, Object value) {
100
		if (param == center) {
101
			if (value instanceof Point) {
102
				values.put(param, value);
103
				return;
104
			}
105
		} else if (param == radius) {
106
			if (value instanceof Point) {
107
				Double radiusValue = null;
108
				try {
109
					radiusValue = ((Point)value).distance((Point) values.get(center));
110
				} catch (GeometryOperationNotSupportedException e) {
111
					logger.warn("Can't calculate the radius", e);
112
				} catch (GeometryOperationException e) {
113
					logger.warn("Can't calculate the radius", e);
114
				}
115
				if (radiusValue != null){
116
					values.put(param, radiusValue);
117
				}
118
			} else if (value instanceof Double) {
119
				values.put(param, value);
120
			} else if (value instanceof String) {
121
				//FIXME: el string podr?a ser tambi?n un punto
122
				Double.parseDouble((String) value);
123
				values.put(param, value);
124
			}
125
		}
126
	}
104
  private void validateAndInsertValue(EditingServiceParameter param,
105
                                      Object value) {
106
    if (param == center) {
107
      if (value instanceof Point) {
108
        values.put(param, value);
109
        return;
110
      }
111
    }
112
    else if (param == radius) {
113
      if (value instanceof Point) {
114
        Double radiusValue = null;
115
        try {
116
          radiusValue = ((Point) value).distance((Point) values.get(center));
117
        }
118
        catch (GeometryOperationNotSupportedException e) {
119
          logger.warn("Can't calculate the radius", e);
120
        }
121
        catch (GeometryOperationException e) {
122
          logger.warn("Can't calculate the radius", e);
123
        }
124
        if (radiusValue != null) {
125
          values.put(param, radiusValue);
126
        }
127
      }
128
      else if (value instanceof Double) {
129
        values.put(param, value);
130
      }
131
      else if (value instanceof String) {
132
        // FIXME: el string podr?a ser tambi?n un punto
133
        Double.parseDouble((String) value);
134
        values.put(param, value);
135
      }
136
    }
137
  }
127 138

  
128 139
  public List<EditingServiceParameter> getParameters() {
129 140
    List<EditingServiceParameter> list = new ArrayList<EditingServiceParameter>();
......
140 151
  public void finish() throws CreateGeometryException, DataException {
141 152
    Point centerPoint = (Point) values.get(center);
142 153
    double radiusValue = (Double) values.get(radius);
143
    GeometryType storeGeomType = ((EditingProviderServices) getProviderServices()).getGeomType(featureStore);
154
    EditingProviderServices editingProviderServices = (EditingProviderServices)
155
        getProviderServices();
156
    GeometryType storeGeomType = editingProviderServices
157
        .getGeomType(featureStore);
144 158
    Geometry geometry = null;
145
    if(storeGeomType.isTypeOf(SURFACE)){
146
		geometry = ((EditingProviderServices) getProviderServices()).createCircle(centerPoint, radiusValue, featureStore);
147
		((EditingProviderServices) getProviderServices()).insertGeometryIntoFeatureStore(geometry, featureStore);
148
    } else if(storeGeomType.isTypeOf(CURVE)){
149
		geometry = ((EditingProviderServices) getProviderServices()).createArc(centerPoint, radiusValue, 0, 2*Math.PI, featureStore);
150
		((EditingProviderServices) getProviderServices()).insertGeometryIntoFeatureStore(geometry, featureStore);
151
    } else if(storeGeomType.isTypeOf(MULTISURFACE)){
152
		geometry = ((EditingProviderServices) getProviderServices()).createCircle(centerPoint, radiusValue, featureStore);
153
		MultiSurface multisurface;
154
			multisurface = geomManager.createMultiSurface(storeGeomType.getSubType());
155
			multisurface.addSurface((Circle)geometry);
156
		    ((EditingProviderServices) getProviderServices()).insertGeometryIntoFeatureStore(multisurface, featureStore);
157
	} else if(storeGeomType.isTypeOf(MULTICURVE)){
158
		geometry = ((EditingProviderServices) getProviderServices()).createArc(centerPoint, radiusValue, 0, 2*Math.PI, featureStore);
159
		MultiCurve multicurve;
160
			multicurve = geomManager.createMultiCurve(storeGeomType.getSubType());
161
			multicurve.addCurve((Arc)geometry);
162
		    ((EditingProviderServices) getProviderServices()).insertGeometryIntoFeatureStore(multicurve, featureStore);
159
    if (storeGeomType.isTypeOf(SURFACE)) {
160
      geometry = editingProviderServices.createCircle(centerPoint, radiusValue,
161
          featureStore);
162
      editingProviderServices.insertGeometryIntoFeatureStore(geometry,
163
          featureStore);
164
    }
165
    else if (storeGeomType.isTypeOf(CURVE)) {
166
      geometry = editingProviderServices.createArc(centerPoint, radiusValue, 0,
167
          2 * Math.PI, featureStore);
168
      editingProviderServices.insertGeometryIntoFeatureStore(geometry,
169
          featureStore);
170
    }
171
    else if (storeGeomType.isTypeOf(MULTISURFACE)) {
172
      geometry = editingProviderServices.createCircle(centerPoint, radiusValue,
173
          featureStore);
174
      MultiSurface multisurface;
175
      multisurface = geomManager.createMultiSurface(storeGeomType.getSubType());
176
      multisurface.addSurface((Circle) geometry);
177
      editingProviderServices.insertGeometryIntoFeatureStore(multisurface,
178
          featureStore);
179
    }
180
    else if (storeGeomType.isTypeOf(MULTICURVE)) {
181
      geometry = editingProviderServices.createArc(centerPoint, radiusValue, 0,
182
          2 * Math.PI, featureStore);
183
      MultiCurve multicurve;
184
      multicurve = geomManager.createMultiCurve(storeGeomType.getSubType());
185
      multicurve.addCurve((Arc) geometry);
186
      editingProviderServices.insertGeometryIntoFeatureStore(multicurve,
187
          featureStore);
163 188

  
164
    } else {
165
		((EditingProviderServices) getProviderServices()).insertGeometryIntoFeatureStore(geometry, featureStore);
166
	}
189
    }
190
    else {
191
      editingProviderServices.insertGeometryIntoFeatureStore(geometry,
192
          featureStore);
193
    }
167 194
  }
168 195

  
169 196
  public void start() {

Also available in: Unified diff