Revision 1983 org.gvsig.raster.wcs/trunk/org.gvsig.raster.wcs/org.gvsig.raster.wcs.app.wcsclient/src/main/java/org/gvsig/raster/wcs/app/wcsclient/gui/wizard/WCSWizard.java
WCSWizard.java | ||
---|---|---|
27 | 27 |
import java.awt.event.ActionEvent; |
28 | 28 |
import java.awt.event.ActionListener; |
29 | 29 |
import java.awt.geom.Rectangle2D; |
30 |
import java.io.File; |
|
31 |
import java.io.FileInputStream; |
|
32 |
import java.io.FileNotFoundException; |
|
33 |
import java.io.FileOutputStream; |
|
30 | 34 |
import java.io.IOException; |
31 | 35 |
import java.net.MalformedURLException; |
32 | 36 |
import java.net.URL; |
37 |
import java.util.Properties; |
|
33 | 38 |
import java.util.prefs.Preferences; |
34 | 39 |
|
35 | 40 |
import javax.swing.DefaultComboBoxModel; |
... | ... | |
41 | 46 |
import javax.swing.JScrollPane; |
42 | 47 |
import javax.swing.JTextArea; |
43 | 48 |
|
44 |
import org.cresques.cts.IProjection;
|
|
49 |
import org.gvsig.andami.Launcher;
|
|
45 | 50 |
import org.gvsig.andami.PluginServices; |
51 |
import org.gvsig.andami.PluginsLocator; |
|
46 | 52 |
import org.gvsig.andami.persistence.serverData.ServerDataPersistence; |
47 |
import org.gvsig.andami.ui.mdiManager.IWindow; |
|
48 | 53 |
import org.gvsig.app.gui.WizardPanel; |
49 | 54 |
import org.gvsig.app.gui.wizards.WizardListener; |
50 | 55 |
import org.gvsig.app.gui.wizards.WizardListenerSupport; |
51 |
import org.gvsig.app.project.documents.view.gui.AbstractViewPanel; |
|
52 | 56 |
import org.gvsig.compat.net.ICancellable; |
53 | 57 |
import org.gvsig.fmap.dal.DALLocator; |
54 | 58 |
import org.gvsig.fmap.dal.DataManager; |
... | ... | |
65 | 69 |
import org.gvsig.raster.wcs.app.wcsclient.gui.panel.WCSParamsPanel; |
66 | 70 |
import org.gvsig.raster.wcs.io.WCSServerExplorer; |
67 | 71 |
import org.gvsig.raster.wcs.io.WCSServerExplorerParameters; |
68 |
import org.gvsig.utils.NotExistInXMLEntity;
|
|
69 |
import org.gvsig.utils.XMLEntity;
|
|
72 |
import org.gvsig.tools.ToolsLocator;
|
|
73 |
import org.gvsig.tools.persistence.PersistenceManager;
|
|
70 | 74 |
import org.gvsig.utils.swing.jcomboServer.JComboServer; |
71 | 75 |
import org.gvsig.utils.swing.jcomboServer.ServerData; |
72 | 76 |
import org.slf4j.Logger; |
... | ... | |
82 | 86 |
public class WCSWizard extends WizardPanel implements ActionListener { |
83 | 87 |
final static private Logger logger = LoggerFactory.getLogger(WCSWizard.class); |
84 | 88 |
private static final long serialVersionUID = 1L; |
89 |
private String pluginName = "org.gvsig.raster.wcs.app.wcsclient"; |
|
90 |
private File pluginPersistenceFile = null; |
|
91 |
private File serverPropertiesFile = null; |
|
92 |
private ServerDataPersistence serverDataPersistence = null; |
|
93 |
private String serversPropsFile = "servers.properties"; |
|
94 |
|
|
95 |
|
|
85 | 96 |
protected int page = 0; |
86 | 97 |
protected boolean connected = false; |
87 | 98 |
private JComboServer cmbHost = null; |
... | ... | |
107 | 118 |
private boolean refreshing = fPrefs.getBoolean("refresh_capabilities", false); |
108 | 119 |
protected int firstPage = 0; |
109 | 120 |
private JPanel pnlName = null; |
110 |
private IProjection proj = null; |
|
111 | 121 |
private ICancellable cancel = null; |
112 | 122 |
private WCSServerExplorer explorer = null; |
113 | 123 |
|
... | ... | |
161 | 171 |
page = firstPage; |
162 | 172 |
initialize(); |
163 | 173 |
|
164 |
IWindow[] windows = PluginServices.getMDIManager().getAllWindows(); |
|
174 |
/*IWindow[] windows = PluginServices.getMDIManager().getAllWindows();
|
|
165 | 175 |
for (int i = 0; i < windows.length; i++) { |
166 | 176 |
if(windows[i] instanceof AbstractViewPanel) |
167 | 177 |
proj = ((AbstractViewPanel)windows[i]).getProjection(); |
168 |
} |
|
178 |
}*/
|
|
169 | 179 |
cancel = new CancelTaskImpl(); |
170 | 180 |
} |
171 | 181 |
/** |
... | ... | |
225 | 235 |
} |
226 | 236 |
|
227 | 237 |
/** |
228 |
* DOCUMENT ME! |
|
229 |
* |
|
230 |
* @param host DOCUMENT ME! |
|
231 |
*/ |
|
232 |
private void addHost(String host) { |
|
233 |
host = host.trim(); |
|
234 |
|
|
235 |
ServerDataPersistence persistence = new ServerDataPersistence(this,ServerData.SERVER_TYPE_WCS); |
|
236 |
persistence.addServerData(new ServerData(host, ServerData.SERVER_TYPE_WCS)); |
|
237 |
persistence.setPersistent(); |
|
238 |
} |
|
239 |
|
|
240 |
/** |
|
241 | 238 |
* Thread to connect to a WCS server |
242 | 239 |
* @author Nacho Brodin (nachobrodin@gmail.com) |
243 | 240 |
*/ |
... | ... | |
258 | 255 |
|
259 | 256 |
try { |
260 | 257 |
explorer.connect(cancel); |
258 |
saveServerListFromComboBox(); |
|
261 | 259 |
} catch (RemoteServiceException e) { |
262 | 260 |
String msg = e.getMessage() + " : " + getIOExceptionMessage(e); |
263 | 261 |
logger.info(msg, e); |
... | ... | |
317 | 315 |
*/ |
318 | 316 |
private void rellenarControles() { |
319 | 317 |
try { |
320 |
String host = cmbHost.getModel().getSelectedItem().toString(); |
|
318 |
//String host = cmbHost.getModel().getSelectedItem().toString();
|
|
321 | 319 |
|
322 | 320 |
lblTitle.setText(explorer.getTitle()); |
323 | 321 |
lblServerTypeValue.setText(explorer.getServerType()); |
324 | 322 |
txtAbstract.setText(explorer.getAbstract()); |
325 | 323 |
|
326 |
addHost(host); |
|
327 | 324 |
wcsParamsPanel.setWizardData(explorer); |
328 | 325 |
connected = true; |
329 | 326 |
activarVisualizarBotones(); |
... | ... | |
414 | 411 |
cmbHost.setPreferredSize(new java.awt.Dimension(350, 20)); |
415 | 412 |
cmbHost.setBounds(11, 26, 454, 20); |
416 | 413 |
cmbHost.setEditable(true); |
414 |
cmbHost.setServerList(getServerDataPersistence().getArrayOfServerData()); |
|
415 |
} |
|
417 | 416 |
|
418 |
ServerDataPersistence persistence = new ServerDataPersistence(this,ServerData.SERVER_TYPE_WCS); |
|
419 |
ServerData[] servers = persistence.getArrayOfServerData(); |
|
417 |
return cmbHost; |
|
418 |
} |
|
419 |
|
|
420 |
/** |
|
421 |
* Gets the list of servers that have been persisted or added in the properties file |
|
422 |
* @return |
|
423 |
*/ |
|
424 |
private ServerDataPersistence getServerDataPersistence() { |
|
425 |
if(serverDataPersistence == null) { |
|
426 |
PersistenceManager persistenceManager = ToolsLocator.getPersistenceManager(); |
|
420 | 427 |
|
421 |
if (servers.length == 0){ |
|
422 |
PluginServices ps = PluginServices.getPluginServices(this); |
|
423 |
XMLEntity xml = ps.getPersistentXML(); |
|
424 |
try { |
|
425 |
String[] oldServers = xml.getStringArrayProperty("wcs-servers"); |
|
426 |
servers = new ServerData[oldServers.length]; |
|
427 |
for (int i=0; i<oldServers.length; i++) { |
|
428 |
servers[i] = new ServerData(oldServers[i],ServerData.SERVER_TYPE_WCS); |
|
429 |
} |
|
430 |
xml.remove("wcs-servers"); |
|
431 |
ps.setPersistentXML(xml); |
|
432 |
} catch (NotExistInXMLEntity e) { |
|
433 |
// Old servers doesn't exist |
|
434 |
servers = new ServerData[2]; |
|
435 |
servers[0] = new ServerData("http://maps.gdal.org/cgi-bin/mapserv_dem",ServerData.SERVER_TYPE_WCS); |
|
436 |
servers[1] = new ServerData("http://inspire.cop.gva.es/mapserver/wcs",ServerData.SERVER_TYPE_WCS); |
|
428 |
//Lee los servidores de la persistencia |
|
429 |
try { |
|
430 |
FileInputStream is = new FileInputStream(getPluginPersistenceFile()); |
|
431 |
serverDataPersistence = (ServerDataPersistence) persistenceManager.getObject(is); |
|
432 |
} catch (FileNotFoundException e) { |
|
433 |
logger.info("Persistence file not found for WMS plugin", e); |
|
434 |
} |
|
435 |
|
|
436 |
if(serverDataPersistence == null) |
|
437 |
serverDataPersistence = new ServerDataPersistence(ServerData.SERVER_TYPE_WCS); |
|
438 |
|
|
439 |
//Lee los servidores del properties y los mezcla con los que hay en la persistencia |
|
440 |
Properties prop = new Properties(); |
|
441 |
try { |
|
442 |
prop.load(new FileInputStream(getServerPropertiesFile())); |
|
443 |
} catch (FileNotFoundException e) { |
|
444 |
logger.info("Properties file not found for WMS plugin", e); |
|
445 |
} catch (IOException e) { |
|
446 |
logger.info("Error reading properties file", e); |
|
447 |
} |
|
448 |
|
|
449 |
boolean newProjectServers = false; |
|
450 |
for (int i = 0; i < prop.size(); i++) { |
|
451 |
Object value = prop.get("server[" + i + "]"); |
|
452 |
if(!serverDataPersistence.existsServer(value.toString())) { |
|
453 |
serverDataPersistence.addServerData(new ServerData(value.toString(), ServerData.SERVER_TYPE_WCS)); |
|
454 |
newProjectServers = true; |
|
437 | 455 |
} |
456 |
} |
|
438 | 457 |
|
439 |
for (int i=0 ; i<servers.length ; i++){ |
|
440 |
persistence.addServerData(servers[i]); |
|
458 |
//Si hay servidores nuevos los persiste |
|
459 |
if(newProjectServers) { |
|
460 |
try { |
|
461 |
FileOutputStream os = new FileOutputStream(getPluginPersistenceFile()); |
|
462 |
persistenceManager.putObject(os, serverDataPersistence); |
|
463 |
} catch (FileNotFoundException e) { |
|
464 |
logger.info("Persistence file not found for WMS plugin", e); |
|
441 | 465 |
} |
442 |
persistence.setPersistent(); |
|
443 | 466 |
} |
444 |
|
|
445 |
cmbHost.setServerList(servers); |
|
446 | 467 |
} |
447 | 468 |
|
448 |
return cmbHost;
|
|
469 |
return serverDataPersistence;
|
|
449 | 470 |
} |
471 |
|
|
472 |
/** |
|
473 |
* Saves the list of server reading from the <code>ComboBox</code> |
|
474 |
*/ |
|
475 |
private void saveServerListFromComboBox() { |
|
476 |
PersistenceManager persistenceManager = ToolsLocator.getPersistenceManager(); |
|
477 |
ServerDataPersistence persistence = new ServerDataPersistence(ServerData.SERVER_TYPE_WCS); |
|
478 |
String urlSelected = getTxtHost().getModel().getSelectedItem().toString(); |
|
479 |
|
|
480 |
boolean isSelectedInModel = false; |
|
481 |
for (int i = 0; i < getTxtHost().getItemCount(); i++) { |
|
482 |
String url = getTxtHost().getItemAt(i).toString(); |
|
483 |
persistence.addServerData(new ServerData(url, ServerData.SERVER_TYPE_WCS)); |
|
484 |
if(url.equals(urlSelected)) |
|
485 |
isSelectedInModel = true; |
|
486 |
} |
|
487 |
|
|
488 |
if(!isSelectedInModel) |
|
489 |
persistence.addServerData(new ServerData(urlSelected, ServerData.SERVER_TYPE_WCS)); |
|
490 |
|
|
491 |
if(getServerDataPersistence().compareTo(persistence) != 0) { |
|
492 |
try { |
|
493 |
FileOutputStream os = new FileOutputStream(getPluginPersistenceFile()); |
|
494 |
persistenceManager.putObject(os, persistence); |
|
495 |
} catch (FileNotFoundException e) { |
|
496 |
logger.info("Persistence file not found for WMS plugin", e); |
|
497 |
} |
|
498 |
} |
|
499 |
} |
|
500 |
|
|
501 |
/** |
|
502 |
* Gets the persistence file of this plugin |
|
503 |
* @return |
|
504 |
*/ |
|
505 |
private File getPluginPersistenceFile() { |
|
506 |
if(pluginPersistenceFile == null) { |
|
507 |
File persistenceFolder = new File(Launcher.getAppHomeDir() |
|
508 |
+ File.separator + "plugins" + File.separator + pluginName); |
|
509 |
|
|
510 |
if (!persistenceFolder.exists()) { |
|
511 |
persistenceFolder.mkdirs(); |
|
512 |
} |
|
513 |
|
|
514 |
pluginPersistenceFile = new File(persistenceFolder.getAbsolutePath() + |
|
515 |
File.separator + |
|
516 |
"plugin-persistence.dat"); |
|
517 |
} |
|
518 |
return pluginPersistenceFile; |
|
519 |
} |
|
520 |
|
|
521 |
/** |
|
522 |
* Gets the file which contains the default list of servers |
|
523 |
* @return |
|
524 |
*/ |
|
525 |
private File getServerPropertiesFile() { |
|
526 |
if(serverPropertiesFile == null) { |
|
527 |
File pluginFolder = PluginsLocator.getManager().getPluginsFolder(); |
|
528 |
serverPropertiesFile = new File(pluginFolder.getAbsolutePath() + |
|
529 |
File.separator + |
|
530 |
pluginName + |
|
531 |
File.separator + |
|
532 |
serversPropsFile); |
|
533 |
} |
|
534 |
return serverPropertiesFile; |
|
535 |
} |
|
450 | 536 |
|
451 | 537 |
/** |
452 | 538 |
* This method initializes btnDetalles |
Also available in: Unified diff