Revision 44419 trunk/org.gvsig.desktop/org.gvsig.desktop.compat.cdc/org.gvsig.fmap.dal/org.gvsig.fmap.dal.swing/org.gvsig.fmap.dal.swing.impl/src/main/java/org/gvsig/fmap/dal/swing/impl/jdbc/DefaultJDBCConnectionDialog.java
DefaultJDBCConnectionDialog.java | ||
---|---|---|
26 | 26 |
import java.awt.BorderLayout; |
27 | 27 |
import java.awt.event.ActionEvent; |
28 | 28 |
import java.awt.event.ActionListener; |
29 |
import java.awt.event.ItemEvent; |
|
30 |
import java.awt.event.ItemListener; |
|
31 |
import java.io.File; |
|
32 |
import java.io.FileInputStream; |
|
33 |
import java.io.FileOutputStream; |
|
34 |
import java.io.InputStream; |
|
35 |
import java.io.OutputStream; |
|
36 |
import java.util.Objects; |
|
37 |
import javax.swing.DefaultComboBoxModel; |
|
38 |
import javax.swing.JOptionPane; |
|
39 |
import javax.swing.filechooser.FileFilter; |
|
40 |
import org.apache.commons.io.IOUtils; |
|
41 |
import org.apache.commons.lang3.ArrayUtils; |
|
42 |
import org.gvsig.filedialogchooser.FileDialogChooser; |
|
43 |
import org.gvsig.fmap.dal.DALLocator; |
|
44 |
import org.gvsig.fmap.dal.DataManager; |
|
45 |
import org.gvsig.fmap.dal.DataServerExplorerPool; |
|
46 |
import org.gvsig.fmap.dal.DataServerExplorerPoolEntry; |
|
29 | 47 |
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters; |
30 | 48 |
import org.gvsig.fmap.dal.swing.DALSwingLocator; |
31 | 49 |
import org.gvsig.fmap.dal.swing.dataStoreParameters.DataStoreParametersPanel; |
... | ... | |
40 | 58 |
import org.slf4j.Logger; |
41 | 59 |
import org.slf4j.LoggerFactory; |
42 | 60 |
import org.gvsig.fmap.dal.swing.jdbc.JDBCConnectionDialog; |
61 |
import org.gvsig.tools.folders.FoldersManager; |
|
62 |
import org.gvsig.tools.persistence.PersistenceManager; |
|
63 |
import org.gvsig.tools.persistence.PersistentState; |
|
64 |
import org.gvsig.tools.swing.api.DropDown; |
|
65 |
import org.gvsig.tools.swing.api.ToolsSwingManager; |
|
66 |
import org.gvsig.tools.swing.api.threadsafedialogs.ThreadSafeDialogsManager; |
|
67 |
import org.gvsig.tools.util.LabeledValue; |
|
68 |
import org.gvsig.tools.util.LabeledValueImpl; |
|
43 | 69 |
|
44 | 70 |
|
45 | 71 |
|
46 | 72 |
|
73 |
@SuppressWarnings("UseSpecificCatch") |
|
47 | 74 |
public class DefaultJDBCConnectionDialog extends DefaultJDBCConnectionDialogView implements JDBCConnectionDialog { |
48 | 75 |
|
49 | 76 |
private static final long serialVersionUID = -5493563028200403559L; |
... | ... | |
53 | 80 |
|
54 | 81 |
private boolean isCanceled = false; |
55 | 82 |
private JDBCConnectionPanel jdbcServerExplorer; |
83 |
private DropDown ddnMore; |
|
56 | 84 |
|
57 | 85 |
public DefaultJDBCConnectionDialog() { |
58 | 86 |
initComponents(); |
59 | 87 |
} |
60 | 88 |
|
61 | 89 |
private void initComponents() { |
62 |
I18nManager i18nManager = ToolsLocator.getI18nManager(); |
|
63 |
this.btnAdvanced.setText(i18nManager.getTranslation("advanced")); |
|
64 |
this.btnAdvanced.addActionListener(new ActionListener() { |
|
65 |
@Override |
|
66 |
public void actionPerformed(ActionEvent ae) { |
|
67 |
doAdvanced(); |
|
68 |
} |
|
69 |
}); |
|
70 |
this.btnAcept.setText(i18nManager.getTranslation("ok")); |
|
90 |
I18nManager i18n = ToolsLocator.getI18nManager(); |
|
91 |
ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager(); |
|
92 |
this.btnAcept.setText(i18n.getTranslation("ok")); |
|
71 | 93 |
this.btnAcept.addActionListener(new ActionListener() { |
72 | 94 |
@Override |
73 | 95 |
public void actionPerformed(ActionEvent ae) { |
74 | 96 |
doAcept(); |
75 | 97 |
} |
76 | 98 |
}); |
77 |
this.btnCancel.setText(i18nManager.getTranslation("cancel"));
|
|
99 |
this.btnCancel.setText(i18n.getTranslation("cancel")); |
|
78 | 100 |
this.btnCancel.addActionListener(new ActionListener() { |
79 | 101 |
@Override |
80 | 102 |
public void actionPerformed(ActionEvent ae) { |
81 | 103 |
doCancel(); |
82 | 104 |
} |
83 | 105 |
}); |
84 |
|
|
85 |
this.btnDelete.setText(i18nManager.getTranslation("del")); |
|
86 |
this.btnDelete.addActionListener(new ActionListener() { |
|
106 |
DefaultComboBoxModel<LabeledValue<String>> model = new DefaultComboBoxModel<>(); |
|
107 |
model.addElement(new LabeledValueImpl<>(i18n.getTranslation("advanced"), "advanced")); |
|
108 |
model.addElement(new LabeledValueImpl<>(i18n.getTranslation("delete"), "delete")); |
|
109 |
model.addElement(new LabeledValueImpl<>(i18n.getTranslation("load"), "load")); |
|
110 |
model.addElement(new LabeledValueImpl<>(i18n.getTranslation("save"), "save")); |
|
111 |
this.ddnMore = toolsSwingManager.createDropDown(this.btnMore); |
|
112 |
this.ddnMore.setModel(model); |
|
113 |
this.ddnMore.addItemListener(new ItemListener() { |
|
87 | 114 |
@Override |
88 |
public void actionPerformed(ActionEvent ae) { |
|
89 |
doDelete(); |
|
115 |
public void itemStateChanged(ItemEvent e) { |
|
116 |
LabeledValue<String> selectedItem = (LabeledValue<String>) ddnMore.getSelectedItem(); |
|
117 |
switch(selectedItem.getValue()) { |
|
118 |
case "advanced": |
|
119 |
doAdvanced(); |
|
120 |
break; |
|
121 |
case "delete": |
|
122 |
doDelete(); |
|
123 |
break; |
|
124 |
case "load": |
|
125 |
doLoad(); |
|
126 |
break; |
|
127 |
case "save": |
|
128 |
doSave(); |
|
129 |
break; |
|
130 |
} |
|
90 | 131 |
} |
91 | 132 |
}); |
133 |
|
|
92 | 134 |
this.jdbcServerExplorer = DALSwingLocator.getSwingManager().createJDBCConnectionPanel(); |
93 | 135 |
this.containerJDBCConnectionPanel.setLayout(new BorderLayout()); |
94 | 136 |
this.containerJDBCConnectionPanel.add( |
... | ... | |
96 | 138 |
BorderLayout.CENTER |
97 | 139 |
); |
98 | 140 |
} |
141 |
|
|
142 |
protected void doLoad() { |
|
143 |
I18nManager i18n = ToolsLocator.getI18nManager(); |
|
144 |
ThreadSafeDialogsManager dialogs = ToolsSwingLocator.getThreadSafeDialogsManager(); |
|
145 |
FoldersManager folderManager = ToolsLocator.getFoldersManager(); |
|
146 |
DataManager dataManager = DALLocator.getDataManager(); |
|
147 |
|
|
148 |
File initialPath = folderManager.getLastPath("CONNECTIONS", null); |
|
149 |
File[] f = dialogs.showChooserDialog( |
|
150 |
i18n.getTranslation("_Load_connection"), |
|
151 |
FileDialogChooser.OPEN_DIALOG, |
|
152 |
FileDialogChooser.FILES_ONLY, |
|
153 |
false, |
|
154 |
initialPath, |
|
155 |
new FileFilter() { |
|
156 |
@Override |
|
157 |
public boolean accept(File f) { |
|
158 |
return Objects.toString(f,"").toLowerCase().endsWith(".gvdbcon"); |
|
159 |
} |
|
160 |
|
|
161 |
@Override |
|
162 |
public String getDescription() { |
|
163 |
return "Database connection (gvdbcon)"; |
|
164 |
} |
|
165 |
}, |
|
166 |
true |
|
167 |
); |
|
168 |
if( ArrayUtils.isEmpty(f) || f[0]==null ) { |
|
169 |
return; |
|
170 |
} |
|
171 |
folderManager.setLastPath("CONNECTIONS", f[0].getParentFile()); |
|
172 |
InputStream in = null; |
|
173 |
try { |
|
174 |
in = new FileInputStream(f[0]); |
|
175 |
PersistenceManager persistence = ToolsLocator.getPersistenceManager(); |
|
176 |
DataServerExplorerPoolEntry entry = (DataServerExplorerPoolEntry) persistence.getObject(in); |
|
177 |
LabeledValueImpl<JDBCServerExplorerParameters> parameters = new LabeledValueImpl<>( |
|
178 |
entry.getName(), |
|
179 |
(JDBCServerExplorerParameters)entry.getExplorerParameters() |
|
180 |
); |
|
181 |
this.jdbcServerExplorer.setLabeledServerExplorerParameters(parameters); |
|
182 |
} catch(Throwable th) { |
|
183 |
LOG.warn("Problems loading connection",th); |
|
184 |
dialogs.messageDialog( |
|
185 |
i18n.getTranslation("_Problems_loading_the_connection"), |
|
186 |
i18n.getTranslation("_Load_connection"), |
|
187 |
JOptionPane.WARNING_MESSAGE |
|
188 |
); |
|
189 |
// return; |
|
190 |
} finally { |
|
191 |
IOUtils.closeQuietly(in); |
|
192 |
} |
|
193 |
} |
|
99 | 194 |
|
195 |
protected void doSave() { |
|
196 |
I18nManager i18n = ToolsLocator.getI18nManager(); |
|
197 |
ThreadSafeDialogsManager dialogs = ToolsSwingLocator.getThreadSafeDialogsManager(); |
|
198 |
FoldersManager folderManager = ToolsLocator.getFoldersManager(); |
|
199 |
DataManager dataManager = DALLocator.getDataManager(); |
|
200 |
|
|
201 |
LabeledValue<JDBCServerExplorerParameters> parameters = this.getLabeledServerExplorerParameters(); |
|
202 |
if( parameters == null || parameters.getValue()==null ) { |
|
203 |
dialogs.messageDialog( |
|
204 |
i18n.getTranslation("_There_is_no_connection_to_save"), |
|
205 |
i18n.getTranslation("_Save_connection"), |
|
206 |
JOptionPane.INFORMATION_MESSAGE |
|
207 |
); |
|
208 |
return; |
|
209 |
} |
|
210 |
File initialPath = folderManager.getLastPath("CONNECTIONS", null); |
|
211 |
File[] f = dialogs.showChooserDialog( |
|
212 |
i18n.getTranslation("_Save_connection"), |
|
213 |
FileDialogChooser.SAVE_DIALOG, |
|
214 |
FileDialogChooser.FILES_ONLY, |
|
215 |
false, |
|
216 |
initialPath, |
|
217 |
new FileFilter() { |
|
218 |
@Override |
|
219 |
public boolean accept(File f) { |
|
220 |
return Objects.toString(f,"").toLowerCase().endsWith(".gvdbcon"); |
|
221 |
} |
|
222 |
|
|
223 |
@Override |
|
224 |
public String getDescription() { |
|
225 |
return "Database connection (gvdbcon)"; |
|
226 |
} |
|
227 |
}, |
|
228 |
true |
|
229 |
); |
|
230 |
if( ArrayUtils.isEmpty(f) || f[0]==null ) { |
|
231 |
return; |
|
232 |
} |
|
233 |
folderManager.setLastPath("CONNECTIONS", f[0].getParentFile()); |
|
234 |
|
|
235 |
File paramsFile = f[0]; |
|
236 |
if( !f[0].toString().toLowerCase().endsWith(".gvdbcon") ) { |
|
237 |
paramsFile = new File(f[0].toString()+".gvdbcon"); |
|
238 |
} |
|
239 |
|
|
240 |
DataServerExplorerPool pool = dataManager.getDataServerExplorerPool(); |
|
241 |
DataServerExplorerPoolEntry entry = pool.createEntry( |
|
242 |
parameters.getLabel(), |
|
243 |
null, |
|
244 |
parameters.getValue() |
|
245 |
); |
|
246 |
|
|
247 |
OutputStream out = null; |
|
248 |
try { |
|
249 |
out = new FileOutputStream(paramsFile); |
|
250 |
PersistenceManager persistence = ToolsLocator.getPersistenceManager(); |
|
251 |
PersistentState state = persistence.getState(entry); |
|
252 |
persistence.saveState(state, out); |
|
253 |
} catch(Throwable th) { |
|
254 |
LOG.warn("Problems saving connection",th); |
|
255 |
dialogs.messageDialog( |
|
256 |
i18n.getTranslation("_Problems_saving_the_connection"), |
|
257 |
i18n.getTranslation("_Save_connection"), |
|
258 |
JOptionPane.WARNING_MESSAGE |
|
259 |
); |
|
260 |
// return; |
|
261 |
} finally { |
|
262 |
IOUtils.closeQuietly(out); |
|
263 |
} |
|
264 |
} |
|
265 |
|
|
100 | 266 |
protected void doAdvanced() { |
101 | 267 |
JDBCServerExplorerParameters myParams = this.getServerExplorerParameters(); |
102 | 268 |
try { |
... | ... | |
146 | 312 |
} |
147 | 313 |
|
148 | 314 |
@Override |
315 |
public LabeledValue<JDBCServerExplorerParameters> getLabeledServerExplorerParameters() { |
|
316 |
return this.jdbcServerExplorer.getLabeledServerExplorerParameters(); |
|
317 |
} |
|
318 |
|
|
319 |
@Override |
|
149 | 320 |
public String getConnectionName() { |
150 | 321 |
return this.jdbcServerExplorer.getConnectionName(); |
151 | 322 |
} |
Also available in: Unified diff