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
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