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

View differences:

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