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

History | View | Annotate | Download (26 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.JComponent;
18
import javax.swing.JOptionPane;
19
import javax.swing.ListCellRenderer;
20

    
21
import org.apache.commons.io.FileUtils;
22
import org.apache.commons.lang3.StringUtils;
23
import org.cresques.cts.IProjection;
24
import org.slf4j.Logger;
25
import org.slf4j.LoggerFactory;
26

    
27
import org.gvsig.fmap.dal.exception.DataException;
28
import org.gvsig.fmap.dal.exception.ReadException;
29
import org.gvsig.fmap.dal.feature.FeatureAttributeDescriptor;
30
import org.gvsig.fmap.dal.feature.FeatureStore;
31
import org.gvsig.fmap.dal.feature.FeatureType;
32
import org.gvsig.fmap.dal.feature.NewFeatureStoreParameters;
33
import org.gvsig.fmap.dal.store.shp.SHPNewStoreParameters;
34
import org.gvsig.fmap.geom.DataTypes;
35
import org.gvsig.fmap.mapcontext.layers.FLayer;
36
import org.gvsig.fmap.mapcontext.layers.operations.LayerCollection;
37
import org.gvsig.fmap.mapcontext.layers.vectorial.FLyrVect;
38
import org.gvsig.lrs.lib.api.LrsAlgorithmParams;
39
import org.gvsig.lrs.lib.api.LrsAlgorithmsLocator;
40
import org.gvsig.lrs.lib.api.LrsAlgorithmsManager;
41
import org.gvsig.lrs.lib.api.LrsGenerateDynamicSegmentationAlgorithmParams;
42
import org.gvsig.lrs.lib.api.exceptions.LrsGettingParametersException;
43
import org.gvsig.lrs.lib.api.exceptions.LrsNeededParameterException;
44
import org.gvsig.lrs.swing.api.JLrsAlgorithmParams;
45
import org.gvsig.tools.ToolsLocator;
46
import org.gvsig.tools.i18n.I18nManager;
47
import org.gvsig.tools.swing.api.ActionListenerSupport;
48
import org.gvsig.tools.swing.api.ToolsSwingLocator;
49
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
50

    
51
public class JLrsGenerateDynamicSegmentationParamsController extends
52
    JLrsGenerateDynamicSegmentationParamsView implements JLrsAlgorithmParams {
53

    
54
    /**
55
     *
56
     */
57
    private static final long serialVersionUID = -5764089056918981236L;
58

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

    
62
    private boolean canceled;
63
    private ActionListenerSupport listeners =
64
        ToolsSwingLocator.getToolsSwingManager().createActionListenerSupport();
65

    
66
    private LayerCollection layers;
67
    private List<FeatureStore> tables;
68

    
69
    /**
70
     * @param layers
71
     * @throws LrsNeededParameterException
72
     *
73
     */
74
    public JLrsGenerateDynamicSegmentationParamsController(
75
        LayerCollection layers, List<FeatureStore> tables,
76
        LrsAlgorithmParams params) throws LrsNeededParameterException {
77
        super();
78
        this.layers = layers;
79
        this.tables = tables;
80
        initComponents();
81
        translate();
82
        setParams(params);
83
    }
84

    
85
    public void addActionListener(ActionListener listener) {
86
        listeners.addActionListener(listener);
87
    }
88

    
89
    public void removeActionListener(ActionListener listener) {
90
        listeners.removeActionListener(listener);
91
    }
92

    
93
    private void translate() {
94
        I18nManager i18nManager = ToolsLocator.getI18nManager();
95

    
96
        lblInputLayer
97
            .setText(i18nManager.getTranslation(lblInputLayer.getText()));
98
        lblIdRouteField
99
            .setText(i18nManager.getTranslation(lblIdRouteField.getText()));
100
        lblTable.setText(i18nManager.getTranslation(lblTable.getText()));
101
        lblTableIdRouteField.setText(
102
            i18nManager.getTranslation(lblTableIdRouteField.getText()));
103
        lblLandmarkField
104
            .setText(i18nManager.getTranslation(lblLandmarkField.getText()));
105
        lblFinalLandmarkField.setText(
106
            i18nManager.getTranslation(lblFinalLandmarkField.getText()));
107
        lblValueField
108
            .setText(i18nManager.getTranslation(lblValueField.getText()));
109
        lblOutputFile
110
            .setText(i18nManager.getTranslation(lblOutputFile.getText()));
111

    
112
        btnBrowser.setText("\u2026");
113
        btnAccept.setText(i18nManager.getTranslation(btnAccept.getText()));
114
        btnCancel.setText(i18nManager.getTranslation(btnCancel.getText()));
115

    
116
    }
117

    
118
    /**
119
     *
120
     */
121
    public void setLocate(Locale locale) {
122
        Locale l = super.getLocale();
123
        if (!l.equals(locale)) {
124
            translate();
125
        }
126
        super.setLocale(locale);
127
    }
128

    
129
    /**
130
     * Validates it is a curve layer with at least 1 non-geometric
131
     * field
132
     * if it is not correct throws an exception
133
     *
134
     * @throws LrsNeededParameterException
135
     * @throws ReadException
136
     */
137
    public static void validateLayers(LayerCollection layers)
138
        throws LrsNeededParameterException {
139
        logger.debug("Validating layer for Generate Dynamic Segmentation");
140
        if (layers == null || layers.getLayersCount() < 1) {
141
            logger.error("A layer is needed");
142
            throw new LrsNeededParameterException("a_layer_is_needed", null);
143
        }
144

    
145
        if (!JLrsUtils.validateMLayerWithNonGeomField(layers)) {
146
            logger.error("Impossible to find the layer needed");
147
            throw new LrsNeededParameterException(
148
                "impossible_to_find_needed_layer", null);
149
        }
150
    }
151

    
152
    /**
153
     * Validates if there is a valid table:
154
     * - at least two fields
155
     * - one of them is numeric
156
     * if can't find any throws an exception
157
     *
158
     * @throws LrsNeededParameterException
159
     * @throws ReadException
160
     */
161
    public static void validateTables(List<FeatureStore> tables)
162
        throws LrsNeededParameterException {
163
        logger.debug("Validating tables for Generate Dynamic Segmentation");
164
        if (tables == null || tables.size() < 1) {
165
            logger.error("A table is needed");
166
            throw new LrsNeededParameterException("a_table_is_needed", null);
167
        }
168

    
169
        if (!JLrsUtils.validateStoreWithFieldsAndOneNumeric(tables)) {
170
            logger.error("Impossible to find the layer needed");
171
            throw new LrsNeededParameterException(
172
                "impossible_to_find_needed_layer", null);
173
        }
174
    }
175

    
176
    /**
177
     * @throws LrsNeededParameterException
178
     */
179
    private void initComponents() throws LrsNeededParameterException {
180

    
181
        validateLayers(layers);
182
        validateTables(tables);
183

    
184
        // Modelos de los combos
185
        FLayersMComboBoxModel inputLayerModel =
186
            new FLayersMComboBoxModel(this.layers);
187
        FeatureAttributeDescriptorsComboBoxModel idRouteFieldComboBoxModel =
188
            new FeatureAttributeDescriptorsComboBoxModel();
189

    
190
        FeatureStoresComboBoxModel tableLayerModel =
191
            new FeatureStoresComboBoxModel(this.tables);
192

    
193
        FeatureAttributeDescriptorsComboBoxModel tableIdRouteFieldComboBoxModel =
194
            new FeatureAttributeDescriptorsComboBoxModel();
195
        FeatureAttributeDescriptorsComboBoxModel landmarkComboBoxModel =
196
            new FeatureAttributeDescriptorsComboBoxModel();
197
        FeatureAttributeDescriptorsComboBoxModel finalLandmarkComboBoxModel =
198
            new FeatureAttributeDescriptorsComboBoxModel();
199
        FeatureAttributeDescriptorsComboBoxModel valueComboBoxModel =
200
            new FeatureAttributeDescriptorsComboBoxModel();
201

    
202
        // Renderer para los combos de attributeDescriptors
203
        ListCellRenderer featureAttributeDescriptorCellRenderer =
204
            new FLayersAttributeDescriptorCellRenderer();
205
        // asignaci?n de renderers y modelos
206
        cmbIdRouteField.setRenderer(featureAttributeDescriptorCellRenderer);
207
        cmbTableIdRouteField
208
            .setRenderer(featureAttributeDescriptorCellRenderer);
209
        cmbLandmarkField.setRenderer(featureAttributeDescriptorCellRenderer);
210
        cmbFinalLandmarkField
211
            .setRenderer(featureAttributeDescriptorCellRenderer);
212
        cmbValueField.setRenderer(featureAttributeDescriptorCellRenderer);
213
        cmbIdRouteField.setModel(idRouteFieldComboBoxModel);
214
        cmbTableIdRouteField.setModel(tableIdRouteFieldComboBoxModel);
215
        cmbLandmarkField.setModel(landmarkComboBoxModel);
216
        cmbFinalLandmarkField.setModel(finalLandmarkComboBoxModel);
217
        cmbValueField.setModel(valueComboBoxModel);
218

    
219
        // renderer para el combo de capas
220
        ListCellRenderer layerNameCellRenderer =
221
            new FLayersLayerNameCellRenderer();
222
        ListCellRenderer featureStorerNameCellRenderer =
223
            new FeatureStoreNameCellRenderer();
224
        cmbInputLayer.setRenderer(layerNameCellRenderer);
225
        cmbTable.setRenderer(featureStorerNameCellRenderer);
226
        // asignaci?n modelo al combo de capas
227
        cmbInputLayer.setModel(inputLayerModel);
228
        cmbTable.setModel(tableLayerModel);
229

    
230
        // listener del combo de capas para que actualice el resto de componentes
231
        cmbInputLayer.addItemListener(new ItemListener() {
232

    
233
            public void itemStateChanged(ItemEvent e) {
234
                Object item = e.getItem();
235
                if (item instanceof FLyrVect) {
236
                    FLyrVect layer = (FLyrVect) item;
237
                    updateLayerSource(layer);
238
                }
239
            }
240
        });
241
        cmbTable.addItemListener(new ItemListener() {
242

    
243
            public void itemStateChanged(ItemEvent e) {
244
                Object item = e.getItem();
245
                if (item instanceof FeatureStore) {
246
                    FeatureStore featureStore = (FeatureStore) item;
247
                    updateTable(featureStore);
248
                    clearTableFields();
249
                }
250
            }
251
        });
252

    
253
        this.btnBrowser.addActionListener(new ActionListener() {
254

    
255
            public void actionPerformed(ActionEvent e) {
256
                doSelectOuputFile();
257
            }
258
        });
259

    
260
        this.btnAccept.addActionListener(new ActionListener() {
261

    
262
            public void actionPerformed(ActionEvent e) {
263
                canceled = false;
264
                doClose();
265
                listeners.fireActionEvent(new ActionEvent(
266
                    JLrsGenerateDynamicSegmentationParamsController.this, 0,
267
                    "accept"));
268

    
269
            }
270
        });
271

    
272
        this.btnCancel.addActionListener(new ActionListener() {
273

    
274
            public void actionPerformed(ActionEvent e) {
275
                canceled = true;
276
                doClose();
277
                listeners.fireActionEvent(new ActionEvent(
278
                    JLrsGenerateDynamicSegmentationParamsController.this, 0,
279
                    "cancel"));
280
            }
281
        });
282

    
283
        setVisibleAceptCancel(false);
284
        canceled = false;
285
    }
286

    
287
    private void doSelectOuputFile() {
288
        final I18nManager i18nManager = ToolsLocator.getI18nManager();
289
        ThreadSafeDialogsManager manager =
290
            ToolsSwingLocator.getThreadSafeDialogsManager();
291
        File[] files = manager.showSaveFileDialog(
292
            i18nManager.getTranslation("output_file"), null);
293
        if (files != null && files.length > 0) {
294
            File file = files[0];
295
            String absolutePath = file.getAbsolutePath();
296
            if (!StringUtils.endsWithIgnoreCase(absolutePath, ".shp")) {
297
                absolutePath = new StringBuilder().append(absolutePath)
298
                    .append(".shp").toString();
299
            }
300
            File outputFile = FileUtils.getFile(absolutePath);
301
            if (outputFile.exists()) {
302
                int resp = JOptionPane.showOptionDialog(this.asJComponent(),
303
                    i18nManager.getTranslation(
304
                        "file_already_exists_do_you_want_overwrite_it"),
305
                    i18nManager.getTranslation("output_file"),
306
                    JOptionPane.OK_CANCEL_OPTION, JOptionPane.QUESTION_MESSAGE,
307
                    null, null, JOptionPane.OK_OPTION);
308
                if (resp == JOptionPane.OK_OPTION) {
309
                    this.txtOutputFile.setText(absolutePath);
310
                } else {
311
                    doSelectOuputFile();
312
                }
313
            } else {
314
                this.txtOutputFile.setText(absolutePath);
315
            }
316
        }
317

    
318
    }
319

    
320
    private void doClose() {
321
        this.setVisible(false);
322
    }
323

    
324
    public boolean isCanceled() {
325
        return this.canceled;
326
    }
327

    
328
    public void setVisibleAceptCancel(boolean visible) {
329
        this.btnAccept.setVisible(visible);
330
        this.btnCancel.setVisible(visible);
331
    }
332

    
333
    public boolean getVisibleAceptCancel() {
334
        return this.btnAccept.isVisible();
335
    }
336

    
337
    public JComponent asJComponent() {
338
        return this;
339
    }
340

    
341
    public LrsAlgorithmParams getParams()  throws LrsGettingParametersException, LrsNeededParameterException {
342
        LrsAlgorithmsManager manager = LrsAlgorithmsLocator.getLrsAlgorithmsManager();
343
        LrsGenerateDynamicSegmentationAlgorithmParams params =manager.createLrsGenerateDynamicSegmentationAlgorithmParams();
344

    
345
        // Recorrer todo del interfaz y rellenar los parametros
346

    
347
        //cmbInputLayer
348
        if (!(this.cmbInputLayer.getSelectedItem() instanceof FLyrVect)){
349
            logger.error("Error getting selected item from cmbInputLayer");
350
            throw new LrsGettingParametersException("error_getting_selected_item_from_cmbInputLayer", null);
351
        }
352
        FLyrVect fLyrVect = (FLyrVect) this.cmbInputLayer.getSelectedItem();
353
        IProjection projection= fLyrVect.getProjection();
354
        if (!(fLyrVect.getFeatureStore() instanceof FeatureStore)){
355
            logger.error("Error getting selected item from cmbInputLayer");
356
            throw new LrsGettingParametersException("error_getting_selected_item_from_cmbInputLayer", null);
357
        }
358
        FeatureStore sourceFeatureStore = (FeatureStore)fLyrVect.getFeatureStore();
359
        if (sourceFeatureStore == null) {
360
            throw new LrsNeededParameterException("need_to_select_a_source_layer", null);
361
        }
362
        params.setSourceFeatureStore(sourceFeatureStore);
363

    
364
        //cmbIdRouteField
365
        if (!(this.cmbIdRouteField.getSelectedItem() instanceof FeatureAttributeDescriptor)){
366
            logger.error("Error getting selected item from cmbIdRouteField");
367
            throw new LrsGettingParametersException("error_getting_selected_item_from_cmbIdRouteField", null);
368
        }
369
        FeatureAttributeDescriptor idRouteField = (FeatureAttributeDescriptor) this.cmbIdRouteField.getSelectedItem();
370
        if (idRouteField == null) {
371
            throw new LrsNeededParameterException("need_to_select_a_route_identifier_field", null);
372
        }
373
        params.setIdRouteField(idRouteField);
374

    
375
        //cmbTable
376
        if (!(this.cmbTable.getSelectedItem() instanceof FeatureStore)){
377
            logger.error("Error getting selected item from cmbTable");
378
            throw new LrsGettingParametersException("error_getting_selected_item_from_cmbTable", null);
379
        }
380
        FeatureStore tableFeatureStore = (FeatureStore) this.cmbTable.getSelectedItem();
381
        if (tableFeatureStore == null) {
382
            throw new LrsNeededParameterException("need_to_select_a_table", null);
383
        }
384
        params.setValueTableFeatureStore(tableFeatureStore);
385

    
386
        //cmbTableIdRouteField
387
        if (!(this.cmbTableIdRouteField.getSelectedItem() instanceof FeatureAttributeDescriptor)){
388
            logger.error("Error getting selected item from cmbTableIdRouteField");
389
            throw new LrsGettingParametersException("error_getting_selected_item_from_cmbTableIdRouteField", null);
390
        }
391
        FeatureAttributeDescriptor tableIdRouteField = (FeatureAttributeDescriptor) this.cmbTableIdRouteField.getSelectedItem();
392
        params.setValueTableIdRouteField(tableIdRouteField);
393

    
394
        //cmbLandmarkField
395
        if (!(this.cmbLandmarkField.getSelectedItem() instanceof FeatureAttributeDescriptor)){
396
            logger.error("Error getting selected item from cmbLandmarkField");
397
            throw new LrsGettingParametersException("error_getting_selected_item_from_cmbLandmarkField", null);
398
        }
399
        FeatureAttributeDescriptor landmarkField = (FeatureAttributeDescriptor) this.cmbLandmarkField.getSelectedItem();
400
        if (landmarkField == null) {
401
            throw new LrsNeededParameterException("need_to_select_a_landmark_field", null);
402
        }
403
        params.setLandmarkField(landmarkField);
404

    
405
        //cmbFinalLandmarkField
406
        if (this.cmbFinalLandmarkField.getSelectedItem()!=null && !(this.cmbFinalLandmarkField.getSelectedItem() instanceof FeatureAttributeDescriptor)){
407
            logger.error("Error getting selected item from cmbFinalLandmarkField");
408
            throw new LrsGettingParametersException("error_getting_selected_item_from_cmbFinalLandmarkField", null);
409
        }
410
        FeatureAttributeDescriptor finalLandmarkField = (FeatureAttributeDescriptor) this.cmbFinalLandmarkField.getSelectedItem();
411
        params.setFinalLandmarkField(finalLandmarkField);
412

    
413
        //cmbValue
414
        if (!(this.cmbValueField.getSelectedItem() instanceof FeatureAttributeDescriptor)){
415
            logger.error("Error getting selected item from cmbValueField");
416
            throw new LrsGettingParametersException("error_getting_selected_item_from_cmbValueField", null);
417
        }
418
        FeatureAttributeDescriptor valueField = (FeatureAttributeDescriptor) this.cmbValueField.getSelectedItem();
419
        if (valueField == null) {
420
            throw new LrsNeededParameterException("need_to_select_a_value_field", null);
421
        }
422
        params.setValueField(valueField);
423

    
424
        //OutputStore
425
        String outputLayerPathFile = this.txtOutputFile.getText();
426
        if(StringUtils.isEmpty(outputLayerPathFile)){
427
            throw new LrsNeededParameterException("need_to_fill_the_target_path", null);
428
        }
429
        try {
430
            NewFeatureStoreParameters newFeatureStoreParams=JLrsUtils.createFeatureStoreParams(outputLayerPathFile, projection);
431
            params.setNewFeatureStoreParameters(newFeatureStoreParams);
432
        } catch (Exception e) {
433
            throw new LrsNeededParameterException("error_creating_outputStore", e);
434
        }
435

    
436
        return params;
437
    }
438

    
439
    public void setParams(LrsAlgorithmParams params) {
440
        if (params == null) {
441
            clear();
442
            return;
443
        }
444
        // Rellena los campos con los valores de params
445
        LrsGenerateDynamicSegmentationAlgorithmParams parameters = (LrsGenerateDynamicSegmentationAlgorithmParams) params;
446

    
447
        FeatureStore sourceFeatureStore = parameters.getSourceFeatureStore();
448
        if(layers!=null && sourceFeatureStore!=null){
449
            FLayer layer = layers.getLayer(sourceFeatureStore.getName());
450
            this.cmbInputLayer.setSelectedItem(layer);
451
        }
452

    
453
        FeatureStore tableFeaturesStore=parameters.getValueTableFeatureStore();
454
        if(tables!=null && tableFeaturesStore!=null){
455
            this.cmbTable.setSelectedItem(tableFeaturesStore.getName());
456
        }
457

    
458
        NewFeatureStoreParameters newFeatureStoreParameters = parameters.getNewFeatureStoreParameters();
459
        if(newFeatureStoreParameters!=null && newFeatureStoreParameters instanceof SHPNewStoreParameters){
460
            this.txtOutputFile.setText(((SHPNewStoreParameters)newFeatureStoreParameters).getSHPFile().getAbsolutePath());
461
        }
462

    
463
        this.cmbIdRouteField.setSelectedItem(parameters.getIdRouteField());
464
        this.cmbTableIdRouteField.setSelectedItem(parameters.getValueTableIdRouteField());
465
        this.cmbLandmarkField.setSelectedItem(parameters.getLandmarkField());
466
        this.cmbFinalLandmarkField.setSelectedItem(parameters.getFinalLandmarkField());
467
        this.cmbValueField.setSelectedItem(parameters.getValueField());
468

    
469
    }
470

    
471
    public void clear() {
472
        this.txtOutputFile.setText("");
473

    
474
        this.cmbInputLayer.setSelectedIndex(0);
475
        Object inputLayerSelected = this.cmbInputLayer.getSelectedItem();
476
        if (inputLayerSelected != null) {
477
            this.updateLayerSource((FLyrVect) inputLayerSelected);
478
        }
479
        if (this.cmbIdRouteField.getItemCount() > 0) {
480
            this.cmbIdRouteField.setSelectedIndex(0);
481
        }
482
        this.cmbTable.setSelectedIndex(0);
483
        Object tableSelected = this.cmbTable.getSelectedItem();
484
        if (tableSelected != null) {
485
            this.updateTable((FeatureStore) tableSelected);
486
        }
487
        clearTableFields();
488
    }
489

    
490
    /**
491
     *
492
     */
493
    private void clearTableFields() {
494
        logger.info(String.valueOf(this.cmbTableIdRouteField.getItemCount()));
495
        if (this.cmbTableIdRouteField.getItemCount() > 0) {
496
            this.cmbTableIdRouteField.setSelectedIndex(0);
497
        }
498
        logger.info(String.valueOf(this.cmbLandmarkField.getItemCount()));
499
        if (this.cmbLandmarkField.getItemCount() > 0) {
500
            this.cmbLandmarkField.setSelectedIndex(0);
501
        }
502
        logger.info(String.valueOf(this.cmbFinalLandmarkField.getItemCount()));
503
        this.cmbFinalLandmarkField.setSelectedIndex(-1);
504

    
505
        logger.info(String.valueOf(this.cmbValueField.getItemCount()));
506
        if (this.cmbValueField.getItemCount() > 0) {
507
            this.cmbValueField.setSelectedIndex(0);
508
        }
509
        this.cmbTableIdRouteField.repaint();
510
        this.cmbLandmarkField.repaint();
511
        this.cmbFinalLandmarkField.repaint();
512
        this.cmbValueField.repaint();
513

    
514
    }
515

    
516
    private void updateLayerSource(FLyrVect layer) {
517
        logger.info(new StringBuilder().append("Setting layer ")
518
            .append(layer.getName()).toString());
519
        FeatureStore featureStore = layer.getFeatureStore();
520
        try {
521
            FeatureType type = featureStore.getDefaultFeatureType();
522
            // Se renuevan los combos de attributeDescriptors
523
            FeatureAttributeDescriptorsComboBoxModel idRouteFieldComboBoxModel =
524
                new FeatureAttributeDescriptorsComboBoxModel();
525

    
526
            this.cmbIdRouteField.setModel(idRouteFieldComboBoxModel);
527

    
528
            FeatureAttributeDescriptor[] attributeDescriptors =
529
                type.getAttributeDescriptors();
530
            for (int i = 0; i < attributeDescriptors.length; i++) {
531
                FeatureAttributeDescriptor featureAttributeDescriptor =
532
                    attributeDescriptors[i];
533
                if (featureAttributeDescriptor.getDataType()
534
                    .getType() != DataTypes.GEOMETRY) {
535
                    logger.info(new StringBuilder().append("Adding field ")
536
                        .append(featureAttributeDescriptor.getName())
537
                        .toString());
538

    
539
                    JLrsGenerateDynamicSegmentationParamsController.this.cmbIdRouteField
540
                        .addItem(featureAttributeDescriptor);
541
                }
542
            }
543
            this.cmbIdRouteField.invalidate();
544

    
545
        } catch (DataException e1) {
546
            logger.warn(new StringBuilder()
547
                .append("Error getting default feature type from layer ")
548
                .append(layer.getName()).toString(), e1);
549
        }
550
    }
551

    
552
    private void updateTable(FeatureStore featureStore) {
553
        logger.info(new StringBuilder().append("Setting featureStore ")
554
            .append(featureStore.getName()).toString());
555
        try {
556
            FeatureType type = featureStore.getDefaultFeatureType();
557
            // Se renuevan los combos de attributeDescriptors
558
            FeatureAttributeDescriptorsComboBoxModel tableIdRouteComboBoxModel =
559
                new FeatureAttributeDescriptorsComboBoxModel();
560
            FeatureAttributeDescriptorsComboBoxModel landmarkComboBoxModel =
561
                new FeatureAttributeDescriptorsComboBoxModel();
562
            FeatureAttributeDescriptorsComboBoxModel finalLandmarkComboBoxModel =
563
                new FeatureAttributeDescriptorsComboBoxModel();
564
            FeatureAttributeDescriptorsComboBoxModel valueComboBoxModel =
565
                new FeatureAttributeDescriptorsComboBoxModel();
566

    
567
            this.cmbTableIdRouteField.setModel(tableIdRouteComboBoxModel);
568
            this.cmbLandmarkField.setModel(landmarkComboBoxModel);
569
            this.cmbFinalLandmarkField.setModel(finalLandmarkComboBoxModel);
570
            this.cmbValueField.setModel(valueComboBoxModel);
571

    
572
            // Renderer para los combos de attributeDescriptors
573
            ListCellRenderer featureAttributeDescriptorCellRenderer =
574
                new FLayersAttributeDescriptorCellRenderer();
575
            // asignaci?n de renderers
576
            cmbTableIdRouteField
577
                .setRenderer(featureAttributeDescriptorCellRenderer);
578
            cmbLandmarkField.setRenderer(featureAttributeDescriptorCellRenderer);
579
            cmbFinalLandmarkField
580
                .setRenderer(featureAttributeDescriptorCellRenderer);
581
            cmbValueField.setRenderer(featureAttributeDescriptorCellRenderer);
582

    
583
            this.cmbFinalLandmarkField.insertItemAt(null,0);
584

    
585
            FeatureAttributeDescriptor[] attributeDescriptors = type.getAttributeDescriptors();
586
            for (int i = 0; i<attributeDescriptors.length; i++) {
587
                FeatureAttributeDescriptor featureAttributeDescriptor =
588
                    attributeDescriptors[i];
589
                if (featureAttributeDescriptor.getDataType().getType() != DataTypes.GEOMETRY) {
590
                    logger.info(new StringBuilder().append("0 - Adding field ")
591
                        .append(featureAttributeDescriptor.getName())
592
                        .toString());
593

    
594
                    JLrsGenerateDynamicSegmentationParamsController.this.cmbTableIdRouteField.addItem(featureAttributeDescriptor);
595
                    JLrsGenerateDynamicSegmentationParamsController.this.cmbValueField.addItem(featureAttributeDescriptor);
596
                    if (featureAttributeDescriptor.getDataType().isNumeric()) {
597
                        JLrsGenerateDynamicSegmentationParamsController.this.cmbLandmarkField.addItem(featureAttributeDescriptor);
598
                        JLrsGenerateDynamicSegmentationParamsController.this.cmbFinalLandmarkField.addItem(featureAttributeDescriptor);
599
                    }
600
                    logger.info(new StringBuilder().append("1 - Adding field ")
601
                        .append(featureAttributeDescriptor.getName())
602
                        .toString());
603
                }
604
            }
605
        } catch (DataException e1) {
606
            logger
607
                .warn(new StringBuilder()
608
                    .append(
609
                        "Error getting default feature type from featureStore ")
610
                    .append(featureStore.getName()).toString(), e1);
611
        }
612
    }
613
}