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

View differences:

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