Revision 47486 trunk/org.gvsig.desktop/org.gvsig.desktop.plugin/org.gvsig.xml2db/org.gvsig.xml2db.swing/org.gvsig.xml2db.swing.impl/src/main/java/org/gvsig/xml2db/swing/impl/createdbfromxml/CreatedbFromXmlPanel.java

View differences:

CreatedbFromXmlPanel.java
22 22
 */
23 23
package org.gvsig.xml2db.swing.impl.createdbfromxml;
24 24

  
25
import org.gvsig.xml2db.swing.impl.Task;
26 25
import java.awt.Color;
27 26
import java.awt.Cursor;
28 27
import java.awt.GridBagConstraints;
29 28
import java.awt.event.ActionEvent;
29
import java.awt.event.ItemEvent;
30
import java.awt.event.ItemListener;
30 31
import java.io.File;
32
import java.nio.charset.Charset;
31 33
import java.util.ArrayList;
34
import java.util.Collections;
32 35
import java.util.List;
36
import java.util.Locale;
33 37
import javax.swing.AbstractListModel;
38
import javax.swing.DefaultComboBoxModel;
34 39
import javax.swing.JComponent;
35
import org.cresques.cts.IProjection;
36
import java.nio.charset.Charset;
37
import java.util.Collections;
38
import java.util.Locale;
39 40
import javax.swing.JOptionPane;
40 41
import javax.swing.SwingUtilities;
41 42
import javax.swing.event.ChangeEvent;
42
import javax.swing.event.ChangeListener;
43
import javax.swing.event.DocumentEvent;
44
import javax.swing.event.DocumentListener;
43 45
import org.apache.commons.io.FilenameUtils;
44 46
import org.apache.commons.lang3.StringUtils;
47
import org.cresques.cts.IProjection;
45 48
import org.gvsig.fmap.dal.DALLocator;
46 49
import org.gvsig.fmap.dal.DataManager;
47 50
import org.gvsig.fmap.dal.feature.EditableFeatureType;
......
51 54
import org.gvsig.fmap.dal.swing.DataSwingManager;
52 55
import org.gvsig.fmap.dal.swing.ProjectionPickerController;
53 56
import org.gvsig.fmap.dal.swing.featuretype.FeatureTypePanel;
57
import static org.gvsig.fmap.dal.swing.featuretype.FeatureTypePanel.MODE_EDIT_ALL;
54 58
import org.gvsig.tools.ToolsLocator;
55 59
import org.gvsig.tools.i18n.I18nManager;
56 60
import org.gvsig.tools.swing.api.ToolsSwingLocator;
......
72 76
import org.gvsig.xml2db.lib.api.xmlinfo.XMLInfo;
73 77
import org.gvsig.xml2db.lib.api.xmlinfo.XMLTableInfo;
74 78
import org.gvsig.xml2db.swing.Xml2dbPanel;
79
import org.gvsig.xml2db.swing.impl.Task;
75 80
import org.gvsig.xml2db.swing.impl.Xml2dbSwingCommons;
76 81
import org.slf4j.Logger;
77 82
import org.slf4j.LoggerFactory;
......
87 92
    {
88 93

  
89 94
    protected static final Logger LOGGER = LoggerFactory.getLogger(CreatedbFromXmlPanel.class);
95
    
96
    private static final int MODE_NEW = 0;
97
    private static final int MODE_OVERWRITE = 1;
98
    private static final int MODE_ADD = 2;
99
    
90 100
    private PickerController<Locale> pickerLocale;
91 101

  
92 102
    private static class XMLInfoListModel extends AbstractListModel<LabeledValue<XMLTableInfo>> {
......
104 114
            if( xmlinfo != null ) {
105 115
                this.tables = new ArrayList<>(xmlinfo.size());
106 116
                for (XMLTableInfo tableInfo : xmlinfo) {
107
                    this.tables.add(new LabeledValueImpl<>(tableInfo.getName(),tableInfo));
117
                    this.tables.add(new LabeledValueImpl<>(xmlinfo.getNameWithPrefix(tableInfo.getName()),tableInfo));
108 118
                }
109 119
            } else {
110 120
                this.tables = null;
......
192 202
            setTablesModel(null);
193 203
        });
194 204
        
205
        this.txtPrefixesForTables.getDocument().addDocumentListener(new DocumentListener() {
206
            @Override
207
            public void insertUpdate(DocumentEvent e) {
208
                setTablesModel(null);
209
            }
210

  
211
            @Override
212
            public void removeUpdate(DocumentEvent e) {
213
                setTablesModel(null);
214
            }
215

  
216
            @Override
217
            public void changedUpdate(DocumentEvent e) {
218
                setTablesModel(null);
219
            }
220
        });
195 221
        this.pickerDbfile = toolsSwingManager.createFilePickerController(
196 222
                this.txtDatabaseFile, 
197 223
                this.btnDataBaseFile
......
214 240
        
215 241
        this.chkRegisterConnection.setSelected(true);
216 242
        
217
        this.chkOverwriteDatabase.addChangeListener((ChangeEvent e) -> {
243
        this.cboMode.addItemListener((ItemEvent e) -> {
244
            if(getMode() == MODE_ADD){
245
                chkRegisterConnection.setSelected(false);
246
            }
218 247
            updateStateComponents();
219 248
        });
220 249
        
250
        I18nManager i18n = ToolsLocator.getI18nManager();
251
        DefaultComboBoxModel<LabeledValue<Integer>> model = new DefaultComboBoxModel<>();
252
        model.addElement(new LabeledValueImpl<>(i18n.getTranslation("_New_database"), MODE_NEW));
253
        model.addElement(new LabeledValueImpl<>(i18n.getTranslation("_Overwrite_database"), MODE_OVERWRITE));
254
        model.addElement(new LabeledValueImpl<>(i18n.getTranslation("_Add_to_existing_database"), MODE_ADD));
255
        this.cboMode.setModel(model);
256
        this.cboMode.setSelectedIndex(0);
257
        
258
        
221 259
        this.cboCharset.setSelectedIndex(-1);
222 260
        
223 261
        this.pickerLocale = toolsSwingManager.createLocalePickerController(this.cboLocale);
......
246 284
        toolsSwingManager.translate(this.btnAnalizeXML);
247 285
        toolsSwingManager.translate(this.btnViewTableStructure);
248 286
        toolsSwingManager.translate(this.lblRegisterConnection);
249
        toolsSwingManager.translate(this.lblOverwriteDatabase);
287
        toolsSwingManager.translate(this.lblMode);
250 288
        toolsSwingManager.translate(this.lblLocale);
251 289
        toolsSwingManager.translate(this.lblPrefixesForTables);
252 290
        
......
326 364
            }
327 365
            return;
328 366
        }
329
        if( H2SpatialUtils.existsH2db(dbfile) && !this.chkOverwriteDatabase.isSelected() ) {
367
        if( H2SpatialUtils.existsH2db(dbfile) && this.getMode() == MODE_NEW ) {
330 368
            this.message(i18n.getTranslation("_Database_file_already_exists"), JOptionPane.WARNING_MESSAGE);
331 369
            if( this.dialog!=null ) {
332 370
                this.dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, false);
......
374 412
            s = FilenameUtils.getBaseName(dbfile.getName());
375 413
        } 
376 414
        String repoName = s;
377
        
415

  
378 416
        boolean registerConnection = this.chkRegisterConnection.isSelected();
379 417
        
380 418
        Xml2dbManager manager = Xml2dbLocator.getXml2dbManager();
381 419
        
382 420
        I18nManager i18n = ToolsLocator.getI18nManager();
383
        if( H2SpatialUtils.existsH2db(dbfile) ) {
384
            if( !this.chkOverwriteDatabase.isSelected() ) {
385
                message(i18n.getTranslation("Database already exists"), JOptionPane.WARNING_MESSAGE);
386
                return;
387
            }
388
        }        
421
        switch(getMode()){
422
            default:
423
            case MODE_NEW:
424
                if( H2SpatialUtils.existsH2db(dbfile) ) {
425
                    message(i18n.getTranslation("Database already exists"), JOptionPane.WARNING_MESSAGE);
426
                    return;
427
                }
428
                break;
429
            case MODE_OVERWRITE:
430
                break;
431
            case MODE_ADD:
432
                if( !H2SpatialUtils.existsH2db(dbfile) ) {
433
                    message(i18n.getTranslation("Database not exists"), JOptionPane.WARNING_MESSAGE);
434
                    return;
435
                }
436
                break;
437
        }
438
//        if( H2SpatialUtils.existsH2db(dbfile) ) {
439
//            if( !this.chkOverwriteDatabase.isSelected() ) {
440
//                message(i18n.getTranslation("Database already exists"), JOptionPane.WARNING_MESSAGE);
441
//                return;
442
//            }
443
//        }        
389 444
        
390 445
        this.lastTask = new Task(                
391 446
                "Xml2db_Creating_database", 
......
396 451
            @Override
397 452
            protected void task(SimpleTaskStatus taskStatus) throws Throwable{
398 453
                try {
399
                    if( H2SpatialUtils.existsH2db(dbfile) ) {
400
                        taskStatus.message(i18n.getTranslation("_Removing_existing_database"));
401
                        H2SpatialUtils.server_stop();
402
                        H2SpatialUtils.removeH2db(dbfile);
403
                        H2SpatialUtils.server_start();
404
                    }        
405
                    JDBCServerExplorerParameters params = manager.createDatabase(dbfile, xmlinfo, taskStatus);
454
                    JDBCServerExplorerParameters params;
455
                    switch(getMode()){
456
                        default:
457
                        case MODE_NEW:
458
                            if (H2SpatialUtils.existsH2db(dbfile)) {
459
                                message(i18n.getTranslation("Database already exists"), JOptionPane.WARNING_MESSAGE);
460
                                return;
461
                            }
462
                            params = manager.createDatabase(dbfile, xmlinfo, taskStatus);
463
                            break;
464
                        case MODE_OVERWRITE:
465
                            if( H2SpatialUtils.existsH2db(dbfile) ) {
466
                                taskStatus.message(i18n.getTranslation("_Removing_existing_database"));
467
                                H2SpatialUtils.server_stop();
468
                                H2SpatialUtils.removeH2db(dbfile);
469
                                H2SpatialUtils.server_start();
470
                            }        
471
                            params = manager.createDatabase(dbfile, xmlinfo, taskStatus);
472
                            break;
473
                        case MODE_ADD:
474
                            params = manager.addToDatabase(dbfile, xmlinfo, taskStatus);
475
                            break;
476
                    }
477
                    
478
//                    JDBCServerExplorerParameters params = manager.createDatabase(dbfile, xmlinfo, taskStatus);
406 479
                    if( params == null ) {
407 480
                        throw new RuntimeException("Can't create database");
408 481
                    }
......
506 579
        EditableFeatureType featureType = tableInfo.getFeatureType();
507 580
        
508 581
        FeatureTypePanel panel = dataSwingManager.createFeatureTypePanel();
582
        panel.setMode(MODE_EDIT_ALL);
583
//        panel.setRepository(xmlinfo.getRepository());
509 584
        panel.put(featureType);
510 585
        Dialog theDialog = windowManager.createDialog(
511 586
                panel.asJComponent(),
......
564 639
        this.lblStatusMsg.setVisible(true);
565 640
    }
566 641
    
642
    private int getMode() {
643
        LabeledValue<Integer> item = (LabeledValue) this.cboMode.getSelectedItem();
644
        if (item == null){
645
            return MODE_NEW;
646
        }
647
        return item.getValue();
648
    }
649
    
567 650
}

Also available in: Unified diff