Revision 47347 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/copyxml2db/CopyXml2dbPanel.java
CopyXml2dbPanel.java | ||
---|---|---|
22 | 22 |
*/ |
23 | 23 |
package org.gvsig.xml2db.swing.impl.copyxml2db; |
24 | 24 |
|
25 |
import org.gvsig.xml2db.swing.impl.Task; |
|
26 | 25 |
import java.awt.Color; |
26 |
import java.awt.event.ActionEvent; |
|
27 | 27 |
import java.io.File; |
28 |
import java.nio.charset.Charset; |
|
28 | 29 |
import java.util.ArrayList; |
29 | 30 |
import java.util.List; |
31 |
import java.util.Locale; |
|
30 | 32 |
import javax.swing.AbstractListModel; |
33 |
import javax.swing.ImageIcon; |
|
31 | 34 |
import javax.swing.JComponent; |
32 |
import org.cresques.cts.IProjection; |
|
33 |
import java.nio.charset.Charset; |
|
34 |
import java.util.Locale; |
|
35 | 35 |
import javax.swing.JOptionPane; |
36 | 36 |
import javax.swing.SwingUtilities; |
37 | 37 |
import javax.swing.event.ChangeEvent; |
38 | 38 |
import org.apache.commons.io.FilenameUtils; |
39 | 39 |
import org.apache.commons.lang3.StringUtils; |
40 |
import org.cresques.cts.IProjection; |
|
40 | 41 |
import org.gvsig.fmap.dal.DALLocator; |
41 | 42 |
import org.gvsig.fmap.dal.DataManager; |
42 | 43 |
import org.gvsig.fmap.dal.store.h2.H2SpatialUtils; |
... | ... | |
44 | 45 |
import org.gvsig.fmap.dal.swing.DALSwingLocator; |
45 | 46 |
import org.gvsig.fmap.dal.swing.DataSwingManager; |
46 | 47 |
import org.gvsig.fmap.dal.swing.ProjectionPickerController; |
48 |
import org.gvsig.tools.ToolsLocator; |
|
49 |
import org.gvsig.tools.i18n.I18nManager; |
|
47 | 50 |
import org.gvsig.tools.swing.api.ToolsSwingLocator; |
48 | 51 |
import org.gvsig.tools.swing.api.ToolsSwingManager; |
49 | 52 |
import org.gvsig.tools.swing.api.ToolsSwingUtils; |
... | ... | |
61 | 64 |
import org.gvsig.xml2db.lib.api.xmlinfo.XMLInfo; |
62 | 65 |
import org.gvsig.xml2db.lib.api.xmlinfo.XMLTableInfo; |
63 | 66 |
import org.gvsig.xml2db.swing.Xml2dbPanel; |
67 |
import org.gvsig.xml2db.swing.impl.Task; |
|
64 | 68 |
import org.gvsig.xml2db.swing.impl.Xml2dbSwingCommons; |
65 | 69 |
import org.slf4j.Logger; |
66 | 70 |
import org.slf4j.LoggerFactory; |
... | ... | |
155 | 159 |
|
156 | 160 |
this.pickerXMLFile = toolsSwingManager.createFilePickerController( |
157 | 161 |
this.txtXMLFile, |
158 |
this.btnXMLFile |
|
162 |
this.btnXMLFile, |
|
163 |
null, |
|
164 |
"Xml2db_xmlFile", |
|
165 |
null, |
|
166 |
true |
|
159 | 167 |
); |
160 | 168 |
this.pickerXMLFile.addChangeListener((ChangeEvent e) -> { |
161 | 169 |
doChangeXMLfile(); |
... | ... | |
166 | 174 |
this.cboCharset |
167 | 175 |
); |
168 | 176 |
|
177 |
this.btnDetectCharset.addActionListener((ActionEvent e) -> { |
|
178 |
doDetectCharset(); |
|
179 |
}); |
|
180 |
|
|
169 | 181 |
this.pickerProjection = dataSwingManager.createProjectionPickerController( |
170 | 182 |
this.txtProjection, |
171 | 183 |
this.btnProjection |
172 | 184 |
); |
173 | 185 |
|
186 |
this.btnDetectProjection.addActionListener((ActionEvent e) -> { |
|
187 |
doDetectProjection(); |
|
188 |
}); |
|
189 |
|
|
174 | 190 |
this.pickerDbfile = toolsSwingManager.createFilePickerController( |
175 | 191 |
this.txtDatabaseFile, |
176 | 192 |
this.btnDataBaseFile |
... | ... | |
197 | 213 |
|
198 | 214 |
SwingUtilities.invokeLater(() -> { updateStateComponents(); }); |
199 | 215 |
|
200 |
ToolsSwingUtils.ensureRowsCols(this, 14, 80, 16, 100);
|
|
216 |
ToolsSwingUtils.ensureRowsCols(this, 15, 80, 17, 100);
|
|
201 | 217 |
} |
202 | 218 |
|
203 | 219 |
private void translate() { |
... | ... | |
212 | 228 |
toolsSwingManager.translate(this.lblConnectToRepository); |
213 | 229 |
toolsSwingManager.translate(this.lblOverwriteDatabase); |
214 | 230 |
toolsSwingManager.translate(this.lblLocale); |
231 |
toolsSwingManager.translate(this.btnDetectProjection); |
|
232 |
toolsSwingManager.translate(this.btnDetectCharset); |
|
233 |
|
|
215 | 234 |
} |
216 | 235 |
|
217 | 236 |
private boolean isProcessing() { |
... | ... | |
227 | 246 |
this.pickerXMLFile.setEnabled(false); |
228 | 247 |
this.pickerCharset.setEnabled(false); |
229 | 248 |
this.pickerProjection.setEnabled(false); |
249 |
this.btnDetectCharset.setEnabled(false); |
|
250 |
this.btnDetectProjection.setEnabled(false); |
|
230 | 251 |
if( this.dialog!=null ) { |
231 | 252 |
this.dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, false); |
232 | 253 |
} |
... | ... | |
236 | 257 |
this.pickerCharset.setEnabled(true); |
237 | 258 |
this.pickerProjection.setEnabled(true); |
238 | 259 |
|
260 |
I18nManager i18n = ToolsLocator.getI18nManager(); |
|
261 |
|
|
239 | 262 |
File xmlfile = this.pickerXMLFile.get(); |
240 | 263 |
if( xmlfile == null || !xmlfile.exists() ) { |
264 |
this.btnDetectCharset.setEnabled(false); |
|
265 |
this.btnDetectProjection.setEnabled(false); |
|
241 | 266 |
if( xmlfile==null ) { |
242 |
this.message("_XML_file_is_required", JOptionPane.WARNING_MESSAGE);
|
|
267 |
this.message(i18n.getTranslation("_XML_file_is_required"), JOptionPane.WARNING_MESSAGE);
|
|
243 | 268 |
} else { |
244 |
this.message("_XML_file_not_exists", JOptionPane.WARNING_MESSAGE);
|
|
269 |
this.message(i18n.getTranslation("_XML_file_not_exists"), JOptionPane.WARNING_MESSAGE);
|
|
245 | 270 |
} |
246 | 271 |
if( this.dialog!=null ) { |
247 | 272 |
this.dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, false); |
248 | 273 |
} |
249 | 274 |
return; |
250 | 275 |
} |
276 |
this.btnDetectCharset.setEnabled(true); |
|
277 |
this.btnDetectProjection.setEnabled(true); |
|
251 | 278 |
File dbfile = this.pickerDbfile.get(); |
252 | 279 |
if( dbfile == null ) { |
253 |
this.message("_Database_file_is_required", JOptionPane.WARNING_MESSAGE);
|
|
280 |
this.message(i18n.getTranslation("_Database_file_is_required"), JOptionPane.WARNING_MESSAGE);
|
|
254 | 281 |
if( this.dialog!=null ) { |
255 | 282 |
this.dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, false); |
256 | 283 |
} |
257 | 284 |
return; |
258 | 285 |
} |
259 | 286 |
if( H2SpatialUtils.existsH2db(dbfile) && !this.chkOverwriteDatabase.isSelected() ) { |
260 |
this.message("_Database_file_already_exists", JOptionPane.WARNING_MESSAGE);
|
|
287 |
this.message(i18n.getTranslation("_Database_file_already_exists"), JOptionPane.WARNING_MESSAGE);
|
|
261 | 288 |
if( this.dialog!=null ) { |
262 | 289 |
this.dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, false); |
263 | 290 |
} |
264 | 291 |
return; |
265 | 292 |
} |
266 | 293 |
if( StringUtils.isBlank(this.txtRepositoryName.getText()) ) { |
267 |
this.message("_Repository_name_is_required", JOptionPane.WARNING_MESSAGE);
|
|
294 |
this.message(i18n.getTranslation("_Repository_name_is_required"), JOptionPane.WARNING_MESSAGE);
|
|
268 | 295 |
if( this.dialog!=null ) { |
269 | 296 |
this.dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, false); |
270 | 297 |
} |
... | ... | |
318 | 345 |
boolean connectToRepository = this.chkConnectToRepository.isSelected(); |
319 | 346 |
|
320 | 347 |
Xml2dbManager manager = Xml2dbLocator.getXml2dbManager(); |
348 |
I18nManager i18n = ToolsLocator.getI18nManager(); |
|
321 | 349 |
|
322 | 350 |
if( H2SpatialUtils.existsH2db(dbfile) ) { |
323 | 351 |
if( !this.chkOverwriteDatabase.isSelected() ) { |
324 |
message("Database already exists", JOptionPane.WARNING_MESSAGE);
|
|
352 |
message(i18n.getTranslation("_Database_file_already_exists"), JOptionPane.WARNING_MESSAGE);
|
|
325 | 353 |
return; |
326 | 354 |
} |
327 | 355 |
} |
... | ... | |
330 | 358 |
|
331 | 359 |
this.lastTask = new Task( |
332 | 360 |
"Xml2db_copy", |
333 |
"Copy xml to database",
|
|
361 |
i18n.getTranslation("_Copy_xml_to_database"),
|
|
334 | 362 |
this::updateStateComponents, |
335 | 363 |
taskStatusController |
336 | 364 |
) { |
... | ... | |
338 | 366 |
protected void task(SimpleTaskStatus taskStatus) throws Throwable{ |
339 | 367 |
try { |
340 | 368 |
if( H2SpatialUtils.existsH2db(dbfile) ) { |
341 |
taskStatus.message("Removing existing database...");
|
|
369 |
taskStatus.message(i18n.getTranslation("_Removing_existing_database"));
|
|
342 | 370 |
H2SpatialUtils.server_stop(); |
343 | 371 |
H2SpatialUtils.removeH2db(dbfile); |
344 | 372 |
H2SpatialUtils.server_start(); |
... | ... | |
415 | 443 |
} |
416 | 444 |
updateStateComponents(); |
417 | 445 |
} |
418 |
|
|
446 |
|
|
447 |
private void doDetectCharset() { |
|
448 |
Xml2dbManager manager = Xml2dbLocator.getXml2dbManager(); |
|
449 |
this.pickerCharset.set(manager.detectCharset(this.pickerXMLFile.get())); |
|
450 |
} |
|
451 |
|
|
452 |
private void doDetectProjection() { |
|
453 |
Xml2dbManager manager = Xml2dbLocator.getXml2dbManager(); |
|
454 |
|
|
455 |
I18nManager i18n = ToolsLocator.getI18nManager(); |
|
456 |
|
|
457 |
Task task = new Task( |
|
458 |
"Xml2db_detectProjection", |
|
459 |
i18n.getTranslation("_Detecting_projection"), |
|
460 |
this::updateStateComponents, |
|
461 |
taskStatusController |
|
462 |
) { |
|
463 |
@Override |
|
464 |
protected void task(SimpleTaskStatus taskStatus) throws Throwable{ |
|
465 |
try { |
|
466 |
pickerProjection.set(manager.detectProjection(pickerXMLFile.get(),taskStatus)); |
|
467 |
} catch(Exception ex) { |
|
468 |
LOGGER.warn("Can't detect projection",ex); |
|
469 |
throw ex; |
|
470 |
} |
|
471 |
} |
|
472 |
}; |
|
473 |
|
|
474 |
task.start(); |
|
475 |
|
|
476 |
} |
|
477 |
|
|
419 | 478 |
private void message(String msg) { |
420 | 479 |
message(msg,JOptionPane.INFORMATION_MESSAGE); |
421 | 480 |
} |
... | ... | |
436 | 495 |
this.lblStatusMsg.setText(s); |
437 | 496 |
this.lblStatusMsg.setVisible(true); |
438 | 497 |
} |
498 |
|
|
499 |
@Override |
|
500 |
public ImageIcon loadImage(String imageName) { |
|
501 |
return ToolsSwingUtils.loadImage(this, imageName); |
|
502 |
} |
|
439 | 503 |
|
504 |
|
|
505 |
|
|
440 | 506 |
} |
Also available in: Unified diff