Revision 47701 trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.app/org.gvsig.app.mainplugin/src/main/java/org/gvsig/app/extension/copytable/CopyTable2Panel.java

View differences:

CopyTable2Panel.java
17 17
import javax.swing.ListSelectionModel;
18 18
import javax.swing.SwingUtilities;
19 19
import javax.swing.event.ChangeEvent;
20
import javax.swing.event.ChangeListener;
21 20
import javax.swing.event.TreeSelectionEvent;
22 21
import javax.swing.table.AbstractTableModel;
23 22
import javax.swing.table.DefaultTableColumnModel;
......
87 86
    private BookmarksController bookmarksController;
88 87
    private HistoryController historyController;
89 88
    private ExpressionPickerController pickerJoinExpression;
89
    private DataSwingManager dataSwingManager;
90 90

  
91 91

  
92 92
    private class FeatureAttributeCellEditor extends AbstractCellEditor implements TableCellEditor {
......
163 163
        
164 164
        private class Row {
165 165
            String attrname;
166
            String attrlabel;
166 167
            String expression;
167 168
            boolean update;
168 169
            
170
            public Row(String attrlabel, String attrname, String expression, boolean update) {
171
                this.attrlabel = attrlabel;
172
                this.attrname = attrname;
173
                this.expression = expression;
174
                this.update = update;
175
            }
176
            
169 177
            public Object get(int index) {
170 178
                switch(index) {
171 179
                    case 0:
172 180
                        return update;
173 181
                    case 1:
174
                        return attrname;
182
                        return attrlabel;
175 183
                    case 2:
176 184
                        return expression;
177 185
                    default:
......
185 193
                        this.update = (boolean) value;
186 194
                        break;
187 195
                    case 1:
188
                        this.attrname = (String) value;
196
                        this.attrlabel = (String) value;
189 197
                        break;
190 198
                    case 2:
191 199
                        this.expression = (String) value;
......
194 202
                        break;
195 203
                }
196 204
            }
205

  
206
            public String getAttrname() {
207
                return attrname;
208
            }
209

  
210
            public String getExpression() {
211
                return expression;
212
            }
213

  
214
            public boolean isUpdate() {
215
                return update;
216
            }
217

  
218
            private void setExpression(String expression) {
219
                this.expression = expression;
220
            }
221

  
222
            private void setUpdate(boolean update) {
223
                this.update = update;
224
            }
225

  
226
            private void setAttrname(String name) {
227
                this.attrname = name;
228
                this.attrlabel = name;
229
            }
197 230
        }
198 231
        
232
        
199 233
        public MyTableModel() {
200 234
            this.rows = new ArrayList<>();
201 235
            this.tableType = null;
202 236
            if( target!=null ) {
203 237
                this.tableType = target.getDefaultFeatureTypeQuietly();
204 238
                for (FeatureAttributeDescriptor targetAttr : tableType) {
205
                    Row row = new Row();
206
                    row.attrname = targetAttr.getName();
207

  
208
                    row.expression = getSourceExpression(row.attrname);
209
                    if( targetAttr.isComputed()) {
210
                        row.update = false;
211
                    } else {
212
                        row.update = true;
213
                    }
239
                    Row row = new Row(
240
                        getDataSwingManager().getAttributeDescriptorLabel(targetAttr),
241
                        targetAttr.getName(),
242
                        getSourceExpression(targetAttr.getName()),
243
                        !(targetAttr.isComputed())
244
                    );
214 245
                    this.rows.add(row);
215 246
                }
216 247
            }
217 248
            for (Row row : this.rows) {
218
                if(row.expression == null){
249
                if(row.getExpression() == null){
219 250
                    continue;
220 251
                }
221 252
//                Row first = null;
......
224 255
                    if(row == row1){
225 256
                        continue;
226 257
                    }
227
                    if(StringUtils.equalsIgnoreCase(row.expression, row1.expression)){
258
                    if(StringUtils.equalsIgnoreCase(row.getExpression(), row1.getExpression())){
228 259
//                        if(first == null){
229 260
//                            first = row;
230 261
//                        }
231 262
                        dup = true;
232
                        row1.expression = null;
263
                        row1.setExpression(null);
233 264
                    }
234 265
                }
235 266
//                if (first != null) {
236 267
//                    first.expression = null;
237 268
//                }
238 269
                if(dup){
239
                    row.expression = null;
270
                    row.setExpression(null);
240 271
                }
241 272
            }
242 273
            this.columnNames = new String[] {
......
251 282
            };
252 283
        }
253 284
        
254
        String getSourceExpression(String targetFieldName){
285
        final String getSourceExpression(String targetFieldName){
255 286
            FeatureType sourceType = source.getDefaultFeatureTypeQuietly();
256 287
            ExpressionBuilder expBuilder = source.createExpressionBuilder();
257 288
            Integer minDistance = Integer.MAX_VALUE;
......
310 341
                case 2:
311 342
                    return this.rows.get(rowIndex).get(columnIndex);
312 343
                case 1:
313
                    FeatureAttributeDescriptor attrdesc = this.tableType.getAttributeDescriptor(this.rows.get(rowIndex).attrname);
344
                    FeatureAttributeDescriptor attrdesc = this.tableType.getAttributeDescriptor(this.rows.get(rowIndex).getAttrname());
314 345
                    return attrdesc;
315 346
                default:
316 347
                    return null;
......
363 394
        this.initComponents();
364 395
    }
365 396

  
397
    private DataSwingManager getDataSwingManager() {
398
        if( this.dataSwingManager==null ) {
399
            this.dataSwingManager = DALSwingLocator.getSwingManager();
400
        }
401
        return this.dataSwingManager;
402
    }
403

  
366 404
    private void initComponents() {
367
        DataSwingManager dataSwingManager = DALSwingLocator.getSwingManager();
368 405
        ExpressionEvaluatorSwingManager expressionSwingManager = ExpressionEvaluatorSwingLocator.getManager();
369 406
        this.status = ToolsSwingLocator.getTaskStatusSwingManager().createTaskStatusController(lblStatusLabel, lblStatusMessage, pbStatus);
370 407
        
......
391 428
        this.historyController.addActionListener(bookmarksAndHistoryListener);
392 429
        this.bookmarksController.addActionListener(bookmarksAndHistoryListener);
393 430
        
394
        this.treeSourceTableController = dataSwingManager.createStoresRepositoryController(this.treeSourceTable);
431
        this.treeSourceTableController = getDataSwingManager().createStoresRepositoryController(this.treeSourceTable);
395 432
        this.treeSourceTable.addTreeSelectionListener((TreeSelectionEvent e) -> {
396 433
            doChangeSource();
397 434
            doUpdateComponents();
398 435
        });
399
        this.pickerSourceFieldJoin = dataSwingManager.createAttributeDescriptorPickerController(cboSourceJoinField);
436
        this.pickerSourceFieldJoin = getDataSwingManager().createAttributeDescriptorPickerController(cboSourceJoinField);
400 437
        this.pickerSourceFieldJoin.setAllowNull(true);
401 438
        this.pickerSourceFieldJoin.addChangeListener((ChangeEvent e) -> {
402 439
            doUpdateComponents();
403 440
        });
404 441

  
405
        this.treeTargetTableController = dataSwingManager.createStoresRepositoryController(this.treeTargetTable);
442
        this.treeTargetTableController = getDataSwingManager().createStoresRepositoryController(this.treeTargetTable);
406 443
        this.treeTargetTable.addTreeSelectionListener((TreeSelectionEvent e) -> {
407 444
            doChangeTarget();
408 445
            doUpdateComponents();
409 446
        });
410
        this.pickerTargetFieldJoin = dataSwingManager.createAttributeDescriptorPickerController(cboTargetJoinField);
447
        this.pickerTargetFieldJoin = getDataSwingManager().createAttributeDescriptorPickerController(cboTargetJoinField);
411 448
        this.pickerTargetFieldJoin.setAllowNull(true);
412 449
        this.pickerTargetFieldJoin.addChangeListener((ChangeEvent e) -> {
413 450
            doUpdateComponents();
......
467 504

  
468 505
        column = new TableColumn();
469 506
        column.setHeaderValue("Campo destino");
470
        column.setCellRenderer(dataSwingManager.createDefaultFeatureAttributeTableCellRenderer());
507
        column.setCellRenderer(getDataSwingManager().createDefaultFeatureAttributeTableCellRenderer());
471 508
        column.setCellEditor(null);
472 509
        column.setResizable(true);
473 510
        column.setModelIndex(1);
......
626 663
        }
627 664
        this.source = theSource;
628 665

  
629
        DataSwingManager dataSwingManager = DALSwingLocator.getSwingManager();
630
        dataSwingManager.resetExpressionBuilder(this.pickerTargetUpdateExpression.getConfig());
631
        dataSwingManager.resetExpressionBuilder(this.pickerJoinExpression.getConfig());
632
        dataSwingManager.addToExpressionBuilder(this.pickerTargetUpdateExpression.getConfig(), this.source, "source");
633
        dataSwingManager.addToExpressionBuilder(this.pickerJoinExpression.getConfig(), this.source, "source", true);
666
        getDataSwingManager().resetExpressionBuilder(this.pickerTargetUpdateExpression.getConfig());
667
        getDataSwingManager().resetExpressionBuilder(this.pickerJoinExpression.getConfig());
668
        getDataSwingManager().addToExpressionBuilder(this.pickerTargetUpdateExpression.getConfig(), this.source, "source");
669
        getDataSwingManager().addToExpressionBuilder(this.pickerJoinExpression.getConfig(), this.source, "source", true);
634 670

  
635 671
        this.pickerSourceFieldJoin.setFeatureType(this.source.getDefaultFeatureTypeQuietly());
636 672
        try {
......
641 677
        
642 678
        if( this.target!=null ) {
643 679
            this.tableFields.setModel(new MyTableModel());
644
            dataSwingManager.addToExpressionBuilder(this.pickerTargetUpdateExpression.getConfig(), this.target, "target");
645
            dataSwingManager.addToExpressionBuilder(this.pickerJoinExpression.getConfig(), this.target, "target");
680
            getDataSwingManager().addToExpressionBuilder(this.pickerTargetUpdateExpression.getConfig(), this.target, "target");
681
            getDataSwingManager().addToExpressionBuilder(this.pickerJoinExpression.getConfig(), this.target, "target");
646 682
        }
647 683
    }
648 684

  
......
655 691
            DisposeUtils.disposeQuietly(this.target);
656 692
        }
657 693
        this.target = theTarget;
658
        DataSwingManager dataSwingManager = DALSwingLocator.getSwingManager();
659
        dataSwingManager.resetExpressionBuilder(this.pickerTargetUpdateExpression.getConfig());
660
        dataSwingManager.resetExpressionBuilder(this.pickerJoinExpression.getConfig());
661
        dataSwingManager.addToExpressionBuilder(this.pickerTargetUpdateExpression.getConfig(), this.target, "target");
662
        dataSwingManager.addToExpressionBuilder(this.pickerJoinExpression.getConfig(), this.target, "target");
694
        getDataSwingManager().resetExpressionBuilder(this.pickerTargetUpdateExpression.getConfig());
695
        getDataSwingManager().resetExpressionBuilder(this.pickerJoinExpression.getConfig());
696
        getDataSwingManager().addToExpressionBuilder(this.pickerTargetUpdateExpression.getConfig(), this.target, "target");
697
        getDataSwingManager().addToExpressionBuilder(this.pickerJoinExpression.getConfig(), this.target, "target");
663 698
        
664 699
        this.pickerTargetFieldJoin.setFeatureType(this.target.getDefaultFeatureTypeQuietly());
665 700
        try {
......
670 705

  
671 706
        if( this.source!=null ) {
672 707
            this.tableFields.setModel(new MyTableModel());
673
            dataSwingManager.addToExpressionBuilder(this.pickerTargetUpdateExpression.getConfig(), this.source, "source");
674
            dataSwingManager.addToExpressionBuilder(this.pickerJoinExpression.getConfig(), this.source, "source", true);
708
            getDataSwingManager().addToExpressionBuilder(this.pickerTargetUpdateExpression.getConfig(), this.source, "source");
709
            getDataSwingManager().addToExpressionBuilder(this.pickerJoinExpression.getConfig(), this.source, "source", true);
675 710
        }
676 711
    }
677 712

  
......
767 802
        MyTableModel fieldsModel = new MyTableModel();
768 803
        this.tableFields.setModel(fieldsModel);
769 804
        for (MyTableModel.Row row : fieldsModel.rows) {
770
            ProcessFieldParameters paramfield = params.get(row.attrname);
771
            row.attrname = paramfield.getName();
805
            ProcessFieldParameters paramfield = params.get(row.getAttrname());
806
            row.setAttrname(paramfield.getName());
772 807
            Expression expression = paramfield.getExpression();
773 808
            if (expression != null) {
774
                row.expression = expression.getPhrase();
809
                row.setExpression(expression.getPhrase());
775 810
            } else {
776
                row.expression = null;
811
                row.setExpression(null);
777 812
            }
778
            row.update = paramfield.isCopyThisFieldActive();
813
            row.setUpdate(paramfield.isCopyThisFieldActive());
779 814
        }
780 815

  
781 816
        //Options
......
840 875
        MyTableModel model = (MyTableModel) this.tableFields.getModel();
841 876
        for (MyTableModel.Row row : model) {
842 877
            Expression exp = null;
843
            if( org.apache.commons.lang.StringUtils.isNotBlank(row.expression)) {
844
                exp = ExpressionUtils.createExpression(row.expression);
878
            if( org.apache.commons.lang.StringUtils.isNotBlank(row.getExpression())) {
879
                exp = ExpressionUtils.createExpression(row.getExpression());
845 880
            }
846
            params.add(row.attrname, row.update, exp);
881
            params.add(row.getAttrname(), row.isUpdate(), exp);
847 882
        }    
848 883
    }
849 884
    

Also available in: Unified diff