Revision 266 org.gvsig.geoprocess/trunk/org.gvsig.geoprocess/org.gvsig.geoprocess.algorithm/org.gvsig.geoprocess.algorithm.base/src/main/java/org/gvsig/geoprocess/algorithm/base/core/DALFeaturePersister.java

View differences:

DALFeaturePersister.java
32 32
import org.gvsig.fmap.dal.feature.FeatureType;
33 33
import org.gvsig.fmap.geom.GeometryLocator;
34 34
import org.gvsig.fmap.geom.GeometryManager;
35
import org.gvsig.fmap.geom.Geometry.SUBTYPES;
36
import org.gvsig.fmap.geom.Geometry.TYPES;
37
import org.gvsig.fmap.geom.aggregate.MultiCurve;
38
import org.gvsig.fmap.geom.aggregate.MultiPoint;
35 39
import org.gvsig.fmap.geom.exception.CreateGeometryException;
36 40
import org.gvsig.fmap.geom.operation.GeometryOperationContext;
37 41
import org.gvsig.fmap.geom.operation.GeometryOperationException;
38 42
import org.gvsig.fmap.geom.operation.GeometryOperationNotSupportedException;
39 43
import org.gvsig.fmap.geom.operation.fromjts.FromJTS;
44
import org.gvsig.fmap.geom.primitive.Curve;
45
import org.gvsig.fmap.geom.primitive.Point;
40 46
import org.gvsig.geoprocess.algorithm.base.util.GeometryUtil;
41 47

  
42 48
import com.vividsolutions.jts.geom.Geometry;
......
113 119
		}
114 120

  
115 121
		if(acceptType(store, newDalGeom)) {
116
			feat.setGeometry("GEOMETRY", newDalGeom);
122
			feat.setGeometry("GEOMETRY", convertGeometry2MultiGeometry(newDalGeom));
117 123
			store.insert(feat);
118 124
			return feat;
119 125
		}
......
121 127
	}
122 128
	
123 129
	/**
130
	 * Converts a geometry into a multigeometry
131
	 * @param g
132
	 * @return
133
	 * @throws CreateGeometryException
134
	 */
135
	private org.gvsig.fmap.geom.Geometry convertGeometry2MultiGeometry(org.gvsig.fmap.geom.Geometry g) throws CreateGeometryException {
136
		if(g instanceof Point) {
137
			MultiPoint pNew = (MultiPoint)geometryManager.create(TYPES.MULTIPOINT, SUBTYPES.GEOM2D);
138
			pNew.addPoint((Point)g);
139
			return pNew;
140
		}
141
		if(g instanceof Curve) {
142
			MultiCurve cNew = (MultiCurve)geometryManager.create(TYPES.MULTICURVE, SUBTYPES.GEOM2D);
143
			cNew.addCurve((Curve)g);
144
			return cNew;
145
		}
146
		return g;
147
	}
148
	
149
	/**
124 150
	 * Checks if the type of the feature store and the geometry are compatibles.
125 151
	 * @param store
126 152
	 * @param geom
......
182 208
					}
183 209
				}
184 210
			}
185
			feat.setGeometry("GEOMETRY", newDalGeom);
211
			feat.setGeometry("GEOMETRY", convertGeometry2MultiGeometry(newDalGeom));
186 212
			store.insert(feat);
187 213
			return feat;
188 214
		}
......
203 229
			EditableFeature feat = store.createNewFeature();
204 230
			feat.set(0, id);
205 231
			feat.set(1, value);
206
			feat.setGeometry("GEOMETRY", newDalGeom);
232
			feat.setGeometry("GEOMETRY", convertGeometry2MultiGeometry(newDalGeom));
207 233
			store.insert(feat);
208 234
			return feat;
209 235
		}
......
225 251
			feat.set(0, id);
226 252
			feat.set(1, value1);
227 253
			feat.set(2, value2);
228
			feat.setGeometry("GEOMETRY", newDalGeom);
254
			feat.setGeometry("GEOMETRY", convertGeometry2MultiGeometry(newDalGeom));
229 255
			store.insert(feat);
230 256
			return feat;
231 257
		}
......
275 301
	public EditableFeature addFeature(Feature feature, org.gvsig.fmap.geom.Geometry newGeom) throws CreateGeometryException, DataException {
276 302
		if(acceptType(store, newGeom)) {
277 303
			EditableFeature feat = store.createNewFeature(store.getDefaultFeatureType(), feature);
278
			feat.setGeometry(fieldNames.length, newGeom);
304
			feat.setGeometry(fieldNames.length, convertGeometry2MultiGeometry(newGeom));
279 305
			store.insert(feat);
280 306
			return feat;
281 307
		}

Also available in: Unified diff