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
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