Revision 16 org.gvsig.lrs/trunk/org.gvsig.lrs/org.gvsig.lrs.lib/org.gvsig.lrs.lib.impl/src/main/java/org/gvsig/lrs/lib/impl/LrsCreateRouteAlgorithm.java
LrsCreateRouteAlgorithm.java | ||
---|---|---|
35 | 35 |
import org.gvsig.fmap.dal.DataServerExplorer; |
36 | 36 |
import org.gvsig.fmap.dal.DataServerExplorerParameters; |
37 | 37 |
import org.gvsig.fmap.dal.DataStore; |
38 |
import org.gvsig.fmap.dal.DataStoreParameters; |
|
39 | 38 |
import org.gvsig.fmap.dal.DataTypes; |
40 | 39 |
import org.gvsig.fmap.dal.exception.DataException; |
41 | 40 |
import org.gvsig.fmap.dal.feature.EditableFeature; |
... | ... | |
159 | 158 |
toDataType=null; |
160 | 159 |
} |
161 | 160 |
|
161 |
FeatureStore newFeatureStore=LrsAlgorithmUtils.createNewDataStore(newFeatureStoreParameters,idRouteField); |
|
162 | 162 |
|
163 |
DataStore newDataStore=createNewDataStore(newFeatureStoreParameters,idRouteField); |
|
164 |
|
|
165 | 163 |
FeatureSet sourceFeatures; |
166 | 164 |
if (sourceFeatureStore.getFeatureSelection().getSize()>0){ |
167 | 165 |
sourceFeatures=sourceFeatureStore.getFeatureSelection(); |
... | ... | |
190 | 188 |
List<MStructure> mList=featuresMap.get(routeName); |
191 | 189 |
MStructure mStructure=new MStructure(); |
192 | 190 |
mStructure.geometry=originalGeometry; |
193 |
mStructure.fromField=getDouble(objFrom,fromDataType);
|
|
194 |
mStructure.toField=getDouble(objTo,toDataType);
|
|
191 |
mStructure.fromField=LrsAlgorithmUtils.getAsDouble(objFrom,fromDataType);
|
|
192 |
mStructure.toField=LrsAlgorithmUtils.getAsDouble(objTo,toDataType);
|
|
195 | 193 |
mList.add(mStructure); |
196 | 194 |
featuresMap.put(routeName, mList); |
197 | 195 |
} |
... | ... | |
199 | 197 |
|
200 | 198 |
taskStatus.setRangeOfValues(0, featuresMap.size()-1); |
201 | 199 |
int taskCount=0; |
202 |
FeatureStore featureStore=(FeatureStore)newDataStore; |
|
203 |
featureStore.edit(FeatureStore.MODE_FULLEDIT);
|
|
200 |
|
|
201 |
newFeatureStore.edit(FeatureStore.MODE_FULLEDIT);
|
|
204 | 202 |
for(Entry<String, List<MStructure>> entry : featuresMap.entrySet()) { |
205 | 203 |
String routeName = entry.getKey(); |
206 | 204 |
List<MStructure> mList = entry.getValue(); |
207 | 205 |
|
208 |
EditableFeature newFeature = featureStore.createNewFeature(true);
|
|
206 |
EditableFeature newFeature = newFeatureStore.createNewFeature(true);
|
|
209 | 207 |
newFeature.set(routeFieldName, routeName); |
210 | 208 |
Geometry route = createGeometryRoute(mList); |
211 | 209 |
newFeature.setDefaultGeometry(route); |
212 |
featureStore.update(newFeature);
|
|
210 |
newFeatureStore.update(newFeature);
|
|
213 | 211 |
|
214 | 212 |
taskStatus.setCurValue(taskCount); |
215 | 213 |
taskCount++; |
216 | 214 |
} |
217 |
featureStore.finishEditing();
|
|
215 |
newFeatureStore.finishEditing();
|
|
218 | 216 |
|
219 | 217 |
} catch (Exception e1) { |
220 | 218 |
taskStatus.abort(); |
... | ... | |
264 | 262 |
// } |
265 | 263 |
} |
266 | 264 |
|
267 |
|
|
268 |
private DataStore createNewDataStore(NewFeatureStoreParameters newFeatureStoreParameters,FeatureAttributeDescriptor idRouteField) |
|
269 |
throws LrsCreateRouteException{ |
|
270 |
try { |
|
271 |
SHPNewStoreParameters shapeStoreParams = (SHPNewStoreParameters)newFeatureStoreParameters; |
|
272 |
File file=shapeStoreParams.getFile(); |
|
273 |
String filePath=file.getPath().substring(0, file.getPath().lastIndexOf(File.separator)); |
|
274 |
|
|
275 |
DataManager dataManager = DALLocator.getDataManager(); |
|
276 |
DataServerExplorerParameters serverParams = |
|
277 |
dataManager.createServerExplorerParameters("FilesystemExplorer"); |
|
278 |
serverParams.setDynValue("initialpath", filePath); |
|
279 |
DataServerExplorer serverExplorer = |
|
280 |
dataManager.openServerExplorer(serverParams.getExplorerName(), serverParams); |
|
281 |
|
|
282 |
EditableFeatureType featureType = (EditableFeatureType)shapeStoreParams.getDefaultFeatureType(); |
|
283 |
featureType.add(idRouteField.getName(), idRouteField.getType(), idRouteField.getSize()); |
|
284 |
EditableFeatureAttributeDescriptor geometryField = featureType.add("Geometry", DataTypes.GEOMETRY); |
|
285 |
GeometryType geometryType = GeometryLocator.getGeometryManager().getGeometryType(Geometry.TYPES.MULTICURVE, Geometry.SUBTYPES.GEOM2D); |
|
286 |
geometryField.setGeometryType(geometryType); |
|
287 |
|
|
288 |
featureType.setDefaultGeometryAttributeName("Geometry"); |
|
289 |
|
|
290 |
shapeStoreParams.setDefaultFeatureType(featureType); |
|
291 |
serverExplorer.add("Shape", shapeStoreParams, true); |
|
292 |
|
|
293 |
DataStore store = dataManager.createStore(shapeStoreParams); |
|
294 |
|
|
295 |
return store; |
|
296 |
|
|
297 |
} catch (Exception e) { |
|
298 |
throw new LrsCreateRouteException("Error creating new dataStore", e); |
|
299 |
} |
|
300 |
} |
|
301 |
|
|
302 | 265 |
private Geometry createGeometryRoute(List<MStructure> mList) throws CreateGeometryException{ |
303 | 266 |
GeometryManager geomanager= GeometryLocator.getGeometryManager(); |
304 | 267 |
//TODO Must be changed to Multiline and GEOM2DM |
... | ... | |
318 | 281 |
return routeGeometry; |
319 | 282 |
} |
320 | 283 |
|
321 |
private Double getDouble(Object obj,DataType dataType){ |
|
322 |
Double result=Double.NaN; |
|
323 |
if (dataType.equals(DataTypes.DOUBLE)){ |
|
324 |
result=(Double)obj; |
|
325 |
}else { |
|
326 |
result=Double.valueOf(String.valueOf(obj)); |
|
327 |
} |
|
328 |
return result; |
|
329 |
} |
|
330 | 284 |
|
331 |
|
|
332 |
|
|
333 |
|
|
334 |
|
|
335 | 285 |
/** |
336 | 286 |
* @param route |
337 | 287 |
* @return |
... | ... | |
741 | 691 |
|
742 | 692 |
} |
743 | 693 |
|
744 |
} |
|
694 |
class MStructure{ |
|
695 |
Geometry geometry; |
|
696 |
Double fromField; |
|
697 |
Double toField; |
|
698 |
} |
|
745 | 699 |
|
746 |
class MStructure{ |
|
747 |
Geometry geometry; |
|
748 |
Double fromField; |
|
749 |
Double toField; |
|
750 | 700 |
} |
751 | 701 |
|
752 | 702 |
|
703 |
|
|
704 |
|
Also available in: Unified diff