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

View differences:

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