Statistics
| Revision:

svn-gvsig-desktop / trunk / org.gvsig.desktop / org.gvsig.desktop.plugin / org.gvsig.h2spatial.app / org.gvsig.h2spatial.app.mainplugin / src / main / java / org / gvsig / h2spatial / ImportTable.java @ 44480

History | View | Annotate | Download (6.86 KB)

1

    
2
package org.gvsig.h2spatial;
3

    
4
import java.awt.event.ActionEvent;
5
import java.awt.event.ActionListener;
6
import java.io.File;
7
import javax.swing.JComboBox;
8
import javax.swing.JFileChooser;
9
import javax.swing.filechooser.FileFilter;
10
import org.apache.commons.io.FilenameUtils;
11
import org.apache.commons.lang3.ArrayUtils;
12
import org.apache.commons.lang3.StringUtils;
13
import org.gvsig.fmap.dal.DALLocator;
14
import org.gvsig.fmap.dal.DataManager;
15
import org.gvsig.fmap.dal.DataServerExplorerPool;
16
import org.gvsig.fmap.dal.DataServerExplorerPoolEntry;
17
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters;
18
import org.gvsig.fmap.dal.swing.DALSwingLocator;
19
import org.gvsig.fmap.dal.swing.jdbc.JDBCConnectionPanel;
20
import org.gvsig.tools.ToolsLocator;
21
import org.gvsig.tools.folders.FoldersManager;
22
import org.gvsig.tools.i18n.I18nManager;
23
import org.gvsig.tools.swing.api.ListElement;
24
import org.gvsig.tools.swing.api.ToolsSwingLocator;
25
import org.gvsig.tools.swing.api.ToolsSwingManager;
26
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager;
27
import org.gvsig.tools.swing.api.windowmanager.Dialog;
28
import org.gvsig.tools.swing.api.windowmanager.WindowManager;
29
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2;
30

    
31

    
32
public class ImportTable extends ImportTableView {
33
    
34
    private static final long serialVersionUID = 3084071737749916812L;
35
    
36
    private File file = null;
37
    
38
    public ImportTable() {
39
        this.initComponents();
40
    }
41
    
42
    private void initComponents() {
43
        ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager();
44
        toolsSwingManager.translate(lblConnection);
45
        toolsSwingManager.translate(lblFileType);
46
        toolsSwingManager.translate(lblFile);
47
        toolsSwingManager.translate(lblTableName);
48
        toolsSwingManager.translate(lblDeleteTables);
49
        
50
        loadConnectionCombo(this.cboConnection, null);
51
        this.btnConnection.addActionListener(new ActionListener() {
52
            @Override
53
            public void actionPerformed(ActionEvent e) {
54
                doConnectionExplore();
55
            }
56
        });
57
        this.cboFileType.removeAllItems();
58
        this.cboFileType.addItem("GPX");
59
        this.cboFileType.addItem("GeoJSon");
60
        this.cboFileType.addItem("OSM");
61
        this.btnFile.addActionListener(new ActionListener() {
62
            @Override
63
            public void actionPerformed(ActionEvent e) {
64
                doFileExplore();
65
            }
66
        });
67
        
68
    }
69
    
70
    public JDBCServerExplorerParameters getExplorerParameters() {
71
        ListElement<JDBCServerExplorerParameters> item = (ListElement<JDBCServerExplorerParameters>) this.cboConnection.getSelectedItem();
72
        if( item == null ) {
73
            return null;
74
        }
75
        return item.getValue();
76
    }
77
    
78
    public String getFileType() {
79
        return (String) this.cboFileType.getSelectedItem();
80
    }
81
    
82
    public File getFile() {
83
        return this.file;
84
    }
85
    
86
    public String getTableName() {
87
        String s = this.txtTableName.getText();
88
        if( StringUtils.isEmpty(s) ) {
89
            if( this.file == null ) {
90
                return null;
91
            }
92
            return FilenameUtils.getBaseName(this.file.getName());
93
        }
94
        return s.trim();
95
    }
96
    
97
    public boolean getDeleteTables() {
98
        return this.chkDeleteTables.isSelected();
99
    }
100
    
101
    private void loadConnectionCombo(JComboBox combo, String selected) {
102
        combo.removeAllItems();
103
        combo.addItem("");
104
        DataManager dataManager = DALLocator.getDataManager();
105
        DataServerExplorerPool explorersPool = dataManager.getDataServerExplorerPool();
106
        for( DataServerExplorerPoolEntry entry : explorersPool) {
107
            if( entry.getExplorerParameters() instanceof JDBCServerExplorerParameters ) {
108
                ListElement<JDBCServerExplorerParameters> item = new ListElement(
109
                    entry.getName(),
110
                    entry.getExplorerParameters()
111
                );
112
                combo.addItem(item);
113
                if( StringUtils.equalsIgnoreCase(selected, item.toString()) ) {
114
                    combo.setSelectedItem(item);
115
                }
116
            }
117
        }
118
    }
119

    
120
    private void doConnectionExplore() {
121
        I18nManager i18n = ToolsLocator.getI18nManager();
122
        WindowManager_v2 winmanager = (WindowManager_v2) ToolsSwingLocator.getWindowManager();
123
        final JDBCConnectionPanel jdbcServerExplorer = DALSwingLocator.getSwingManager().createJDBCConnectionPanel();
124
        jdbcServerExplorer.setConnectorFilter(new JDBCConnectionPanel.ConnectorFilter() {
125
            @Override
126
            public boolean accept(JDBCServerExplorerParameters parameters) {
127
                return StringUtils.equalsIgnoreCase(parameters.getExplorerName(), H2SpatialExtension.DAL_EXPLORER_NAME);
128
            }
129
        });
130
        final Dialog dlg = winmanager.createDialog(
131
            jdbcServerExplorer.asJComponent(),
132
            i18n.getTranslation("_Import_file_in_H2_database"),
133
            i18n.getTranslation("_Import_a_Gpx_Geojson_or_OSM_as_tables_in_a_H2_database"), 
134
            WindowManager_v2.BUTTONS_OK_CANCEL
135
        );
136
        dlg.addActionListener(new ActionListener() {
137
            @Override
138
            public void actionPerformed(ActionEvent e) {
139
                if( dlg.getAction()==WindowManager_v2.BUTTONS_OK ) {
140
                    loadConnectionCombo(cboConnection, jdbcServerExplorer.getConnectionName());
141
                }
142
            }
143
        });
144
        dlg.show(WindowManager.MODE.WINDOW);
145
    }    
146
    
147
    private void doFileExplore() {
148
        I18nManager i18n = ToolsLocator.getI18nManager();
149
        FoldersManager foldersManager = ToolsLocator.getFoldersManager();
150
        ThreadSafeDialogsManager dialogs = ToolsSwingLocator.getThreadSafeDialogsManager();
151
        File[] files = dialogs.showChooserDialog(
152
            i18n.getTranslation("_Select_the_file_to_import"),
153
            JFileChooser.OPEN_DIALOG,
154
            JFileChooser.FILES_ONLY,
155
            false,
156
            foldersManager.get("DataFolder"),
157
            new FileFilter() {
158
                @Override
159
                public boolean accept(File f) {
160
                    if( f.isDirectory() ) {
161
                        return true;
162
                    }
163
                    return FilenameUtils.isExtension(f.getName().toLowerCase(), new String[] {"gpx", "geojson", "osm"});
164
                }
165

    
166
                @Override
167
                public String getDescription() {
168
                    return "GPX, GeoJSon and OSM files";
169
                }
170
            },
171
            false
172
        );
173
        if( !ArrayUtils.isEmpty(files) ) {
174
            this.file = files[0];
175
            this.txtFile.setText(this.file.getAbsolutePath());
176
            if( StringUtils.isEmpty(this.txtTableName.getText()) ) {
177
                this.txtTableName.setText(FilenameUtils.getBaseName(this.file.getName()));
178
            }
179
        }
180
    }
181
}