gvsig-raster / org.gvsig.raster.postgis / trunk / org.gvsig.raster.postgis / org.gvsig.raster.postgis.app / org.gvsig.raster.postgis.app.postgisrasterclient / src / main / java / org / gvsig / raster / postgis / app / postgisrasterclient / gui / AddPostGISRasterLayerWizard.java @ 884
History | View | Annotate | Download (11 KB)
1 |
package org.gvsig.raster.postgis.app.postgisrasterclient.gui; |
---|---|
2 |
|
3 |
import java.awt.event.ActionEvent; |
4 |
import java.awt.event.ActionListener; |
5 |
import java.util.ArrayList; |
6 |
import java.util.Iterator; |
7 |
import java.util.List; |
8 |
import java.util.Map; |
9 |
import java.util.Map.Entry; |
10 |
|
11 |
import javax.swing.JComboBox; |
12 |
import javax.swing.JOptionPane; |
13 |
import javax.swing.JPanel; |
14 |
|
15 |
import org.apache.commons.collections.map.HashedMap; |
16 |
import org.gvsig.andami.PluginServices; |
17 |
import org.gvsig.andami.PluginsLocator; |
18 |
import org.gvsig.andami.PluginsManager; |
19 |
import org.gvsig.andami.messages.NotificationManager; |
20 |
import org.gvsig.andami.ui.mdiManager.IWindow; |
21 |
import org.gvsig.app.gui.WizardPanel; |
22 |
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel; |
23 |
import org.gvsig.fmap.dal.DALLocator; |
24 |
import org.gvsig.fmap.dal.DataManager; |
25 |
import org.gvsig.fmap.dal.DataStoreParameters; |
26 |
import org.gvsig.fmap.dal.exception.DataException; |
27 |
import org.gvsig.fmap.dal.exception.InitializeException; |
28 |
import org.gvsig.fmap.dal.exception.ValidateDataParametersException; |
29 |
import org.gvsig.fmap.dal.serverexplorer.db.DBServerExplorer; |
30 |
import org.gvsig.fmap.dal.serverexplorer.db.DBServerExplorerParameters; |
31 |
import org.gvsig.fmap.dal.store.db.DBStoreParameters; |
32 |
import org.gvsig.geodb.ExtDB_Spatial; |
33 |
import org.gvsig.geodb.vectorialdb.wizard.MyExplorer; |
34 |
import org.gvsig.geodb.vectorialdb.wizard.VectorialDBConnectionParamsDialog; |
35 |
import org.gvsig.raster.postgis.swing.AddLayerUI; |
36 |
import org.gvsig.raster.postgis.swing.PostGISRasterSwingLocator; |
37 |
import org.gvsig.tools.dynobject.DynObject; |
38 |
import org.slf4j.Logger; |
39 |
import org.slf4j.LoggerFactory; |
40 |
|
41 |
public class AddPostGISRasterLayerWizard extends WizardPanel implements ActionListener { |
42 |
private static final long serialVersionUID = 1L; |
43 |
private static final String TAB_NAME = "PostGIS Raster"; |
44 |
private static Logger logger = LoggerFactory.getLogger(AddPostGISRasterLayerWizard.class.getName()); |
45 |
private AbstractViewPanel view = null; |
46 |
private AddLayerUI apiUI = null; |
47 |
private DBServerExplorerParameters dbExplorerParameters = null; |
48 |
|
49 |
public AddPostGISRasterLayerWizard() {
|
50 |
super();
|
51 |
initialize(); |
52 |
} |
53 |
|
54 |
/**
|
55 |
* This method initializes this
|
56 |
*
|
57 |
* @return void
|
58 |
*/
|
59 |
private void initialize() { |
60 |
setTabName(PluginServices.getText(this, TAB_NAME));
|
61 |
setLayout(null);
|
62 |
|
63 |
IWindow iw = PluginServices.getMDIManager().getActiveWindow(); |
64 |
|
65 |
if (iw == null) { |
66 |
return;
|
67 |
} |
68 |
|
69 |
if (!(iw instanceof AbstractViewPanel)) { |
70 |
return;
|
71 |
} |
72 |
|
73 |
apiUI = PostGISRasterSwingLocator.getSwingManager().createAddLayerUI(); |
74 |
apiUI.addListenerToBDSelectionCombo(this);
|
75 |
apiUI.addListenerToNewDBButton(this);
|
76 |
|
77 |
view = (AbstractViewPanel) iw; |
78 |
setMapCtrl(view.getMapControl()); |
79 |
|
80 |
JPanel mainPanel = (JPanel)apiUI.getComponent(); |
81 |
mainPanel.setBounds(new java.awt.Rectangle(0, 0, 501, 350)); |
82 |
add(mainPanel, null);
|
83 |
loadVectorialDBDatasourcesCombo(null);
|
84 |
} |
85 |
|
86 |
/**
|
87 |
* Loads the ComboBox for listing connections
|
88 |
* @param sel
|
89 |
*/
|
90 |
@SuppressWarnings("unchecked") |
91 |
private void loadVectorialDBDatasourcesCombo(MyExplorer sel) { |
92 |
JComboBox combo = apiUI.getDBCombo();
|
93 |
PluginsManager manager = PluginsLocator.getManager(); |
94 |
DynObject values = manager.getPlugin(ExtDB_Spatial.class).getPluginProperties(); |
95 |
Map connections = (Map) values.getDynValue("db_connections"); |
96 |
if (connections != null){ |
97 |
Iterator it = connections.entrySet().iterator();
|
98 |
combo.removeAllItems(); |
99 |
combo.addItem("");
|
100 |
while (it.hasNext()){
|
101 |
Map.Entry entry = (Entry) it.next();
|
102 |
MyExplorer myExplorer = new MyExplorer();
|
103 |
myExplorer.setDbExplorerParameters((DBServerExplorerParameters) entry.getValue()); |
104 |
myExplorer.setName((String) entry.getKey());
|
105 |
combo.addItem(myExplorer); |
106 |
if(sel!=null && sel.getName().equalsIgnoreCase(myExplorer.getName())){ |
107 |
combo.setSelectedItem(myExplorer); |
108 |
} |
109 |
} |
110 |
} else {
|
111 |
connections = new HashedMap();
|
112 |
values.setDynValue("db_connections", connections);
|
113 |
} |
114 |
} |
115 |
|
116 |
/*public Object executeWizard() {
|
117 |
ArrayList<Object> tableList = apiUI.getSelectedTables();
|
118 |
|
119 |
DataManager man = DALLocator.getDataManager();
|
120 |
FeatureStore store;
|
121 |
|
122 |
String docName;
|
123 |
TableDocument document;
|
124 |
Project project = ProjectManager.getInstance().getCurrentProject();
|
125 |
|
126 |
ApplicationManager appGvSIGMan = ApplicationLocator.getManager();
|
127 |
PrepareContext context = this.getPrepareDataStoreContext();
|
128 |
DBStoreParameters storeParams;
|
129 |
List<TableDocument> tabledocs =
|
130 |
new ArrayList<TableDocument>(tables.length);
|
131 |
for (TablesListItem table : tables) {
|
132 |
storeParams = getParameterForTable(table);
|
133 |
|
134 |
try {
|
135 |
storeParams = (DBStoreParameters) appGvSIGMan
|
136 |
.prepareOpenDataStoreParameters(storeParams, context);
|
137 |
} catch (Exception e2) {
|
138 |
NotificationManager.addError(e2);
|
139 |
continue;
|
140 |
}
|
141 |
|
142 |
UserTableSettingsPanel userTableSettingsPanel = table
|
143 |
.getUserTableSettingsPanel();
|
144 |
|
145 |
docName = userTableSettingsPanel.getUserLayerName();
|
146 |
try {
|
147 |
store = (FeatureStore) man.openStore(storeParams.getDataStoreName(), storeParams);
|
148 |
} catch (Exception e) {
|
149 |
NotificationManager.addError(e);
|
150 |
return null;
|
151 |
}
|
152 |
|
153 |
try {
|
154 |
appGvSIGMan.pepareOpenDataSource(
|
155 |
store, context);
|
156 |
} catch (Exception e) {
|
157 |
NotificationManager.addError(e);
|
158 |
store.dispose();
|
159 |
return null;
|
160 |
}
|
161 |
|
162 |
document = (TableDocument) ProjectManager.getInstance().createDocument(TableManager.TYPENAME, docName);
|
163 |
document.setStore(store);
|
164 |
// project.add(document);
|
165 |
tabledocs.add(document);
|
166 |
}
|
167 |
return tabledocs;
|
168 |
}
|
169 |
|
170 |
protected PrepareContext getPrepareDataStoreContext() {
|
171 |
if (this.prepareDSContext == null) {
|
172 |
this.prepareDSContext = new PrepareContext() {
|
173 |
public Window getOwnerWindow() {
|
174 |
return null;
|
175 |
}
|
176 |
public IProjection getViewProjection() {
|
177 |
return null;
|
178 |
}
|
179 |
};
|
180 |
}
|
181 |
return this.prepareDSContext;
|
182 |
}
|
183 |
|
184 |
protected DBStoreParameters getParameterForTable(TablesListItem table) {
|
185 |
DBStoreParameters parameters = table.getParameters();
|
186 |
|
187 |
UserTableSettingsPanel userTableSettingsPanel = table.getUserTableSettingsPanel();
|
188 |
|
189 |
String fidField = userTableSettingsPanel.getIdFieldName();
|
190 |
if (!(fidField.startsWith("{") && fidField.endsWith("}"))) {
|
191 |
parameters.setPkFields(new String[] { fidField });
|
192 |
fidField = null;
|
193 |
}
|
194 |
String[] fields = table.getUserSelectedFieldsPanel()
|
195 |
.getUserSelectedFields(fidField, null);
|
196 |
|
197 |
if (userTableSettingsPanel.isSqlActive()) {
|
198 |
String whereClause = userTableSettingsPanel
|
199 |
.getWhereClause();
|
200 |
parameters.setBaseFilter(whereClause);
|
201 |
} else {
|
202 |
parameters.setBaseFilter("");
|
203 |
}
|
204 |
|
205 |
parameters.setFields(fields);
|
206 |
return parameters;
|
207 |
}*/
|
208 |
|
209 |
@Override
|
210 |
public void close() { |
211 |
|
212 |
} |
213 |
|
214 |
@Override
|
215 |
public void execute() { |
216 |
executeWizard(); |
217 |
} |
218 |
|
219 |
@Override
|
220 |
public DataStoreParameters[] getParameters() { |
221 |
return null; |
222 |
} |
223 |
|
224 |
@Override
|
225 |
public void initWizard() { |
226 |
|
227 |
} |
228 |
|
229 |
/**
|
230 |
* Updates the JList component with the list of tables of
|
231 |
* the selected database.
|
232 |
*
|
233 |
* @param dbSeverExplorerParameters2
|
234 |
*/
|
235 |
@SuppressWarnings("unchecked") |
236 |
private void updateTableList( |
237 |
DBServerExplorerParameters dbSeverExplorerParameters2) { |
238 |
if (dbSeverExplorerParameters2 == null) { |
239 |
return;
|
240 |
} |
241 |
DataManager dm = DALLocator.getDataManager(); |
242 |
DBServerExplorer dbExplorer = null;
|
243 |
try {
|
244 |
dbExplorer = (DBServerExplorer) dm.openServerExplorer(dbSeverExplorerParameters2.getExplorerName(), dbSeverExplorerParameters2); |
245 |
|
246 |
List parameters = dbExplorer.list();
|
247 |
|
248 |
Iterator iter = parameters.iterator();
|
249 |
DBStoreParameters param = null;
|
250 |
apiUI.clearList(); |
251 |
while (iter.hasNext()) {
|
252 |
param = (DBStoreParameters) iter.next(); |
253 |
apiUI.addElementToTable(new TableListItem(dbExplorer, param));
|
254 |
} |
255 |
|
256 |
} catch (InitializeException e) {
|
257 |
logger.error("While getting table names: " + e.getMessage(), e);
|
258 |
NotificationManager.showMessageError("While getting table names: "
|
259 |
+ e.getMessage(), e); |
260 |
return;
|
261 |
} catch (DataException e) {
|
262 |
logger.error("While getting table names: " + e.getMessage(), e);
|
263 |
NotificationManager.showMessageError("While getting table names: "
|
264 |
+ e.getMessage(), e); |
265 |
return;
|
266 |
} catch (ValidateDataParametersException e) {
|
267 |
logger.error("While getting table names: " + e.getMessage(), e);
|
268 |
NotificationManager.showMessageError("While getting table names: "
|
269 |
+ e.getMessage(), e); |
270 |
return;
|
271 |
} |
272 |
} |
273 |
|
274 |
/*
|
275 |
* (non-Javadoc)
|
276 |
* @see java.awt.event.ActionListener#actionPerformed(java.awt.event.ActionEvent)
|
277 |
*/
|
278 |
public void actionPerformed(ActionEvent e) { |
279 |
if (apiUI.isAddDBEventObject(e.getSource())) {
|
280 |
MyExplorer sel = addNewConnection(); |
281 |
|
282 |
if (sel != null) { |
283 |
dbExplorerParameters = sel.getDbSeverExplorerParameters(); |
284 |
loadVectorialDBDatasourcesCombo(sel); |
285 |
apiUI.getDBCombo().setSelectedItem(sel); |
286 |
} |
287 |
} |
288 |
|
289 |
if(e.getSource() == apiUI.getDBCombo()) {
|
290 |
JComboBox dbCombo = apiUI.getDBCombo();
|
291 |
if(dbCombo.getItemCount() == 0) { |
292 |
apiUI.clearList(); |
293 |
} else {
|
294 |
Object selected = dbCombo.getSelectedItem();
|
295 |
if(selected == null) |
296 |
return;
|
297 |
if (selected instanceof MyExplorer) { |
298 |
MyExplorer sel_obj = (MyExplorer) selected; |
299 |
dbCombo.repaint(); |
300 |
dbExplorerParameters = sel_obj.getDbSeverExplorerParameters(); |
301 |
updateTableList(dbExplorerParameters); |
302 |
} |
303 |
} |
304 |
} |
305 |
} |
306 |
|
307 |
/**
|
308 |
* Adds a new connection using the generic dialog. This function
|
309 |
* is used when the button add new connection is pressed by the user
|
310 |
* @return
|
311 |
*/
|
312 |
@SuppressWarnings("unchecked") |
313 |
private MyExplorer addNewConnection() {
|
314 |
MyExplorer myExplorer = new MyExplorer();
|
315 |
DBServerExplorerParameters resp = null;
|
316 |
|
317 |
VectorialDBConnectionParamsDialog newco = new VectorialDBConnectionParamsDialog();
|
318 |
newco.showDialog(); |
319 |
|
320 |
if (newco.isOkPressed()) {
|
321 |
try {
|
322 |
resp = newco.getParameters(); |
323 |
} catch (Exception e) { |
324 |
showConnectionErrorMessage(e.getMessage()); |
325 |
return null; |
326 |
} |
327 |
PluginsManager manager = PluginsLocator.getManager(); |
328 |
DynObject values = manager.getPlugin(ExtDB_Spatial.class).getPluginProperties(); |
329 |
Map connections = (Map) values.getDynValue("db_connections"); |
330 |
if(connections == null){ |
331 |
connections = new HashedMap();
|
332 |
values.setDynValue("db_connections", connections);
|
333 |
} |
334 |
connections.put(newco.getConnectionName(), resp); |
335 |
|
336 |
myExplorer.setDbExplorerParameters(resp); |
337 |
myExplorer.setName(newco.getConnectionName()); |
338 |
return myExplorer;
|
339 |
} else {
|
340 |
return null; |
341 |
} |
342 |
} |
343 |
|
344 |
/**
|
345 |
* Shows an error
|
346 |
* @param _msg
|
347 |
*/
|
348 |
private void showConnectionErrorMessage(String _msg) { |
349 |
String msg = (_msg.length() > 300) ? "" : (": " + _msg); |
350 |
String title = PluginServices.getText(this, "connection_error"); |
351 |
JOptionPane.showMessageDialog(apiUI.getComponent(), title + msg, title,
|
352 |
JOptionPane.ERROR_MESSAGE);
|
353 |
} |
354 |
|
355 |
} |