Revision 1967

View differences:

branches/gvSIG_GisPlanet/applications/appgvSIG/src/com/iver/cit/gvsig/Abrir.java
43 43
import java.awt.Component;
44 44
import java.awt.geom.Rectangle2D;
45 45
import java.io.File;
46
import java.io.IOException;
47
import java.sql.Connection;
48
import java.sql.DriverManager;
49
import java.sql.SQLException;
46
import java.lang.reflect.InvocationTargetException;
47
import java.util.ArrayList;
50 48

  
51 49
import javax.swing.JOptionPane;
52 50

  
......
57 55

  
58 56
import com.hardcode.driverManager.Driver;
59 57
import com.hardcode.driverManager.DriverLoadException;
60
import com.hardcode.gdbms.engine.data.NoSuchTableException;
61 58
import com.iver.andami.PluginServices;
62 59
import com.iver.andami.messages.NotificationManager;
63 60
import com.iver.andami.plugins.Extension;
64 61
import com.iver.cit.gvsig.fmap.DriverException;
65
import com.iver.cit.gvsig.fmap.drivers.DefaultDBDriver;
66
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
67 62
import com.iver.cit.gvsig.fmap.drivers.RasterDriver;
68
import com.iver.cit.gvsig.fmap.drivers.VectorialDatabaseDriver;
69 63
import com.iver.cit.gvsig.fmap.drivers.VectorialFileDriver;
70
import com.iver.cit.gvsig.fmap.drivers.VectorialJDBCDriver;
71
import com.iver.cit.gvsig.fmap.drivers.arcsde.ArcSdeDriver;
72
import com.iver.cit.gvsig.fmap.drivers.wfs.WFSDriver;
73 64
import com.iver.cit.gvsig.fmap.layers.FLayer;
74 65
import com.iver.cit.gvsig.fmap.layers.LayerFactory;
75 66
import com.iver.cit.gvsig.gui.FOpenDialog;
76 67
import com.iver.cit.gvsig.gui.FileOpenDialog;
77 68
import com.iver.cit.gvsig.gui.View;
78
import com.iver.cit.gvsig.gui.WMSDataSourceAdapter;
69
import com.iver.cit.gvsig.gui.WizardPanel;
79 70
import com.iver.cit.gvsig.gui.jdbcwizard.Wizard;
80
import com.iver.cit.gvsig.gui.wfs.WFSDataSourceAdapter;
81 71
import com.iver.cit.gvsig.gui.wizards.ArcSdeWizard;
82 72
import com.iver.cit.gvsig.gui.wizards.WFSWizard;
83 73
import com.iver.cit.gvsig.gui.wms.WMSWizard;
84 74
import com.iver.cit.gvsig.project.Project;
85
import com.iver.utiles.StringUtilities;
86 75

  
87 76

  
88 77
/**
......
93 82
 */
94 83
public class Abrir implements Extension {
95 84
	public FOpenDialog fopen = null;
85
	
86
	private static ArrayList wizardStack = null;
87
	
88
	static {
89
		Abrir.wizardStack = new ArrayList();
90
		Abrir.addWizard(WMSWizard.class);
91
		Abrir.addWizard(WFSWizard.class);
92
		Abrir.addWizard(Wizard.class);
93
		Abrir.addWizard(ArcSdeWizard.class);
94
	}
95
	
96
	public static void addWizard(Class wpClass) {
97
		Abrir.wizardStack.add(wpClass);
98
	}
99
	
100
	public static WizardPanel getInstance(int i) throws IllegalArgumentException, SecurityException, InstantiationException, IllegalAccessException, InvocationTargetException, NoSuchMethodException {
101
		Class wpClass = (Class) Abrir.wizardStack.get(i);
102
		Class [] args = {};
103
		Object [] params = {};
104
		WizardPanel wp = (WizardPanel) wpClass.getConstructor(args).newInstance(params);
96 105

  
106
		wp.initWizard();
107
		
108
		return wp;
109
	}
110

  
111

  
97 112
	/**
98 113
	 * @see com.iver.mdiApp.plugins.Extension#isVisible()
99 114
	 */
......
125 140
		FileOpenDialog fileDlg = new FileOpenDialog(new Class[] {
126 141
					VectorialFileDriver.class, RasterDriver.class
127 142
				});
128
		WMSWizard wms = new WMSWizard();
129
		wms.setDataSource(new WMSDataSourceAdapter());
130
		
131
		Wizard wiz = new Wizard();
132
		WFSWizard wfs = new WFSWizard();
133
		wfs.setDataSource(new WFSDataSourceAdapter());
134

  
135
        ArcSdeWizard arcsde_wizard = new ArcSdeWizard();
136

  
137
		//        DataBaseOpenDialog dbop = new DataBaseOpenDialog();
138
		//        dbop.setClasses(new Class[] { DBDriver.class });
139 143
		fopen.addTab("Fichero", fileDlg);
140
		fopen.addWizardTab("WMS", wms);
141
		fopen.addWizardTab("WFS",wfs);
142
		fopen.addWizardTab("JDBC", wiz);
143
        fopen.addWizardTab("ArcSDE", arcsde_wizard);
144
		for (int i=0; i<wizardStack.size(); i++) {
145
			WizardPanel wp;
146
			try {
147
				wp = Abrir.getInstance(i);
148
				fopen.addWizardTab(wp.getTabName(), wp);			
149
			} catch (IllegalArgumentException e) {
150
				e.printStackTrace();
151
			} catch (SecurityException e) {
152
				e.printStackTrace();
153
			} catch (InstantiationException e) {
154
				e.printStackTrace();
155
			} catch (IllegalAccessException e) {
156
				e.printStackTrace();
157
			} catch (InvocationTargetException e) {
158
				e.printStackTrace();
159
			} catch (NoSuchMethodException e) {
160
				e.printStackTrace();
161
			}
162
		}
144 163
		
145

  
146
		//        fopen.addTab("Base de datos", dbop);
147 164
		PluginServices.getMDIManager().addView(fopen);
148 165

  
149
		if (fopen.isAccepted())
150
        {
166
		if (fopen.isAccepted()) {
151 167
			FLayer lyr = null;
152 168

  
153 169
			if (fopen.getSelectedTab() == fileDlg) {
......
244 260
				theView.getMapControl().getMapContext()
245 261
				   .endAtomicEvent();
246 262

  
247
			} else if (fopen.getSelectedTab() == wms) {
263
			} else if (fopen.getSelectedTab() instanceof WizardPanel) {
264
				WizardPanel wp = (WizardPanel) fopen.getSelectedTab();
265
				
266
				wp.execute();
267
				lyr = wp.getLayer();
268
				
269
				if (lyr != null) {
270
					lyr.setVisible(true);
271
					theView.getMapControl().getMapContext().beginAtomicEvent();
272
					theView.getMapControl().getMapContext().getLayers()
273
						   .addLayer(lyr);
274
					theView.getMapControl().getMapContext().endAtomicEvent();
275
				}
276
			/* } else if (fopen.getSelectedTab() == wms) {
248 277
				String layerName = wms.getLayerName();
249 278

  
250 279
				lyr = LayerFactory.createLayer(layerName,
......
260 289
					theView.getMapControl().getMapContext().endAtomicEvent();
261 290
				}
262 291
			} else if (fopen.getSelectedTab() == wiz) {
263
			    //true -> desconectado
264
			    if (false){
265
					try {
266
						String dbURL = wiz.getConnectionString();
267
						String user = wiz.getUser();
268
						String pwd = wiz.getPassword();
269
						String layerName = wiz.getLayerName();
270
						String fields = StringUtilities.getComaSeparated(wiz.getFields());
271
						String tableName = wiz.getTable();
272
						String whereClause = "";
273
						int fidField = wiz.getFID();;
274
						
275
	                    
276
	                    // TODO: ?C?mo se hace esto para que sea gen?rico?.
277
	                    // Supongo que el wizard te tiene que decir qu? driver
278
	                    // quieres usar....
279
	                    Connection conn = DriverManager.getConnection(dbURL, user, pwd);
280
	                    conn.setAutoCommit(false);
281

  
282
	                    VectorialJDBCDriver driver = wiz.getDriver();
283
	                    driver.setData(conn, tableName, fields, whereClause, fidField);
284
	                    lyr = LayerFactory.createDisconnectedDBLayer(driver, layerName, null);
285
	                    
286
	    				if (lyr != null) {
287
	    					lyr.setVisible(true);
288
	    					theView.getMapControl().getMapContext().beginAtomicEvent();
289
	    					theView.getMapControl().getMapContext().getLayers()
290
	    						   .addLayer(lyr);
291
	    					theView.getMapControl().getMapContext().endAtomicEvent();
292
	    				}
293
	                    
294
	                } catch (SQLException e) {
295
	                    // TODO Auto-generated catch block
296
	                    e.printStackTrace();
297
	                } catch (DriverLoadException e) {
298
						e.printStackTrace();
299
	                } catch (IOException e) {
300
						e.printStackTrace();
301
	                } catch (DriverIOException e) {
302
						e.printStackTrace();
303
	                } catch (NoSuchTableException e) {
304
						e.printStackTrace();
305
	                } catch (com.hardcode.gdbms.engine.data.driver.DriverException e) {
306
						e.printStackTrace();
307
	                } catch (ClassNotFoundException e) {
308
						e.printStackTrace();
309
	                }
310
			    }else{
311 292
                try {
312 293
					String dbURL = wiz.getConnectionString();
313 294
					String user = wiz.getUser();
......
347 328
                } catch (SQLException e) {
348 329
                    // TODO Auto-generated catch block
349 330
                    e.printStackTrace();
350
                /* } catch (ClassNotFoundException e) {
331
                // } catch (ClassNotFoundException e) {
351 332
                    // TODO Auto-generated catch block
352
                    e.printStackTrace(); */
333
                    //e.printStackTrace(); 
353 334
                } catch (DriverLoadException e) {
354 335
					e.printStackTrace();
355 336
				}
356 337

  
357
			    }
338

  
358 339
			} else if (fopen.getSelectedTab() == wfs) 
359 340
            {
360 341
				String[] layers=wfs.getLayers();
......
409 390
                        theView.getMapControl().getMapContext().endAtomicEvent();
410 391
                    }                   
411 392
                    
412
				} else {
413
					JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),"Ninguna capa seleccionada");
393
			} // for*/
394
			} else {
395
				JOptionPane.showMessageDialog((Component)PluginServices.getMainFrame(),"Ninguna capa seleccionada");
414 396
			}
415 397
		}
416 398
	}
417
    
418
    /**
399

  
400
	/**
419 401
	 * @see com.iver.andami.plugins.Extension#isEnabled()
420 402
	 */
421 403
	public boolean isEnabled() {
branches/gvSIG_GisPlanet/applications/appgvSIG/src/com/iver/cit/gvsig/gui/wms/WMSWizard.java
63 63
import org.apache.log4j.Logger;
64 64

  
65 65
import com.iver.andami.PluginServices;
66
import com.iver.cit.gvsig.fmap.layers.FLayer;
67
import com.iver.cit.gvsig.fmap.layers.LayerFactory;
68
import com.iver.cit.gvsig.gui.WMSDataSourceAdapter;
66 69
import com.iver.cit.gvsig.gui.WizardPanel;
67 70
import com.iver.utiles.NotExistInXMLEntity;
68 71
import com.iver.utiles.XMLEntity;
......
121 124
	 * This method initializes this
122 125
	 */
123 126
	private void initialize() {
127
		setTabName("WMS");
124 128
		this.setSize(510, 311);
125 129
		this.setLayout(null);
126 130
		this.setPreferredSize(new java.awt.Dimension(750, 320));
......
1091 1095

  
1092 1096
		return jTxtNomCapa;
1093 1097
	}
1098

  
1099
	/* (non-Javadoc)
1100
	 * @see com.iver.cit.gvsig.gui.WizardPanel#initWizard()
1101
	 */
1102
	public void initWizard() {
1103
		setDataSource(new WMSDataSourceAdapter()); 
1104
	}
1105

  
1106
	/* (non-Javadoc)
1107
	 * @see com.iver.cit.gvsig.gui.WizardPanel#execute()
1108
	 */
1109
	public void execute() {
1110
	}
1111

  
1112
	/* (non-Javadoc)
1113
	 * @see com.iver.cit.gvsig.gui.WizardPanel#getLayer()
1114
	 */
1115
	public FLayer getLayer() {
1116
		WMSWizard wms = this;
1117
		return LayerFactory.createLayer(wms.getLayerName(),
1118
				wms.getLayersRectangle(), wms.getHost(),
1119
				wms.getFormat(), wms.getLayersQuery(),
1120
				wms.getQueryableLayerQuery(), wms.getSRS());
1121
	}
1094 1122
}
1095 1123

  
1096 1124
//  @jve:decl-index=0:visual-constraint="10,10"
branches/gvSIG_GisPlanet/applications/appgvSIG/src/com/iver/cit/gvsig/gui/wizards/WFSWizard.java
91 91

  
92 92

  
93 93
import com.iver.cit.gvsig.fmap.drivers.wfs.WFSDriver;
94
import com.iver.cit.gvsig.fmap.layers.FLayer;
95
import com.iver.cit.gvsig.fmap.layers.LayerFactory;
96
import com.iver.cit.gvsig.gui.WMSDataSourceAdapter;
94 97
import com.iver.cit.gvsig.gui.WizardPanel;
95 98
import com.iver.cit.gvsig.gui.wfs.WFSDataSourceAdapter;
96 99
import com.iver.cit.gvsig.gui.wms.FormatListModel;
......
98 101
import com.iver.cit.gvsig.gui.wms.LayerListModel;
99 102
import com.iver.cit.gvsig.gui.wms.LayerTreeModel;
100 103
import com.iver.cit.gvsig.gui.wms.SRSListModel;
104
import com.iver.cit.gvsig.gui.wms.WMSWizard;
101 105
import com.iver.cit.gvsig.gui.wms.WizardData;
102 106
import com.iver.cit.gvsig.gui.wms.WizardDataSource;
103 107
import com.iver.cit.gvsig.gui.wms.WizardListener;
......
191 195
	 * This method initializes this
192 196
	 */
193 197
	private void initialize() {
198
		setTabName("WFS");
194 199
		this.setSize(510, 311);
195 200
		this.setLayout(null);
196 201
		this.setPreferredSize(new java.awt.Dimension(750, 320));
......
755 760
		public int getTimeout(){
756 761
			return Integer.parseInt(getJTxttimeout().getText());
757 762
		}
763
		public void initWizard() {
764
			setDataSource(new WFSDataSourceAdapter());
765
		}
766

  
767
		/* (non-Javadoc)
768
		 * @see com.iver.cit.gvsig.gui.WizardPanel#execute()
769
		 */
770
		public void execute() {
771
		}
772

  
773
		/* (non-Javadoc)
774
		 * @see com.iver.cit.gvsig.gui.WizardPanel#getLayer()
775
		 */
776
		public FLayer getLayer() {
777
			WFSWizard wfs = this;
778
			String[] layers=wfs.getLayers();
779
			if (layers.length>0) {
780
				String layerName = wfs.getLayerName();
781
				String user = wfs.getUser();
782
				String pwd = wfs.getPassword();
783
				String url = wfs.getUrlConnect();
784
				
785
				boolean protocol=wfs.getProtocol();
786
				int numfeatures=wfs.getNumFeatures();
787
				int timeout=wfs.getTimeout();
788
				//String fields = wfs.getSqlFields();
789
				//String whereClause = dbWiz.getSqlWhere();
790
				WFSDriver driver = new WFSDriver();
791
				driver.setData(url,user,pwd,layers,protocol,numfeatures,timeout,2);
792
				return LayerFactory.createWFSLayer(layerName,driver,wfs.getHost(),
793
						wfs.getProjection());
794
			}
795
			return null;
796
		}
758 797
}
branches/gvSIG_GisPlanet/applications/appgvSIG/src/com/iver/cit/gvsig/gui/wizards/ArcSdeWizard.java
47 47
package com.iver.cit.gvsig.gui.wizards;
48 48

  
49 49
import java.awt.BorderLayout;
50
import java.net.URL;
51 50

  
52
import javax.swing.DefaultComboBoxModel;
53 51
import javax.swing.JLabel;
54 52
import javax.swing.JPanel;
55 53
import javax.swing.JPasswordField;
......
58 56
import org.apache.log4j.Logger;
59 57

  
60 58
import com.iver.andami.PluginServices;
59
import com.iver.cit.gvsig.fmap.drivers.arcsde.ArcSdeDriver;
60
import com.iver.cit.gvsig.fmap.layers.FLayer;
61
import com.iver.cit.gvsig.fmap.layers.LayerFactory;
62
import com.iver.cit.gvsig.gui.WMSDataSourceAdapter;
61 63
import com.iver.cit.gvsig.gui.WizardPanel;
62 64
import com.iver.cit.gvsig.gui.wms.LayerListModel;
63
import com.iver.cit.gvsig.gui.wms.WizardData;
64 65
import com.iver.cit.gvsig.gui.wms.WizardDataSource;
65 66
import com.iver.cit.gvsig.gui.wms.WizardListener;
66 67
import com.iver.cit.gvsig.gui.wms.WizardListenerSupport;
67
import com.iver.utiles.NotExistInXMLEntity;
68
import com.iver.utiles.XMLEntity;
69
import com.iver.utiles.swing.JComboBox;
70 68
/**
71 69
 * DOCUMENT ME!
72 70
 *
......
110 108
	 * This method initializes this
111 109
	 */
112 110
	private void initialize() {
111
		setTabName("ArcSDE");
113 112
		this.setSize(510, 311);
114 113
		this.setLayout(null);
115 114
		this.setPreferredSize(new java.awt.Dimension(750, 320));
......
392 391
    	return jTxtEsquema;
393 392
    }
394 393

  
395
      }
394
	public void initWizard() { 
395
	}
396 396

  
397
	/* (non-Javadoc)
398
	 * @see com.iver.cit.gvsig.gui.WizardPanel#execute()
399
	 */
400
	public void execute() {
401
	}
402

  
403
	/* (non-Javadoc)
404
	 * @see com.iver.cit.gvsig.gui.WizardPanel#getLayer()
405
	 */
406
	public FLayer getLayer() {
407
		ArcSdeWizard arcsde_wizard = this;
408
        String dbHost = arcsde_wizard.getHost();
409
        String port = arcsde_wizard.getPort();
410
        String user = arcsde_wizard.getUser();
411
        String pwd = arcsde_wizard.getPassword();
412
        // String layerName = arcsde_wizard.getLayerName();
413
        // String fields = StringUtilities.getComaSeparated(wiz.getFields());
414
        String tableName = arcsde_wizard.getLayerName();
415
        String schema = arcsde_wizard.getSchema();
416
        String whereClause = "";
417
        String [] fields = null;
418
               
419
        ArcSdeDriver driver = new ArcSdeDriver();
420
        driver.setData(dbHost, Integer.parseInt(port), schema, user, pwd, tableName, fields, whereClause);
421
        
422
        return LayerFactory.createDBLayer(driver, tableName, null);
423
	}
424
}
425

  
397 426
//  @jve:decl-index=0:visual-constraint="10,10"
398 427
//  @jve:visual-info  decl-index=0 visual-constraint="16,10"
399 428
//  @jve:visual-info  decl-index=0 visual-constraint="10,10"
branches/gvSIG_GisPlanet/applications/appgvSIG/src/com/iver/cit/gvsig/gui/jdbcwizard/Wizard.java
18 18

  
19 19
import com.hardcode.driverManager.DriverLoadException;
20 20
import com.iver.andami.messages.NotificationManager;
21
import com.iver.cit.gvsig.fmap.drivers.DefaultDBDriver;
22
import com.iver.cit.gvsig.fmap.drivers.VectorialDatabaseDriver;
21 23
import com.iver.cit.gvsig.fmap.drivers.VectorialJDBCDriver;
24
import com.iver.cit.gvsig.fmap.layers.FLayer;
22 25
import com.iver.cit.gvsig.fmap.layers.LayerFactory;
23 26
import com.iver.cit.gvsig.gui.WizardPanel;
27
import com.iver.utiles.StringUtilities;
24 28
/**
25 29
 * @author Fernando Gonz?lez Cort?s
26 30
 */
......
56 60
	 * @return void
57 61
	 */
58 62
	private  void initialize() {
63
		setTabName("JDBC");
59 64
		this.setLayout(new BorderLayout());
60 65
		this.setSize(300, 270);
61 66
		this.add(getPnlWizard(), java.awt.BorderLayout.CENTER);
......
358 363
		}
359 364
		return uniqueFieldSelection;
360 365
	}
361
  }
366
	public void initWizard() {
367
	}
368

  
369
	/* (non-Javadoc)
370
	 * @see com.iver.cit.gvsig.gui.WizardPanel#execute()
371
	 */
372
	public void execute() {
373
	}
374

  
375
	/* (non-Javadoc)
376
	 * @see com.iver.cit.gvsig.gui.WizardPanel#getLayer()
377
	 */
378
	public FLayer getLayer() {
379
		Wizard wiz = this;
380
        try {
381
			String dbURL = wiz.getConnectionString();
382
			String user = wiz.getUser();
383
			String pwd = wiz.getPassword();
384
			String layerName = wiz.getLayerName();
385
			String fields = StringUtilities.getComaSeparated(wiz.getFields());
386
			String tableName = wiz.getTable();
387
			String whereClause = "";
388
			int fidField = wiz.getFID();;
389
			
390
            
391
            // TODO: ?C?mo se hace esto para que sea gen?rico?.
392
            // Supongo que el wizard te tiene que decir qu? driver
393
            // quieres usar....
394
		    // Class.forName("org.postgresql.Driver");
395
		    // Class.forName("com.mysql.jdbc.Driver");
396
            Connection conn = DriverManager.getConnection(dbURL, user, pwd);
397
            conn.setAutoCommit(false);
398

  
399
            VectorialDatabaseDriver driver = wiz.getDriver();
400
            if (driver instanceof DefaultDBDriver)
401
            {
402
                DefaultDBDriver dbDriver = (DefaultDBDriver) driver;
403
                dbDriver.setData(conn, tableName, fields, whereClause, fidField);
404
            }
405
            
406
            return LayerFactory.createDBLayer(driver, layerName, null);
407
        } catch (SQLException e) {
408
            // TODO Auto-generated catch block
409
            e.printStackTrace();
410
        /* } catch (ClassNotFoundException e) {
411
            // TODO Auto-generated catch block
412
            e.printStackTrace(); */
413
        } catch (DriverLoadException e) {
414
			e.printStackTrace();
415
		}
416
		return null;
417
	}
418
}
branches/gvSIG_GisPlanet/applications/appgvSIG/src/com/iver/cit/gvsig/gui/WizardPanel.java
42 42

  
43 43
import javax.swing.JPanel;
44 44

  
45
import com.iver.cit.gvsig.fmap.layers.FLayer;
45 46
import com.iver.cit.gvsig.gui.wms.WizardListener;
46 47
import com.iver.cit.gvsig.gui.wms.WizardListenerSupport;
47 48

  
48 49

  
49
public class WizardPanel extends JPanel{
50
public abstract class WizardPanel extends JPanel{
51
	private String tabName = "TabName";
50 52
	private WizardListenerSupport listenerSupport = new WizardListenerSupport();
51 53

  
52 54
	public void addWizardListener(WizardListener listener) {
......
61 63
	public void callStateChanged(boolean finishable) {
62 64
		listenerSupport.callStateChanged(finishable);
63 65
	}
66
	protected void setTabName(String name) { tabName = name; }
67
	public String getTabName() { return tabName; }
68
	abstract public void initWizard();
69
	abstract public void execute();
70
	abstract public FLayer getLayer();
64 71
}

Also available in: Unified diff