Revision 1983 org.gvsig.raster.wmts/trunk/org.gvsig.raster.wmts/org.gvsig.raster.wmts.app.wmtsclient/src/main/java/org/gvsig/raster/wmts/app/wmtsclient/gui/wizard/WMTSWizard.java
WMTSWizard.java | ||
---|---|---|
24 | 24 |
|
25 | 25 |
import java.awt.GridBagConstraints; |
26 | 26 |
import java.awt.GridBagLayout; |
27 |
import java.awt.HeadlessException; |
|
28 | 27 |
import java.awt.event.ActionEvent; |
29 | 28 |
import java.awt.event.ActionListener; |
29 |
import java.io.File; |
|
30 |
import java.io.FileInputStream; |
|
31 |
import java.io.FileNotFoundException; |
|
32 |
import java.io.FileOutputStream; |
|
30 | 33 |
import java.io.IOException; |
31 | 34 |
import java.net.MalformedURLException; |
32 | 35 |
import java.net.URL; |
33 |
import java.net.UnknownHostException;
|
|
36 |
import java.util.Properties;
|
|
34 | 37 |
import java.util.prefs.Preferences; |
35 | 38 |
|
36 | 39 |
import javax.swing.JOptionPane; |
37 | 40 |
import javax.swing.JPanel; |
38 | 41 |
|
39 | 42 |
import org.cresques.cts.IProjection; |
43 |
import org.gvsig.andami.Launcher; |
|
40 | 44 |
import org.gvsig.andami.PluginServices; |
45 |
import org.gvsig.andami.PluginsLocator; |
|
41 | 46 |
import org.gvsig.andami.persistence.serverData.ServerDataPersistence; |
42 | 47 |
import org.gvsig.andami.ui.mdiManager.IWindow; |
43 | 48 |
import org.gvsig.app.gui.WizardPanel; |
... | ... | |
65 | 70 |
import org.gvsig.raster.wmts.io.WMTSServerExplorerParameters; |
66 | 71 |
import org.gvsig.raster.wmts.ogc.exception.WMTSException; |
67 | 72 |
import org.gvsig.raster.wmts.ogc.struct.WMTSServiceIdentification; |
73 |
import org.gvsig.tools.ToolsLocator; |
|
74 |
import org.gvsig.tools.persistence.PersistenceManager; |
|
68 | 75 |
import org.gvsig.utils.NotExistInXMLEntity; |
69 | 76 |
import org.gvsig.utils.XMLEntity; |
70 | 77 |
import org.gvsig.utils.swing.jcomboServer.ServerData; |
78 |
import org.slf4j.Logger; |
|
79 |
import org.slf4j.LoggerFactory; |
|
71 | 80 |
|
72 | 81 |
/** |
73 | 82 |
* The WMTS properties container panel. |
... | ... | |
75 | 84 |
*/ |
76 | 85 |
@SuppressWarnings({ "unused", "deprecation" }) |
77 | 86 |
public class WMTSWizard extends WizardPanel implements ActionListener { |
78 |
private static final long serialVersionUID = 1L; |
|
79 |
//private static Logger logger = Logger.getLogger(WMTSWizard.class.getName()); |
|
80 |
protected int page = 0; |
|
81 |
protected boolean connected = false; |
|
82 |
private IServerPanel serverPanel = null; |
|
83 |
private NextPrevPanel nextPrevPanel = null; |
|
87 |
private static final long serialVersionUID = 1L; |
|
88 |
private static Logger logger = LoggerFactory.getLogger(WMTSWizard.class); |
|
89 |
private String pluginName = "org.gvsig.raster.wmts.app.wmtsclient"; |
|
90 |
private File pluginPersistenceFile = null; |
|
91 |
private File serverPropertiesFile = null; |
|
92 |
private ServerDataPersistence serverDataPersistence = null; |
|
93 |
private String serversPropsFile = "servers.properties"; |
|
84 | 94 |
|
85 |
private WizardListenerSupport listenerSupport = null; |
|
86 |
protected WMTSParamsPanel wmtsParamsPanel = null; |
|
87 |
private static Preferences fPrefs = Preferences.userRoot().node( "gvsig.wmts-wizard" ); |
|
88 |
private boolean refreshing = fPrefs.getBoolean("refresh_capabilities", false); |
|
89 |
protected int firstPage = 0; |
|
90 |
private IProjection proj = null; |
|
91 |
private ICancellable cancel = null; |
|
92 |
private WMTSDataParameters storeParams = null; |
|
93 |
private WMTSServerExplorer explorer = null; |
|
95 |
protected int page = 0; |
|
96 |
protected boolean connected = false; |
|
97 |
private IServerPanel serverPanel = null; |
|
98 |
private NextPrevPanel nextPrevPanel = null; |
|
99 |
|
|
100 |
private WizardListenerSupport listenerSupport = null; |
|
101 |
protected WMTSParamsPanel wmtsParamsPanel = null; |
|
102 |
private static Preferences fPrefs = Preferences.userRoot().node( "gvsig.wmts-wizard" ); |
|
103 |
private boolean refreshing = fPrefs.getBoolean("refresh_capabilities", false); |
|
104 |
protected int firstPage = 0; |
|
105 |
private IProjection proj = null; |
|
106 |
private ICancellable cancel = null; |
|
107 |
private WMTSDataParameters storeParams = null; |
|
108 |
private WMTSServerExplorer explorer = null; |
|
94 | 109 |
|
95 | 110 |
/** |
96 | 111 |
* This is the default constructor |
... | ... | |
132 | 147 |
gridBagConstraints1.gridy = 1; |
133 | 148 |
add(getNextPrevPanel(), gridBagConstraints1); |
134 | 149 |
activarVisualizarBotones(); |
135 |
loadServers();
|
|
150 |
serverPanel.getTxtHost().setServerList(getServerDataPersistence().getArrayOfServerData());
|
|
136 | 151 |
} |
137 | 152 |
|
138 | 153 |
/** |
... | ... | |
166 | 181 |
} |
167 | 182 |
|
168 | 183 |
/** |
169 |
* DOCUMENT ME! |
|
170 |
* |
|
171 |
* @param host DOCUMENT ME! |
|
172 |
*/ |
|
173 |
private void addHost(String host) { |
|
174 |
host = host.trim(); |
|
175 |
|
|
176 |
ServerDataPersistence persistence = new ServerDataPersistence(this,ServerData.SERVER_TYPE_WMTS); |
|
177 |
persistence.addServerData(new ServerData(host, ServerData.SERVER_TYPE_WMTS)); |
|
178 |
persistence.setPersistent(); |
|
179 |
} |
|
180 |
|
|
181 |
/** |
|
182 | 184 |
* Thread to connect to a WMTS server |
183 | 185 |
* @author Nacho Brodin (nachobrodin@gmail.com) |
184 | 186 |
*/ |
... | ... | |
199 | 201 |
|
200 | 202 |
try { |
201 | 203 |
explorer.connect(cancel); |
204 |
saveServerListFromComboBox(); |
|
202 | 205 |
} catch (WMTSException e) { |
203 | 206 |
serverPanel.getTxtAbstract().setText("Connection closed... \n" + e.getMessage()); |
204 | 207 |
JOptionPane.showMessageDialog(null, Messages.getText("wmts_cant_connect"), Messages.getText("Error"), JOptionPane.ERROR_MESSAGE); |
... | ... | |
247 | 250 |
nextPrevPanel.getJLabelServerTypeValue().setText(id.getServiceType()); |
248 | 251 |
serverPanel.getTxtAbstract().setText(id.getAbstract()); |
249 | 252 |
|
250 |
addHost(host); |
|
251 | 253 |
wmtsParamsPanel.setWizardData(explorer); |
252 | 254 |
connected = true; |
253 | 255 |
activarVisualizarBotones(); |
... | ... | |
383 | 385 |
getWizardListenerSupport().callStateChanged(wmtsParamsPanel.isCorrectlyConfigured()); |
384 | 386 |
} |
385 | 387 |
} |
386 |
|
|
388 |
|
|
387 | 389 |
/** |
388 |
* This method initializes txtHost
|
|
389 |
* @return javax.swing.JTextField
|
|
390 |
* Gets the list of servers that have been persisted or added in the properties file
|
|
391 |
* @return |
|
390 | 392 |
*/ |
391 |
private void loadServers() {
|
|
392 |
ServerDataPersistence persistence = new ServerDataPersistence(this, ServerData.SERVER_TYPE_WMTS);
|
|
393 |
ServerData[] servers = persistence.getArrayOfServerData();
|
|
393 |
private ServerDataPersistence getServerDataPersistence() {
|
|
394 |
if(serverDataPersistence == null) {
|
|
395 |
PersistenceManager persistenceManager = ToolsLocator.getPersistenceManager();
|
|
394 | 396 |
|
395 |
if (servers.length == 0) { |
|
396 |
PluginServices ps = PluginServices.getPluginServices(this); |
|
397 |
XMLEntity xml = ps.getPersistentXML(); |
|
397 |
//Lee los servidores de la persistencia |
|
398 | 398 |
try { |
399 |
String[] oldServers = xml.getStringArrayProperty("wmts-servers"); |
|
400 |
servers = new ServerData[oldServers.length]; |
|
401 |
for (int i = 0; i < oldServers.length; i++) { |
|
402 |
servers[i] = new ServerData(oldServers[i], ServerData.SERVER_TYPE_WMTS); |
|
399 |
FileInputStream is = new FileInputStream(getPluginPersistenceFile()); |
|
400 |
serverDataPersistence = (ServerDataPersistence) persistenceManager.getObject(is); |
|
401 |
} catch (FileNotFoundException e) { |
|
402 |
logger.info("Persistence file not found for WMS plugin", e); |
|
403 |
} |
|
404 |
|
|
405 |
if(serverDataPersistence == null) |
|
406 |
serverDataPersistence = new ServerDataPersistence(ServerData.SERVER_TYPE_WMTS); |
|
407 |
|
|
408 |
//Lee los servidores del properties y los mezcla con los que hay en la persistencia |
|
409 |
Properties prop = new Properties(); |
|
410 |
try { |
|
411 |
prop.load(new FileInputStream(getServerPropertiesFile())); |
|
412 |
} catch (FileNotFoundException e) { |
|
413 |
logger.info("Properties file not found for WMS plugin", e); |
|
414 |
} catch (IOException e) { |
|
415 |
logger.info("Error reading properties file", e); |
|
416 |
} |
|
417 |
|
|
418 |
boolean newProjectServers = false; |
|
419 |
for (int i = 0; i < prop.size(); i++) { |
|
420 |
Object value = prop.get("server[" + i + "]"); |
|
421 |
if(!serverDataPersistence.existsServer(value.toString())) { |
|
422 |
serverDataPersistence.addServerData(new ServerData(value.toString(), ServerData.SERVER_TYPE_WMTS)); |
|
423 |
newProjectServers = true; |
|
403 | 424 |
} |
404 |
xml.remove("wmts-servers"); |
|
405 |
ps.setPersistentXML(xml); |
|
406 |
} catch (NotExistInXMLEntity e) { |
|
407 |
// Old servers doesn't exist |
|
408 |
servers = new ServerData[2]; |
|
409 |
servers[0] = new ServerData("http://v2.suite.opengeo.org/geoserver/gwc/service/wmts/", ServerData.SERVER_TYPE_WMTS); |
|
410 |
servers[1] = new ServerData("http://maps.opengeo.org/geowebcache/service/wmts", ServerData.SERVER_TYPE_WMTS); |
|
411 |
|
|
412 |
/*servers[0] = new ServerData("http://www.ign.es/wmts/ign-base", ServerData.SERVER_TYPE_WMTS); |
|
413 |
servers[1] = new ServerData("http://maps.opengeo.org/geowebcache/service/wmts", ServerData.SERVER_TYPE_WMTS); |
|
414 |
servers[2] = new ServerData("http://v2.suite.opengeo.org/geoserver/gwc/service/wmts/", ServerData.SERVER_TYPE_WMTS);*/ |
|
415 | 425 |
} |
416 | 426 |
|
417 |
for (int i = 0; i < servers.length; i++) { |
|
418 |
persistence.addServerData(servers[i]); |
|
427 |
//Si hay servidores nuevos los persiste |
|
428 |
if(newProjectServers) { |
|
429 |
try { |
|
430 |
FileOutputStream os = new FileOutputStream(getPluginPersistenceFile()); |
|
431 |
persistenceManager.putObject(os, serverDataPersistence); |
|
432 |
} catch (FileNotFoundException e) { |
|
433 |
logger.info("Persistence file not found for WMS plugin", e); |
|
434 |
} |
|
419 | 435 |
} |
420 |
persistence.setPersistent(); |
|
421 | 436 |
} |
422 | 437 |
|
423 |
serverPanel.getTxtHost().setServerList(servers);
|
|
438 |
return serverDataPersistence;
|
|
424 | 439 |
} |
440 |
|
|
441 |
/** |
|
442 |
* Saves the list of server reading from the <code>ComboBox</code> |
|
443 |
*/ |
|
444 |
private void saveServerListFromComboBox() { |
|
445 |
PersistenceManager persistenceManager = ToolsLocator.getPersistenceManager(); |
|
446 |
ServerDataPersistence persistence = new ServerDataPersistence(ServerData.SERVER_TYPE_WMTS); |
|
447 |
String urlSelected = serverPanel.getTxtHost().getModel().getSelectedItem().toString(); |
|
448 |
|
|
449 |
boolean isSelectedInModel = false; |
|
450 |
for (int i = 0; i < serverPanel.getTxtHost().getItemCount(); i++) { |
|
451 |
String url = serverPanel.getTxtHost().getItemAt(i).toString(); |
|
452 |
persistence.addServerData(new ServerData(url, ServerData.SERVER_TYPE_WMTS)); |
|
453 |
if(url.equals(urlSelected)) |
|
454 |
isSelectedInModel = true; |
|
455 |
} |
|
456 |
|
|
457 |
if(!isSelectedInModel) |
|
458 |
persistence.addServerData(new ServerData(urlSelected, ServerData.SERVER_TYPE_WMTS)); |
|
459 |
|
|
460 |
if(getServerDataPersistence().compareTo(persistence) != 0) { |
|
461 |
try { |
|
462 |
FileOutputStream os = new FileOutputStream(getPluginPersistenceFile()); |
|
463 |
persistenceManager.putObject(os, persistence); |
|
464 |
} catch (FileNotFoundException e) { |
|
465 |
logger.info("Persistence file not found for WMS plugin", e); |
|
466 |
} |
|
467 |
} |
|
468 |
} |
|
469 |
|
|
470 |
/** |
|
471 |
* Gets the persistence file of this plugin |
|
472 |
* @return |
|
473 |
*/ |
|
474 |
private File getPluginPersistenceFile() { |
|
475 |
if(pluginPersistenceFile == null) { |
|
476 |
File persistenceFolder = new File(Launcher.getAppHomeDir() |
|
477 |
+ File.separator + "plugins" + File.separator + pluginName); |
|
478 |
|
|
479 |
if (!persistenceFolder.exists()) { |
|
480 |
persistenceFolder.mkdirs(); |
|
481 |
} |
|
482 |
|
|
483 |
pluginPersistenceFile = new File(persistenceFolder.getAbsolutePath() + |
|
484 |
File.separator + |
|
485 |
"plugin-persistence.dat"); |
|
486 |
} |
|
487 |
return pluginPersistenceFile; |
|
488 |
} |
|
489 |
|
|
490 |
/** |
|
491 |
* Gets the file which contains the default list of servers |
|
492 |
* @return |
|
493 |
*/ |
|
494 |
private File getServerPropertiesFile() { |
|
495 |
if(serverPropertiesFile == null) { |
|
496 |
File pluginFolder = PluginsLocator.getManager().getPluginsFolder(); |
|
497 |
serverPropertiesFile = new File(pluginFolder.getAbsolutePath() + |
|
498 |
File.separator + |
|
499 |
pluginName + |
|
500 |
File.separator + |
|
501 |
serversPropsFile); |
|
502 |
} |
|
503 |
return serverPropertiesFile; |
|
504 |
} |
|
425 | 505 |
|
426 | 506 |
/** |
427 | 507 |
* DOCUMENT ME! |
Also available in: Unified diff