Statistics
| Revision:

gvsig-lrs / org.gvsig.lrs / trunk / org.gvsig.lrs / org.gvsig.lrs.swing / org.gvsig.lrs.swing.impl / src / main / java / org / gvsig / lrs / swing / impl / JLrsGenerateDynamicSegmentationParamsController.java @ 9

History | View | Annotate | Download (23.5 KB)

1
/*
2
 * Copyright 2015 DiSiD Technologies S.L.L. All rights reserved.
3
 *
4
 * Project  : DiSiD org.gvsig.lrs.swing.impl
5
 * SVN Id   : $Id$
6
 */
7
package org.gvsig.lrs.swing.impl;
8

    
9
import java.awt.event.ActionEvent;
10
import java.awt.event.ActionListener;
11
import java.awt.event.ItemEvent;
12
import java.awt.event.ItemListener;
13
import java.io.File;
14
import java.util.List;
15
import java.util.Locale;
16

    
17
import javax.swing.ComboBoxModel;
18
import javax.swing.DefaultComboBoxModel;
19
import javax.swing.JComponent;
20
import javax.swing.JOptionPane;
21
import javax.swing.ListCellRenderer;
22

    
23
import org.apache.commons.io.FileUtils;
24
import org.apache.commons.lang3.StringUtils;
25
import org.cresques.cts.IProjection;
26
import org.gvsig.fmap.dal.DALLocator;
27
import org.gvsig.fmap.dal.DataManager;
28
import org.gvsig.fmap.dal.DataStoreParameters;
29
import org.gvsig.fmap.dal.exception.DataException;
30
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
31
import org.gvsig.fmap.dal.feature.FeatureStore;
32
import org.gvsig.fmap.dal.feature.FeatureType;
33
import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters;
34
import org.gvsig.fmap.dal.store.shp.SHPNewStoreParameters;
35
import org.gvsig.fmap.geom.DataTypes;
36
import org.gvsig.fmap.mapcontext.layers.FLayer;
37
import org.gvsig.fmap.mapcontext.layers.operations.LayerCollection;
38
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
39
import org.gvsig.lrs.lib.api.DistanceUnits;
40
import org.gvsig.lrs.lib.api.LrsAlgorithmParams;
41
import org.gvsig.lrs.lib.api.LrsAlgorithmsLocator;
42
import org.gvsig.lrs.lib.api.LrsAlgorithmsManager;
43
import org.gvsig.lrs.lib.api.LrsCalibrateRouteAlgorithmParams;
44
import org.gvsig.lrs.lib.api.LrsMeasureCalculationMethods;
45
import org.gvsig.lrs.lib.api.exceptions.LrsGettingParametersException;
46
import org.gvsig.lrs.lib.api.exceptions.LrsNeededParameterException;
47
import org.gvsig.lrs.swing.api.JLrsAlgorithmParams;
48
import org.gvsig.tools.ToolsLocator;
49
import org.gvsig.tools.i18n.I18nManager;
50
import org.gvsig.tools.swing.api.ActionListenerSupport;
51
import org.gvsig.tools.swing.api.ToolsSwingLocator;
52
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
53
import org.slf4j.Logger;
54
import org.slf4j.LoggerFactory;
55

    
56
public class JLrsGenerateDynamicSegmentationParamsController extends JLrsGenerateDynamicSegmentationParamsView  implements JLrsAlgorithmParams{
57

    
58
    private static final Logger logger = LoggerFactory.getLogger(JLrsGenerateDynamicSegmentationParamsController.class);
59

    
60
    private boolean canceled;
61
    private ActionListenerSupport listeners = ToolsSwingLocator.getToolsSwingManager().createActionListenerSupport();
62

    
63
    private LayerCollection layers;
64

    
65
    /**
66
     * @param layers
67
     * @throws LrsNeededParameterException
68
     *
69
     */
70
    public JLrsGenerateDynamicSegmentationParamsController(LayerCollection layers, List<FeatureStore> stores , LrsAlgorithmParams params) throws LrsNeededParameterException {
71
        super();
72
        this.layers = layers;
73
        initComponents();
74
        translate();
75
        setParams(params);
76
    }
77

    
78
    public void addActionListener(ActionListener listener) {
79
        listeners.addActionListener(listener);
80
    }
81

    
82
    public void removeActionListener(ActionListener listener) {
83
        listeners.removeActionListener(listener);
84
    }
85

    
86
    private void translate() {
87
        I18nManager i18nManager = ToolsLocator.getI18nManager();
88

    
89
        lblInputLayer.setText(i18nManager.getTranslation(lblInputLayer.getText()));
90
        lblIdRouteField.setText(i18nManager.getTranslation(lblIdRouteField.getText()));
91
        lblTable.setText(i18nManager.getTranslation(lblTable.getText()));
92
        lblTableIdRouteField.setText(i18nManager.getTranslation(lblTableIdRouteField.getText()));
93
        lblLandmarkField.setText(i18nManager.getTranslation(lblLandmarkField.getText()));
94
        lblFinalLandmarkField.setText(i18nManager.getTranslation(lblFinalLandmarkField.getText()));
95
        lblValueField.setText(i18nManager.getTranslation(lblValueField.getText()));
96
        lblOutputFile.setText(i18nManager.getTranslation(lblOutputFile.getText()));
97

    
98
        btnBrowser.setText("\u2026");
99
        btnAccept.setText(i18nManager.getTranslation(btnAccept.getText()));
100
        btnCancel.setText(i18nManager.getTranslation(btnCancel.getText()));
101

    
102
    }
103

    
104
    /**
105
     *
106
     */
107
    public void setLocate(Locale locale) {
108
        Locale l = super.getLocale();
109
        if (!l.equals(locale)) {
110
            translate();
111
        }
112
        super.setLocale(locale);
113
    }
114

    
115
    /**
116
     * @throws LrsNeededParameterException
117
     */
118
    private void initComponents() throws LrsNeededParameterException {
119
        //TODO table como DataStore?
120
        if (layers==null||layers.getLayersCount()<1){
121
            //TODO Comprobar vectorial tambien
122
            throw new LrsNeededParameterException("need_layers", null);
123
        }
124

    
125
        // Modelos de los combos
126
        FLayersComboBoxModel inputLayerModel = new FLayersComboBoxModel(this.layers);
127
        FeatureAttributeDescriptorsComboBoxModel idRouteFieldComboBoxModel =
128
            new FeatureAttributeDescriptorsComboBoxModel();
129

    
130
        FLayersComboBoxModel tableLayerModel = new FLayersComboBoxModel(this.layers);
131
        FeatureAttributeDescriptorsComboBoxModel tableIdRouteFieldComboBoxModel =
132
            new FeatureAttributeDescriptorsComboBoxModel();
133
        FeatureAttributeDescriptorsComboBoxModel landmarkComboBoxModel =
134
            new FeatureAttributeDescriptorsComboBoxModel();
135
        FeatureAttributeDescriptorsComboBoxModel finalLandmarkComboBoxModel =
136
            new FeatureAttributeDescriptorsComboBoxModel();
137
        FeatureAttributeDescriptorsComboBoxModel valueComboBoxModel =
138
            new FeatureAttributeDescriptorsComboBoxModel();
139

    
140

    
141
        // Renderer para los combos de attributeDescriptors
142
        ListCellRenderer featureAttributeDescriptorCellRenderer = new FLayersAttributeDescriptorCellRenderer();
143
        // asignaci?n de renderers y modelos
144
        cmbIdRouteField.setRenderer(featureAttributeDescriptorCellRenderer);
145
        cmbTableIdRouteField.setRenderer(featureAttributeDescriptorCellRenderer);
146
        cmbLandmarkField.setRenderer(featureAttributeDescriptorCellRenderer);
147
        cmbFinalLandmarkField.setRenderer(featureAttributeDescriptorCellRenderer);
148
        cmbValueField.setRenderer(featureAttributeDescriptorCellRenderer);
149
        cmbIdRouteField.setModel(idRouteFieldComboBoxModel);
150
        cmbTableIdRouteField.setModel(tableIdRouteFieldComboBoxModel);
151
        cmbLandmarkField.setModel(landmarkComboBoxModel);
152
        cmbFinalLandmarkField.setModel(finalLandmarkComboBoxModel);
153
        cmbValueField.setModel(valueComboBoxModel);
154

    
155
        // renderer para el combo de capas
156
        ListCellRenderer layerNameCellRenderer=new FLayersLayerNameCellRenderer();
157
        cmbInputLayer.setRenderer(layerNameCellRenderer);
158
        cmbTable.setRenderer(layerNameCellRenderer);
159
        // asignaci?n modelo al combo de capas
160
        cmbInputLayer.setModel(inputLayerModel);
161
        cmbTable.setModel(tableLayerModel);
162
        // listener del combo de capas para que actualice el resto de
163
        // componentes
164
        cmbInputLayer.addItemListener(new ItemListener() {
165

    
166
            public void itemStateChanged(ItemEvent e) {
167
                Object item = e.getItem();
168
                if (item instanceof FLyrVect) {
169
                    FLyrVect layer = (FLyrVect) item;
170
                    updateLayerSource(layer);
171
                }
172
            }
173
        });
174
        cmbTable.addItemListener(new ItemListener() {
175

    
176
            public void itemStateChanged(ItemEvent e) {
177
                Object item = e.getItem();
178
                if (item instanceof FLyrVect) {
179
                    FLyrVect layer = (FLyrVect) item;
180
                    updateLayerTable(layer);
181
                }
182
            }
183
        });
184

    
185
        this.btnBrowser.addActionListener(new ActionListener() {
186

    
187
            public void actionPerformed(ActionEvent e) {
188
                doSelectOuputFile();
189
            }
190
        });
191

    
192
        this.btnAccept.addActionListener(new ActionListener() {
193

    
194
            public void actionPerformed(ActionEvent e) {
195
                canceled = false;
196
                doClose();
197
                listeners.fireActionEvent(new ActionEvent(JLrsGenerateDynamicSegmentationParamsController.this, 0, "accept"));
198

    
199
            }
200
        });
201

    
202
        this.btnCancel.addActionListener(new ActionListener() {
203

    
204
            public void actionPerformed(ActionEvent e) {
205
                canceled = true;
206
                doClose();
207
                listeners.fireActionEvent(new ActionEvent(JLrsGenerateDynamicSegmentationParamsController.this, 0, "cancel"));
208
            }
209
        });
210

    
211
        setVisibleAceptCancel(false);
212
        canceled = false;
213
    }
214

    
215
    private void doSelectOuputFile() {
216
        final I18nManager i18nManager = ToolsLocator.getI18nManager();
217
        ThreadSafeDialogsManager manager = ToolsSwingLocator.getThreadSafeDialogsManager();
218
        File[] files = manager.showSaveFileDialog(i18nManager.getTranslation("output_file"), null);
219
        if (files != null && files.length > 0) {
220
            File file = files[0];
221
            String absolutePath = file.getAbsolutePath();
222
            if(!StringUtils.endsWithIgnoreCase(absolutePath, ".shp")){
223
                absolutePath = new StringBuilder().append(absolutePath).append(".shp").toString();
224
            }
225
            File outputFile = FileUtils.getFile(absolutePath);
226
            if(outputFile.exists()) {
227
                int resp = JOptionPane.showOptionDialog(
228
                    this.asJComponent(),
229
                    i18nManager.getTranslation("file_already_exists_do_you_want_overwrite_it"),
230
                    i18nManager.getTranslation("output_file"),
231
                    JOptionPane.OK_CANCEL_OPTION,
232
                    JOptionPane.QUESTION_MESSAGE,
233
                    null,
234
                    null,
235
                    JOptionPane.OK_OPTION);
236
                if (resp == JOptionPane.OK_OPTION){
237
                    this.txtOutputFile.setText(absolutePath);
238
                } else {
239
                    doSelectOuputFile();
240
                }
241
            } else {
242
                this.txtOutputFile.setText(absolutePath);
243
            }
244
        }
245

    
246
    }
247

    
248
    private void doClose() {
249
        this.setVisible(false);
250
    }
251

    
252
    public boolean isCanceled() {
253
        return this.canceled;
254
    }
255

    
256
    public void setVisibleAceptCancel(boolean visible) {
257
        this.btnAccept.setVisible(visible);
258
        this.btnCancel.setVisible(visible);
259
    }
260

    
261
    public boolean getVisibleAceptCancel() {
262
        return this.btnAccept.isVisible();
263
    }
264

    
265
    public JComponent asJComponent() {
266
        return this;
267
    }
268

    
269
    public LrsAlgorithmParams getParams() throws LrsGettingParametersException, LrsNeededParameterException {
270
//        FeatureAttributeDescriptor idRouteField = (FeatureAttributeDescriptor) this.cmbIdRouteField.getSelectedItem();
271
//        if (idRouteField == null) {
272
//            throw new LrsNeededParameterException("need_to_select_a_route_identifier_field", null);
273
//        }
274
//        String outputLayerPath = this.txtOutputFile.getText();
275
//        if(StringUtils.isEmpty(outputLayerPath)){
276
//            throw new LrsNeededParameterException("need_to_fill_the_target_path", null);
277
//        }
278
//
279
        LrsAlgorithmsManager manager = LrsAlgorithmsLocator.getLrsAlgorithmsManager();
280

    
281
        LrsCalibrateRouteAlgorithmParams params = manager.createLrsCalibrateRouteAlgorithmParams();
282
//        // Recorrer todo del interfaz y rellenar los parametros
283
//        FeatureStore sourceFeatureStore = ((FLyrVect) this.cmbInputLayer.getSelectedItem()).getFeatureStore();
284
//        params.setSourceFeatureStore(sourceFeatureStore);
285
//        params.setIdRouteField((FeatureAttributeDescriptor) this.cmbIdRouteField.getSelectedItem());
286
//        FeatureStore calibratePointFeatureStore = ((FLyrVect) this.cmbCalibratePointLayer.getSelectedItem()).getFeatureStore();
287
//        params.setCalibratePointFeatureStore(calibratePointFeatureStore);
288
//        params.setCalibratePointIdRouteField((FeatureAttributeDescriptor) this.cmbCalibrationPointIdRouteField.getSelectedItem());
289
//        params.setFromMeasureField((FeatureAttributeDescriptor) this.cmbFromMeasureField.getSelectedItem());
290
//
291
//        SHPNewStoreParameters sHPNewStoreParameters=new SHPNewStoreParameters();
292
//        sHPNewStoreParameters.setFile(outputLayerPath);
293
//        params.setNewFeatureStoreParameters(sHPNewStoreParameters);
294

    
295
        // Crear un SHP a partir de la ruta con el atributo de indentificadores
296
        // de rutas y pasar el featureStore
297
//        DataManager dataManager = DALLocator.getDataManager();
298
//        FeatureType featureType = dataManager.createFeatureType();
299
//        EditableFeatureType editableFeatureType;
300
//        if (featureType instanceof EditableFeatureType) {
301
//            editableFeatureType = (EditableFeatureType) featureType;
302
//        } else {
303
//            editableFeatureType = featureType.getEditable();
304
//        }
305
//        editableFeatureType.add(idRouteField.getName(), idRouteField.getType(), idRouteField.getSize());
306
//        editableFeatureType.add("GEOMETRY", DataTypes.GEOMETRY);
307
//        editableFeatureType.setDefaultGeometryAttributeName("GEOMETRY");
308
//        EditableFeatureAttributeDescriptor geomAttributeDescriptor =
309
//            editableFeatureType.getEditableAttributeDescriptor("GEOMETRY");
310
//        // FIXME: Cambiar por GEOM2DM;
311
//        try {
312
//            geomAttributeDescriptor.setGeometryType(GeometryLocator.getGeometryManager().getGeometryType(
313
//                TYPES.MULTICURVE, SUBTYPES.GEOM3D));
314
//        } catch (GeometryException e2) {
315
//            throw new LrsGettingParametersException("Error setting geometry type in attribute descriptor", e2);
316
//        } catch (LocatorException e2) {
317
//            throw new LrsGettingParametersException("Error getting geometry manager", e2);
318
//        }
319
//
320
//        FeatureType sourceFeatureType;
321
//        try {
322
//            sourceFeatureType = sourceFeatureStore.getDefaultFeatureType();
323
//        } catch (DataException e1) {
324
//            throw new LrsGettingParametersException("Error getting feature type from source feature store", e1);
325
//        }
326
//        IProjection sourceProjection = sourceFeatureType.getDefaultSRS();
327
//        try {
328
//            manager.createNewShape(editableFeatureType, TYPES.MULTICURVE, outputLayerPath, sourceProjection);
329
//        } catch (Exception e1) {
330
//            throw new LrsGettingParametersException(new StringBuilder().append("Error creating a new shape in ")
331
//                .append(outputLayerPath).toString(), e1);
332
//        }
333
//        FeatureStore outputFeatoreStore;
334
//        try {
335
//            outputFeatoreStore = getFeatureStore(outputLayerPath, sourceProjection);
336
//        } catch (Exception e) {
337
//            throw new LrsGettingParametersException(new StringBuilder().append("Error getting feature store from ")
338
//                .append(outputLayerPath).toString(), e);
339
//        }
340
//        params.setOutputFeatureStore(outputFeatoreStore);
341
        // FIN DE Crear un SHP a partir de la ruta y de y pasar el featureStore
342

    
343
//        LrsMeasureCalculationMethods measureCalculationMethods = (LrsMeasureCalculationMethods) this.cmbMeasureCalcMethod.getSelectedItem();
344
//        params.setMeasureCalculationMethods(measureCalculationMethods);
345
//        DistanceUnits measureUnits = (DistanceUnits) this.cmbMeasureUnits.getSelectedItem();
346
//        params.setMeasureUnits(measureUnits);
347
//
348
//
349
//        Double searchRadius = (Double) this.txtSearchRadius.getValue();
350
//        params.setSearchRadius(searchRadius);
351
//
352
//        params.setInterpolateBetweenCalibrationPoints(this.chkInterpolateBetweenCalibrationPoints.isSelected());
353
//        params.setExtrapolateBeforeCalibrationPoints(this.chkExtrapolateBeforeCalibrationPoints.isSelected());
354
//        params.setExtrapolateAfterCalibrationPoints(this.chkExtrapolateAfterCalibrationPoints.isSelected());
355
//        params.setIgnoreSpatialGaps(this.chkIgnoreSpatialGaps.isSelected());
356
//        params.setIncludeAll(this.chkIncludeAll.isSelected());
357

    
358
        return params;
359
    }
360

    
361
    public void setParams(LrsAlgorithmParams params) {
362
//        if (params == null) {
363
//            clear();
364
//            return;
365
//        }
366
//        // Rellena los campos con los valores de params
367
//        LrsCalibrateRouteAlgorithmParams parameters = (LrsCalibrateRouteAlgorithmParams) params;
368
//
369
//        this.cmbMeasureCalcMethod.setSelectedItem(parameters.getMeasureCalculationMethods());
370
//        this.cmbMeasureUnits.setSelectedItem(parameters.getMeasureUnits());
371
//
372
//        // FIXME: rellenar ?C?mo?
373
//        FeatureStore sourceFeatureStore = parameters.getSourceFeatureStore();
374
//        if(layers!=null){
375
//            FLayer layer = layers.getLayer(sourceFeatureStore.getName());
376
//            this.cmbInputLayer.setSelectedItem(layer);
377
//        }
378
//        FeatureStore calibratePointFeaturesStore=parameters.getCalibratePointFeatureStore();
379
//        if(layers!=null){
380
//            FLayer layer = layers.getLayer(calibratePointFeaturesStore.getName());
381
//            this.cmbCalibratePointLayer.setSelectedItem(layer);
382
//        }
383
//        NewFeatureStoreParameters newFeatureStoreParameters = parameters.getNewFeatureStoreParameters();
384
//        if(newFeatureStoreParameters instanceof SHPNewStoreParameters){
385
//            this.txtOutputFile.setText(((SHPNewStoreParameters)newFeatureStoreParameters).getSHPFile().getAbsolutePath());
386
//        }
387
//
388
//        //FIN DEL FIXME
389
//
390
//        this.cmbIdRouteField.setSelectedItem(parameters.getIdRouteField());
391
//        this.cmbCalibrationPointIdRouteField.setSelectedItem(parameters.getCalibratePointIdRouteField());
392
//        this.cmbFromMeasureField.setSelectedItem(parameters.getFromMeasureField());
393
//
394
//        this.txtSearchRadius.setValue(parameters.getSearchRadius());
395
//        this.chkInterpolateBetweenCalibrationPoints.setSelected(parameters.interpolateBetweenCalibrationPoints());
396
//        this.chkExtrapolateBeforeCalibrationPoints.setSelected(parameters.extrapolateBeforeCalibrationPoints());
397
//        this.chkExtrapolateAfterCalibrationPoints.setSelected(parameters.extrapolateAfterCalibrationPoints());
398
//        this.chkIgnoreSpatialGaps.setSelected(parameters.ignoreSpatialGaps());
399
//        this.chkIncludeAll.setSelected(parameters.includeAll());
400

    
401
    }
402

    
403
    public void clear() {
404
//        this.txtOutputFile.setText("");
405
//        this.txtSearchRadius.setValue(0.0);
406
//
407
//        this.cmbInputLayer.setSelectedIndex(0);
408
//        Object inputLayerSelected = this.cmbInputLayer.getSelectedItem();
409
//        if (inputLayerSelected != null) {
410
//            this.updateLayerSource((FLyrVect) inputLayerSelected);
411
//        }
412
//        this.cmbCalibratePointLayer.setSelectedIndex(0);
413
//        Object calibratePointLayerSelected = this.cmbCalibratePointLayer.getSelectedItem();
414
//        if (calibratePointLayerSelected != null) {
415
//            this.updateLayerCalibratePoint((FLyrVect) calibratePointLayerSelected);
416
//        }
417
//        this.cmbIdRouteField.setSelectedIndex(0);
418
//        this.cmbCalibrationPointIdRouteField.setSelectedIndex(0);
419
//        this.cmbFromMeasureField.setSelectedIndex(0);
420
//        this.cmbMeasureCalcMethod.setSelectedIndex(0);
421
//        this.cmbMeasureUnits.setSelectedIndex(0);
422
//        this.chkInterpolateBetweenCalibrationPoints.setSelected(false);
423
//        this.chkExtrapolateBeforeCalibrationPoints.setSelected(false);
424
//        this.chkExtrapolateAfterCalibrationPoints.setSelected(false);
425
//        this.chkIgnoreSpatialGaps.setSelected(false);
426
//        this.chkIncludeAll.setSelected(false);
427

    
428
    }
429

    
430
    private void updateLayerSource(FLyrVect layer) {
431
        logger.info(new StringBuilder().append("Setting layer ").append(layer.getName()).toString());
432
        FeatureStore featureStore = layer.getFeatureStore();
433
        try {
434
            FeatureType type = featureStore.getDefaultFeatureType();
435
            // Se renuevan los combos de attributeDescriptors
436
            FeatureAttributeDescriptorsComboBoxModel idRouteFieldComboBoxModel =
437
                new FeatureAttributeDescriptorsComboBoxModel();
438

    
439
            this.cmbIdRouteField.setModel(idRouteFieldComboBoxModel);
440

    
441
            FeatureAttributeDescriptor[] attributeDescriptors = type.getAttributeDescriptors();
442
            for (int i = 0; i < attributeDescriptors.length; i++) {
443
                FeatureAttributeDescriptor featureAttributeDescriptor = attributeDescriptors[i];
444
                if (featureAttributeDescriptor.getDataType().getType() != DataTypes.GEOMETRY) {
445
                    logger.info(new StringBuilder().append("Adding field ")
446
                        .append(featureAttributeDescriptor.getName()).toString());
447

    
448
                    JLrsGenerateDynamicSegmentationParamsController.this.cmbIdRouteField.addItem(featureAttributeDescriptor);
449
                }
450
            }
451
            this.cmbIdRouteField.invalidate();
452

    
453
        } catch (DataException e1) {
454
            logger.warn(
455
                new StringBuilder().append("Error getting default feature type from layer ").append(layer.getName())
456
                    .toString(), e1);
457
        }
458
    }
459

    
460

    
461

    
462
    private void updateLayerTable(FLyrVect layer) {
463
//        logger.info(new StringBuilder().append("Setting layer ").append(layer.getName()).toString());
464
//        FeatureStore featureStore = layer.getFeatureStore();
465
//        try {
466
//            FeatureType type = featureStore.getDefaultFeatureType();
467
//            // Se renuevan los combos de attributeDescriptors
468
//            FeatureAttributeDescriptorsComboBoxModel calibrationPointIdRouteFieldComboBoxModel =
469
//                new FeatureAttributeDescriptorsComboBoxModel();
470
//            FeatureAttributeDescriptorsComboBoxModel fromMeasureFieldComboBoxModel =
471
//                new FeatureAttributeDescriptorsComboBoxModel();
472
//
473
//            this.cmbCalibrationPointIdRouteField.setModel(calibrationPointIdRouteFieldComboBoxModel);
474
//            this.cmbFromMeasureField.setModel(fromMeasureFieldComboBoxModel);
475
//
476
//            FeatureAttributeDescriptor[] attributeDescriptors = type.getAttributeDescriptors();
477
//            for (int i = 0; i < attributeDescriptors.length; i++) {
478
//                FeatureAttributeDescriptor featureAttributeDescriptor = attributeDescriptors[i];
479
//                if (featureAttributeDescriptor.getDataType().getType() != DataTypes.GEOMETRY) {
480
//                    logger.info(new StringBuilder().append("Adding field ")
481
//                        .append(featureAttributeDescriptor.getName()).toString());
482
//
483
//                    JLrsGenerateDynamicSegmentationParamsController.this.cmbCalibrationPointIdRouteField.addItem(featureAttributeDescriptor);
484
//                    if (featureAttributeDescriptor.getDataType().isNumeric()) {
485
//                        JLrsGenerateDynamicSegmentationParamsController.this.cmbFromMeasureField.addItem(featureAttributeDescriptor);
486
//                    }
487
//                }
488
//            }
489
//            this.cmbCalibrationPointIdRouteField.invalidate();
490
//            this.cmbFromMeasureField.invalidate();
491
//
492
//        } catch (DataException e1) {
493
//            logger.warn(
494
//                new StringBuilder().append("Error getting default feature type from layer ").append(layer.getName())
495
//                    .toString(), e1);
496
//        }
497
    }
498

    
499

    
500
    protected FeatureStore getFeatureStore(String outputLayerPath, IProjection projection) throws Exception {
501

    
502
        DataManager dataManager = DALLocator.getDataManager();
503
        DataStoreParameters dataStoreParams = dataManager.createStoreParameters("Shape");
504
        dataStoreParams.setDynValue("shpfile", outputLayerPath);
505
        dataStoreParams.setDynValue("CRS", projection);
506
        dataStoreParams.setDynValue("useNullGeometry", false);
507
        dataStoreParams.validate();
508

    
509
        return (FeatureStore) dataManager.openStore("Shape", dataStoreParams);
510
    }
511

    
512
}