Revision 47283 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/importxml2db/ImportXML2dbPanel.java
ImportXML2dbPanel.java | ||
---|---|---|
22 | 22 |
*/ |
23 | 23 |
package org.gvsig.xml2db.swing.impl.importxml2db; |
24 | 24 |
|
25 |
import java.awt.Color; |
|
26 |
import java.io.File; |
|
27 |
import java.nio.charset.Charset; |
|
25 | 28 |
import javax.swing.JComponent; |
29 |
import javax.swing.JOptionPane; |
|
30 |
import javax.swing.SwingUtilities; |
|
31 |
import javax.swing.event.ChangeEvent; |
|
32 |
import org.apache.commons.lang3.StringUtils; |
|
26 | 33 |
import org.gvsig.fmap.dal.store.jdbc.JDBCServerExplorerParameters; |
27 | 34 |
import org.gvsig.fmap.dal.swing.DALSwingLocator; |
28 | 35 |
import org.gvsig.fmap.dal.swing.DataSwingManager; |
29 | 36 |
import org.gvsig.tools.swing.api.ToolsSwingLocator; |
30 | 37 |
import org.gvsig.tools.swing.api.ToolsSwingManager; |
31 | 38 |
import org.gvsig.tools.swing.api.ToolsSwingUtils; |
39 |
import org.gvsig.tools.swing.api.pickercontroller.CharsetPickerController; |
|
32 | 40 |
import org.gvsig.tools.swing.api.pickercontroller.FilePickerController; |
33 | 41 |
import org.gvsig.tools.swing.api.pickercontroller.PickerController; |
42 |
import org.gvsig.tools.swing.api.task.TaskStatusController; |
|
34 | 43 |
import org.gvsig.tools.swing.api.windowmanager.Dialog; |
44 |
import org.gvsig.tools.swing.api.windowmanager.WindowManager_v2; |
|
45 |
import org.gvsig.tools.task.SimpleTaskStatus; |
|
46 |
import org.gvsig.xml2db.lib.api.Xml2dbLocator; |
|
47 |
import org.gvsig.xml2db.lib.api.Xml2dbManager; |
|
35 | 48 |
import org.gvsig.xml2db.swing.Xml2dbPanel; |
49 |
import org.gvsig.xml2db.swing.impl.Xml2dbSwingCommons; |
|
50 |
import org.gvsig.xml2db.swing.impl.createdbfromxml.CreatedbFromXmlPanel; |
|
51 |
import org.gvsig.xml2db.swing.impl.Task; |
|
52 |
import org.slf4j.Logger; |
|
53 |
import org.slf4j.LoggerFactory; |
|
36 | 54 |
|
37 | 55 |
/** |
38 | 56 |
* |
... | ... | |
42 | 60 |
extends ImportXML2dbPanelView |
43 | 61 |
implements Xml2dbPanel |
44 | 62 |
{ |
63 |
protected static final Logger LOGGER = LoggerFactory.getLogger(CreatedbFromXmlPanel.class); |
|
45 | 64 |
|
65 |
|
|
46 | 66 |
private Dialog dialog; |
47 | 67 |
private FilePickerController pickerXMLFile; |
48 | 68 |
private PickerController<JDBCServerExplorerParameters> pickerConnection; |
49 |
|
|
69 |
private TaskStatusController taskStatusController; |
|
70 |
private Task lastTask; |
|
71 |
private CharsetPickerController pickerCharset; |
|
72 |
|
|
50 | 73 |
public ImportXML2dbPanel() { |
51 | 74 |
this.createComponents(); |
52 | 75 |
} |
53 | 76 |
|
54 | 77 |
private void createComponents() { |
78 |
this.lastTask = Task.FAKE_TASK; |
|
55 | 79 |
this.initComponents(); |
56 | 80 |
} |
57 | 81 |
|
... | ... | |
60 | 84 |
ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager(); |
61 | 85 |
DataSwingManager dataSwingManager = DALSwingLocator.getDataSwingManager(); |
62 | 86 |
|
87 |
this.taskStatusController = ToolsSwingLocator.getTaskStatusSwingManager().createTaskStatusController( |
|
88 |
lblStatusCaption, |
|
89 |
lblStatusMsg, |
|
90 |
pbStatus |
|
91 |
); |
|
92 |
this.taskStatusController.setVisible(false); |
|
93 |
|
|
63 | 94 |
this.translate(); |
64 | 95 |
|
65 | 96 |
this.pickerXMLFile = toolsSwingManager.createFilePickerController( |
66 | 97 |
this.txtXMLFile, |
67 | 98 |
this.btnXMLFile |
68 | 99 |
); |
69 |
|
|
100 |
this.pickerXMLFile.addChangeListener((ChangeEvent e) -> { |
|
101 |
updateStateComponents(); |
|
102 |
}); |
|
103 |
|
|
104 |
this.pickerCharset = toolsSwingManager.createCharsetPickerController( |
|
105 |
null, |
|
106 |
this.cboCharset |
|
107 |
); |
|
108 |
this.pickerCharset.set(Charset.defaultCharset()); |
|
109 |
|
|
70 | 110 |
this.pickerConnection = dataSwingManager.createJDBCConnectionPickerController( |
71 | 111 |
this.cboConnection, |
72 | 112 |
this.btnConnection |
73 | 113 |
); |
114 |
this.pickerConnection.addChangeListener((ChangeEvent e) -> { |
|
115 |
updateStateComponents(); |
|
116 |
}); |
|
117 |
this.chkConnectToRepository.setSelected(true); |
|
74 | 118 |
|
75 |
ToolsSwingUtils.ensureRowsCols(this, 3, 80, 4, 100);
|
|
119 |
ToolsSwingUtils.ensureRowsCols(this, 6, 80, 8, 100);
|
|
76 | 120 |
} |
77 | 121 |
|
78 | 122 |
private void translate() { |
123 |
ToolsSwingManager toolsSwingManager = ToolsSwingLocator.getToolsSwingManager(); |
|
79 | 124 |
|
125 |
toolsSwingManager.translate(lblDatabase); |
|
126 |
toolsSwingManager.translate(lblFileXML); |
|
127 |
toolsSwingManager.translate(lblCharset); |
|
128 |
toolsSwingManager.translate(lblConnectToRepository); |
|
80 | 129 |
} |
81 | 130 |
|
82 |
private void updateEnableComponents() { |
|
131 |
private void updateStateComponents() { |
|
132 |
if( !SwingUtilities.isEventDispatchThread() ) { |
|
133 |
SwingUtilities.invokeLater(this::updateStateComponents); |
|
134 |
return; |
|
135 |
} |
|
136 |
message(null); |
|
137 |
if( this.isProcessing() ) { |
|
138 |
this.pickerXMLFile.setEnabled(false); |
|
139 |
this.pickerCharset.setEnabled(false); |
|
140 |
this.pickerConnection.setEnabled(false); |
|
141 |
if( this.dialog!=null ) { |
|
142 |
this.dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, false); |
|
143 |
} |
|
144 |
return; |
|
145 |
} |
|
146 |
this.pickerXMLFile.setEnabled(true); |
|
147 |
this.pickerCharset.setEnabled(true); |
|
148 |
this.pickerConnection.setEnabled(true); |
|
83 | 149 |
|
150 |
File xmlfile = this.pickerXMLFile.get(); |
|
151 |
if( xmlfile == null || !xmlfile.exists() ) { |
|
152 |
if( xmlfile==null ) { |
|
153 |
this.message("_XML_file_is_required", JOptionPane.WARNING_MESSAGE); |
|
154 |
} else { |
|
155 |
this.message("_XML_file_not_exists", JOptionPane.WARNING_MESSAGE); |
|
156 |
} |
|
157 |
if( this.dialog!=null ) { |
|
158 |
this.dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, false); |
|
159 |
} |
|
160 |
return; |
|
161 |
} |
|
162 |
JDBCServerExplorerParameters conn = this.pickerConnection.get(); |
|
163 |
if( conn==null ) { |
|
164 |
this.message("_Database_is_required", JOptionPane.WARNING_MESSAGE); |
|
165 |
if( this.dialog!=null ) { |
|
166 |
this.dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, false); |
|
167 |
} |
|
168 |
return; |
|
169 |
} |
|
170 |
if( this.dialog!=null ) { |
|
171 |
this.dialog.setButtonEnabled(WindowManager_v2.BUTTON_OK, true); |
|
172 |
} |
|
173 |
this.taskStatusController.setVisible(this.lastTask.needToShowTheStatus()); |
|
84 | 174 |
} |
85 | 175 |
|
86 | 176 |
@Override |
... | ... | |
95 | 185 |
|
96 | 186 |
@Override |
97 | 187 |
public void performAction() { |
188 |
doImportXML(); |
|
189 |
} |
|
190 |
|
|
191 |
private void doImportXML() { |
|
192 |
Xml2dbManager manager = Xml2dbLocator.getXml2dbManager(); |
|
193 |
File xmlfile = this.pickerXMLFile.get(); |
|
194 |
if( xmlfile == null || !xmlfile.exists() ) { |
|
195 |
return; |
|
196 |
} |
|
197 |
JDBCServerExplorerParameters dbparams = this.pickerConnection.get(); |
|
198 |
if( dbparams==null ) { |
|
199 |
return; |
|
200 |
} |
|
201 |
Charset charset = this.pickerCharset.get(); |
|
202 |
boolean connectToRepository = this.chkConnectToRepository.isSelected(); |
|
98 | 203 |
|
204 |
this.lastTask = new Task( |
|
205 |
"Xml2db_copyXmml2Db", |
|
206 |
"Coping XML data", |
|
207 |
this::updateStateComponents, |
|
208 |
taskStatusController |
|
209 |
) { |
|
210 |
@Override |
|
211 |
protected void task(SimpleTaskStatus taskStatus) throws Throwable{ |
|
212 |
try { |
|
213 |
manager.copyXml2Db(xmlfile, charset, dbparams, taskStatus); |
|
214 |
if( connectToRepository) { |
|
215 |
DataSwingManager dataSwingManager = DALSwingLocator.getDataSwingManager(); |
|
216 |
dataSwingManager.connectToDatabaseWorkspace(dbparams); |
|
217 |
} |
|
218 |
} catch(Exception ex) { |
|
219 |
LOGGER.warn("Can't import xml",ex); |
|
220 |
throw ex; |
|
221 |
} |
|
222 |
} |
|
223 |
}; |
|
224 |
this.lastTask.start(); |
|
99 | 225 |
} |
226 |
|
|
227 |
private void message(String msg) { |
|
228 |
message(msg,JOptionPane.INFORMATION_MESSAGE); |
|
229 |
} |
|
230 |
|
|
231 |
private void message(String msg, int type) { |
|
232 |
if( StringUtils.isBlank(msg) ) { |
|
233 |
this.lblStatusMsg.setText(""); |
|
234 |
return; |
|
235 |
} |
|
236 |
if( type == JOptionPane.WARNING_MESSAGE ) { |
|
237 |
msg = Xml2dbSwingCommons.getHTMLColorTag(Color.RED.darker(), msg); |
|
238 |
} |
|
239 |
this.lblStatusMsg.setText(msg); |
|
240 |
this.lblStatusMsg.setVisible(true); |
|
241 |
} |
|
100 | 242 |
|
243 |
private boolean isProcessing() { |
|
244 |
return this.lastTask.isProcessing(); |
|
245 |
} |
|
246 |
|
|
101 | 247 |
} |
Also available in: Unified diff