Revision 2780

View differences:

branches/gvSIG_JDBC04/extensions/extJDBC/.project
1
<?xml version="1.0" encoding="UTF-8"?>
2
<projectDescription>
3
	<name>gvSIG_JDBC</name>
4
	<comment></comment>
5
	<projects>
6
	</projects>
7
	<buildSpec>
8
		<buildCommand>
9
			<name>org.eclipse.jdt.core.javabuilder</name>
10
			<arguments>
11
			</arguments>
12
		</buildCommand>
13
	</buildSpec>
14
	<natures>
15
		<nature>org.eclipse.jdt.core.javanature</nature>
16
	</natures>
17
</projectDescription>
0 18

  
branches/gvSIG_JDBC04/extensions/extJDBC/config/config.xml
1
<?xml version="1.0" encoding="ISO-8859-1"?>
2
<plugin-config>
3
	<depends plugin-name="com.iver.cit.gvsig" />
4
	<libraries library-dir="."/>
5
	<extensions>
6
		<extension class-name="com.iver.cit.gvsig.jdbc_spatial.ExtJDBC_Spatial"
7
			description="Support to access JDBC spatial databases PostgreSQL and mySQL"
8
			active="true"
9
			priority="1">
10
		</extension>		
11
	</extensions>
12
</plugin-config>
0 13

  
branches/gvSIG_JDBC04/extensions/extJDBC/src/com/iver/cit/gvsig/jdbc_spatial/gui/jdbcwizard/DBLayerDefinition.java
1
package com.iver.cit.gvsig.jdbc_spatial.gui.jdbcwizard;
2

  
3
import com.iver.andami.PluginServices;
4
import com.iver.andami.ui.mdiManager.View;
5
import com.iver.utiles.swing.wizard.Step;
6
import com.iver.utiles.swing.wizard.WizardControl;
7

  
8
import java.awt.event.ActionEvent;
9
import java.awt.event.ActionListener;
10
import java.awt.geom.Rectangle2D;
11

  
12
import javax.swing.ButtonGroup;
13
import javax.swing.DefaultListModel;
14
import javax.swing.JLabel;
15
import javax.swing.JList;
16
import javax.swing.JPanel;
17
import javax.swing.JRadioButton;
18
import javax.swing.JScrollPane;
19
import javax.swing.JTextField;
20

  
21

  
22
import javax.swing.JButton;
23
/**
24
 * DOCUMENT ME!
25
 *
26
 * @author Fernando Gonz?lez Cort?s
27
 */
28
public class DBLayerDefinition extends JPanel implements Step {
29
    private JList lstTables = null;
30
    private JLabel jLabel = null;
31
    private JPanel pnlExtent = null;
32
    private JLabel jLabel1 = null;
33
    private JTextField txtMinX = null;
34
    private JLabel jLabel2 = null;
35
    private JTextField txtMaxX = null;
36
    private JLabel jLabel3 = null;
37
    private JTextField txtMinY = null;
38
    private JLabel jLabel4 = null;
39
    private JTextField txtMaxY = null;
40
    private DefaultListModel lstTablesModel = new DefaultListModel();
41
    private JRadioButton radFullTable = null;
42
    private JRadioButton radWorkingArea = null;
43
    private boolean advanced = false;
44
    private JScrollPane jScrollPane = null;
45
    private JPanel jPanel = null;
46
    private JTextField txtLayerName = null;
47
    private JPanel jPanel1 = null;
48
    private JLabel jLabel5 = null;
49

  
50
	private JButton jButton = null;
51
    /**
52
     * This is the default constructor
53
     */
54
    public DBLayerDefinition() {
55
        super();
56
        initialize();
57
    }
58

  
59
    /**
60
     * This method initializes this
61
     */
62
    private void initialize() {
63
        jLabel = new JLabel();
64
        this.setSize(509, 375);
65
        this.setPreferredSize(new java.awt.Dimension(1260, 180));
66
        jLabel.setText(PluginServices.getText(this, "seleccione_tabla") + ":");
67
        jLabel.setPreferredSize(new java.awt.Dimension(330, 15));
68
        jLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
69
        this.add(jLabel, null);
70
        this.add(getJScrollPane(), null);
71
        this.add(getJPanel(), null);
72
        this.add(getPnlExtent(), null);
73
        this.add(getJButton(), null);
74
        this.add(getJPanel1(), null);
75

  
76
        ButtonGroup bt = new ButtonGroup();
77
        bt.add(getRadFullTable());
78
        bt.add(getRadWorkingArea());
79
        enableExtent(false);
80
    }
81

  
82
    /**
83
     * This method initializes lstTables
84
     *
85
     * @return javax.swing.JList
86
     */
87
    private JList getLstTables() {
88
        if (lstTables == null) {
89
            lstTables = new JList();
90
            lstTables.setModel(lstTablesModel);
91
            lstTables.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
92
        }
93

  
94
        return lstTables;
95
    }
96

  
97
    /**
98
     * This method initializes pnlExtent
99
     *
100
     * @return javax.swing.JPanel
101
     */
102
    private JPanel getPnlExtent() {
103
        if (pnlExtent == null) {
104
            jLabel4 = new JLabel();
105
            jLabel3 = new JLabel();
106
            jLabel2 = new JLabel();
107
            jLabel1 = new JLabel();
108
            pnlExtent = new JPanel();
109
            pnlExtent.setPreferredSize(new java.awt.Dimension(400,60));
110
            jLabel1.setText("MinX:");
111
            jLabel2.setText("MaxX:");
112
            jLabel3.setText("MinY:");
113
            jLabel4.setText("MaxY:");
114
            pnlExtent.add(jLabel1, null);
115
            pnlExtent.add(getTxtMinX(), null);
116
            pnlExtent.add(jLabel2, null);
117
            pnlExtent.add(getTxtMaxX(), null);
118
            pnlExtent.add(jLabel3, null);
119
            pnlExtent.add(getTxtMinY(), null);
120
            pnlExtent.add(jLabel4, null);
121
            pnlExtent.add(getTxtMaxY(), null);
122
        }
123

  
124
        return pnlExtent;
125
    }
126

  
127
    /**
128
     * This method initializes txtMinX
129
     *
130
     * @return javax.swing.JTextField
131
     */
132
    private JTextField getTxtMinX() {
133
        if (txtMinX == null) {
134
            txtMinX = new JTextField();
135
            txtMinX.setPreferredSize(new java.awt.Dimension(100, 19));
136
        }
137

  
138
        return txtMinX;
139
    }
140

  
141
    /**
142
     * This method initializes txtMaxX
143
     *
144
     * @return javax.swing.JTextField
145
     */
146
    private JTextField getTxtMaxX() {
147
        if (txtMaxX == null) {
148
            txtMaxX = new JTextField();
149
            txtMaxX.setPreferredSize(new java.awt.Dimension(100, 19));
150
        }
151

  
152
        return txtMaxX;
153
    }
154

  
155
    /**
156
     * This method initializes txtMinY
157
     *
158
     * @return javax.swing.JTextField
159
     */
160
    private JTextField getTxtMinY() {
161
        if (txtMinY == null) {
162
            txtMinY = new JTextField();
163
            txtMinY.setPreferredSize(new java.awt.Dimension(100, 19));
164
        }
165

  
166
        return txtMinY;
167
    }
168

  
169
    /**
170
     * This method initializes txtMaxY
171
     *
172
     * @return javax.swing.JTextField
173
     */
174
    private JTextField getTxtMaxY() {
175
        if (txtMaxY == null) {
176
            txtMaxY = new JTextField();
177
            txtMaxY.setPreferredSize(new java.awt.Dimension(100, 19));
178
        }
179

  
180
        return txtMaxY;
181
    }
182

  
183
    /**
184
     * DOCUMENT ME!
185
     *
186
     * @param tables DOCUMENT ME!
187
     */
188
    public void setTables(String[] tables) {
189
        lstTablesModel = new DefaultListModel();
190

  
191
        for (int i = 0; i < tables.length; i++) {
192
            lstTablesModel.addElement(tables[i]);
193
        }
194

  
195
        getLstTables().setModel(lstTablesModel);
196
    }
197

  
198
    /**
199
     * DOCUMENT ME!
200
     *
201
     * @param rect DOCUMENT ME!
202
     */
203
    public void setExtent(Rectangle2D rect) {
204
        getTxtMinX().setText(String.valueOf(rect.getMinX()));
205
        getTxtMinY().setText(String.valueOf(rect.getMinY()));
206
        getTxtMaxX().setText(String.valueOf(rect.getMaxX()));
207
        getTxtMaxY().setText(String.valueOf(rect.getMaxY()));
208
    }
209

  
210
    /**
211
     * DOCUMENT ME!
212
     *
213
     * @return DOCUMENT ME!
214
     */
215
    public Rectangle2D getExtent() {
216
        if (getRadFullTable().isSelected()) {
217
            return null;
218
        } else {
219
            return new Rectangle2D.Double(Double.parseDouble(
220
                    getTxtMinX().getText()),
221
                Double.parseDouble(getTxtMinY().getText()),
222
                Double.parseDouble(getTxtMaxX().getText()) -
223
                Double.parseDouble(getTxtMinX().getText()),
224
                Double.parseDouble(getTxtMaxY().getText()) -
225
                Double.parseDouble(getTxtMinY().getText()));
226
        }
227
    }
228

  
229
    /**
230
     * DOCUMENT ME!
231
     *
232
     * @return DOCUMENT ME!
233
     */
234
    public boolean done() {
235
        boolean done = (getTable() != null) && (!getLayerName().trim().equals(""));
236

  
237
        if (getRadWorkingArea().isSelected()) {
238
            done = done && (getTxtMaxX().getText().length() > 0) &&
239
                (getTxtMaxY().getText().length() > 0) &&
240
                (getTxtMinX().getText().length() > 0) &&
241
                (getTxtMinY().getText().length() > 0);
242
        }
243

  
244
        return done;
245
    }
246

  
247
    /**
248
     * DOCUMENT ME!
249
     *
250
     * @return DOCUMENT ME!
251
     */
252
    public String getTable() {
253
        return (String) getLstTables().getSelectedValue();
254
    }
255

  
256
    /**
257
     * DOCUMENT ME!
258
     *
259
     * @return DOCUMENT ME!
260
     */
261
    public String getLayerName() {
262
        return (String) getTxtLayerName().getText();
263
    }
264
    
265
    public String getWhere(){
266
        throw new UnsupportedOperationException();
267
    }
268

  
269
    /**
270
     * This method initializes radFullTable
271
     *
272
     * @return javax.swing.JRadioButton
273
     */
274
    private JRadioButton getRadFullTable() {
275
        if (radFullTable == null) {
276
            radFullTable = new JRadioButton();
277
            radFullTable.setText(PluginServices.getText(this, "toda_la_tabla")+":");
278
            radFullTable.setSelected(true);
279
            radFullTable.addActionListener(new ActionListener() {
280
                    public void actionPerformed(ActionEvent e) {
281
                        enableExtent(radWorkingArea.isSelected());
282
                    }
283
                });
284
        }
285

  
286
        return radFullTable;
287
    }
288

  
289
    /**
290
     * DOCUMENT ME!
291
     *
292
     * @param enable DOCUMENT ME!
293
     */
294
    private void enableExtent(boolean enable) {
295
        for (int i = 0; i < pnlExtent.getComponentCount(); i++) {
296
            pnlExtent.getComponent(i).setEnabled(enable);
297
        }
298
    }
299

  
300
    /**
301
     * This method initializes radWorkingArea
302
     *
303
     * @return javax.swing.JRadioButton
304
     */
305
    private JRadioButton getRadWorkingArea() {
306
        if (radWorkingArea == null) {
307
            radWorkingArea = new JRadioButton();
308
            radWorkingArea.setText(PluginServices.getText(this, "area_trabajo")+":");
309
            radWorkingArea.addActionListener(new ActionListener() {
310
                    public void actionPerformed(ActionEvent e) {
311
                        enableExtent(radWorkingArea.isSelected());
312
                    }
313
                });
314
        }
315

  
316
        return radWorkingArea;
317
    }
318

  
319
    /**
320
     * This method initializes jScrollPane
321
     *
322
     * @return javax.swing.JScrollPane
323
     */
324
    private JScrollPane getJScrollPane() {
325
        if (jScrollPane == null) {
326
            jScrollPane = new JScrollPane();
327
            jScrollPane.setViewportView(getLstTables());
328
            jScrollPane.setPreferredSize(new java.awt.Dimension(270, 110));
329
        }
330

  
331
        return jScrollPane;
332
    }
333

  
334
    /**
335
     * @see com.iver.utiles.swing.wizard.Step#init(com.iver.utiles.swing.wizard.WizardControl)
336
     */
337
    public void init(WizardControl w) {
338
    }
339

  
340
    /**
341
     * This method initializes jPanel
342
     *
343
     * @return javax.swing.JPanel
344
     */
345
    private JPanel getJPanel() {
346
        if (jPanel == null) {
347
            jPanel = new JPanel();
348
            jPanel.add(getRadFullTable(), null);
349
            jPanel.add(getRadWorkingArea(), null);
350
        }
351

  
352
        return jPanel;
353
    }
354

  
355
    /**
356
     * This method initializes jTextField
357
     *
358
     * @return javax.swing.JTextField
359
     */
360
    private JTextField getTxtLayerName() {
361
        if (txtLayerName == null) {
362
            txtLayerName = new JTextField();
363
            txtLayerName.setPreferredSize(new java.awt.Dimension(100, 19));
364
        }
365

  
366
        return txtLayerName;
367
    }
368

  
369
    /**
370
     * This method initializes jPanel1
371
     *
372
     * @return javax.swing.JPanel
373
     */
374
    private JPanel getJPanel1() {
375
        if (jPanel1 == null) {
376
            jLabel5 = new JLabel();
377
            jPanel1 = new JPanel();
378
            jLabel5.setText(PluginServices.getText(this, "nombre_capa")+":");
379
            jPanel1.setPreferredSize(new java.awt.Dimension(383,29));
380
            jPanel1.add(jLabel5, null);
381
            jPanel1.add(getTxtLayerName(), null);
382
        }
383

  
384
        return jPanel1;
385
    }
386

  
387
    /**
388
     * @return
389
     */
390
    public Rectangle2D getWorkingArea() {
391
        if (getRadWorkingArea().isSelected()) {
392
            return new Rectangle2D.Double(
393
                    Double.parseDouble(getTxtMinX().getText()),
394
                    Double.parseDouble(getTxtMinY().getText()),
395
                    Double.parseDouble(getTxtMaxX().getText()) - Double.parseDouble(getTxtMinX().getText()),
396
                    Double.parseDouble(getTxtMaxY().getText()) - Double.parseDouble(getTxtMinY().getText())
397
                    );
398
        }else{
399
            return null;
400
        }
401
    }
402
	/**
403
	 * This method initializes jButton	
404
	 * 	
405
	 * @return javax.swing.JButton	
406
	 */    
407
	private JButton getJButton() {
408
		if (jButton == null) {
409
			jButton = new JButton();
410
			jButton.setText(PluginServices.getText(this, "importar_extent")+":");
411
			jButton.addActionListener(new ActionListener() {
412
                public void actionPerformed(ActionEvent e) {
413
                    View v = PluginServices.getMDIManager().getActiveView();
414
                    com.iver.cit.gvsig.gui.View vista = (com.iver.cit.gvsig.gui.View) v;
415
                    Rectangle2D r = vista.getModel().getMapContext().getViewPort().getAdjustedExtent();
416
                    getTxtMinX().setText(Double.toString(r.getMinX()));
417
                    getTxtMinY().setText(Double.toString(r.getMinY()));
418
                    getTxtMaxX().setText(Double.toString(r.getMaxX()));
419
                    getTxtMaxY().setText(Double.toString(r.getMaxY()));
420
                }
421
            });
422
		}
423
		return jButton;
424
	}
425
 } //  @jve:decl-index=0:visual-constraint="10,10"
0 426

  
branches/gvSIG_JDBC04/extensions/extJDBC/src/com/iver/cit/gvsig/jdbc_spatial/gui/jdbcwizard/UserException.java
1
package com.iver.cit.gvsig.jdbc_spatial.gui.jdbcwizard;
2

  
3
/**
4
 * @author Fernando Gonz?lez Cort?s
5
 */
6
public class UserException extends Exception {
7

  
8
	/**
9
	 * @param string
10
	 */
11
	public UserException(String string) {
12
		super(string);
13
	}
14

  
15
}
0 16

  
branches/gvSIG_JDBC04/extensions/extJDBC/src/com/iver/cit/gvsig/jdbc_spatial/gui/jdbcwizard/ConnectionPanel.java
1
package com.iver.cit.gvsig.jdbc_spatial.gui.jdbcwizard;
2

  
3
import java.awt.FlowLayout;
4
import java.awt.GridLayout;
5
import java.awt.event.ActionEvent;
6
import java.awt.event.ActionListener;
7
import java.util.HashMap;
8
import java.util.Iterator;
9

  
10
import javax.swing.DefaultComboBoxModel;
11
import javax.swing.JLabel;
12
import javax.swing.JPanel;
13
import javax.swing.JPasswordField;
14
import javax.swing.JTextField;
15

  
16
import com.hardcode.driverManager.DriverLoadException;
17
import com.iver.andami.PluginServices;
18
import com.iver.cit.gvsig.fmap.drivers.VectorialJDBCDriver;
19
import com.iver.cit.gvsig.fmap.layers.LayerFactory;
20
import com.iver.utiles.swing.JComboBox;
21
import com.iver.utiles.swing.wizard.Step;
22
import com.iver.utiles.swing.wizard.WizardControl;
23

  
24

  
25
/**
26
 * DOCUMENT ME!
27
 *
28
 * @author Fernando Gonz?lez Cort?s
29
 */
30
public class ConnectionPanel extends JPanel implements Step {
31
    private JPanel jPanel = null;
32
    private JLabel jLabel = null;
33
    private JTextField txtHost = null;
34
    private JPanel jPanel1 = null;
35
    private JTextField txtPort = null;
36
    private JLabel jLabel1 = null;
37
    private JLabel jLabel2 = null;
38
    private JTextField txtUser = null;
39
    private JLabel jLabel3 = null;
40
    private JPasswordField txtPassword = null;
41
    private JLabel jLabel4 = null;
42
    private JTextField txtBD = null;
43
    private JLabel jLabel5 = null;
44
    private JComboBox cmbDriver = null;
45
    private JLabel jLabel6 = null;
46
    private com.iver.utiles.swing.JComboBox cmbName = null;
47
    private HashMap cs = new HashMap();
48

  
49
    /**
50
     * This is the default constructor
51
     */
52
    public ConnectionPanel() {
53
        super();
54
        initialize();
55
    }
56

  
57
    /**
58
     * This method initializes this
59
     */
60
    private void initialize() {
61
        this.setSize(400, 240);
62
        this.add(getJPanel(), null);
63
        this.add(getJPanel1(), null);
64
    }
65

  
66
    /**
67
     * This method initializes jPanel
68
     *
69
     * @return javax.swing.JPanel
70
     */
71
    private JPanel getJPanel() {
72
        if (jPanel == null) {
73
            GridLayout gridLayout1 = new GridLayout();
74
            gridLayout1.setRows(7);
75
            jLabel5 = new JLabel();
76
            jLabel4 = new JLabel();
77
            jLabel3 = new JLabel();
78
            jLabel2 = new JLabel();
79
            jLabel1 = new JLabel();
80
            jLabel = new JLabel();
81
            jPanel = new JPanel();
82
            jPanel.setLayout(gridLayout1);
83
            jPanel.setPreferredSize(new java.awt.Dimension(160,225));
84
            jLabel.setText(PluginServices.getText(this, "host") + ":");
85
            jLabel.setPreferredSize(new java.awt.Dimension(80, 15));
86
            jLabel.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
87
            jLabel.setName("jLabel");
88
            jLabel1.setText(PluginServices.getText(this, "puerto")+":");
89
            jLabel1.setPreferredSize(new java.awt.Dimension(83, 15));
90
            jLabel1.setHorizontalAlignment(javax.swing.SwingConstants.TRAILING);
91
            jLabel1.setName("jLabel1");
92
            jLabel2.setText(PluginServices.getText(this, "usuario")+":");
93
            jLabel2.setName("jLabel2");
94
            jLabel2.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
95
            jLabel2.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
96
            jLabel3.setText(PluginServices.getText(this, "password")+":");
97
            jLabel3.setName("jLabel3");
98
            jLabel3.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
99
            jLabel3.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
100
            jLabel4.setText(PluginServices.getText(this, "bd")+":");
101
            jLabel4.setName("jLabel4");
102
            jLabel4.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
103
            jLabel4.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
104
            jLabel5.setText(PluginServices.getText(this, "driver")+":");
105
            jLabel5.setName("jLabel5");
106
            jLabel5.setHorizontalTextPosition(javax.swing.SwingConstants.RIGHT);
107
            jLabel5.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
108
            jPanel.add(getJLabel6(), null);
109
            jPanel.add(jLabel, null);
110
            jPanel.add(jLabel1, null);
111
            jPanel.add(jLabel2, null);
112
            jPanel.add(jLabel3, null);
113
            jPanel.add(jLabel4, null);
114
            jPanel.add(jLabel5, null);
115
        }
116

  
117
        return jPanel;
118
    }
119

  
120
    /**
121
     * This method initializes txtHost
122
     *
123
     * @return javax.swing.JTextField
124
     */
125
    private JTextField getTxtHost() {
126
        if (txtHost == null) {
127
            txtHost = new JTextField();
128
            txtHost.setPreferredSize(new java.awt.Dimension(120, 19));
129
            txtHost.setName("txtHost");
130
        }
131

  
132
        return txtHost;
133
    }
134

  
135
    /**
136
     * This method initializes jPanel1
137
     *
138
     * @return javax.swing.JPanel
139
     */
140
    private JPanel getJPanel1() {
141
        if (jPanel1 == null) {
142
            jPanel1 = new JPanel();
143
            jPanel1.setPreferredSize(new java.awt.Dimension(135, 225));
144

  
145
            FlowLayout layout = new FlowLayout();
146
            layout.setVgap(12);
147
            jPanel1.setLayout(layout);
148
            jPanel1.add(getCmbName(), null);
149
            jPanel1.add(getTxtHost(), null);
150
            jPanel1.add(getTxtPort(), null);
151
            jPanel1.add(getTxtUser(), null);
152
            jPanel1.add(getTxtPassword(), null);
153
            jPanel1.add(getTxtBD(), null);
154
            jPanel1.add(getCmbDriver(), null);
155
        }
156

  
157
        return jPanel1;
158
    }
159

  
160
    /**
161
     * This method initializes txtPort
162
     *
163
     * @return javax.swing.JTextField
164
     */
165
    private JTextField getTxtPort() {
166
        if (txtPort == null) {
167
            txtPort = new JTextField();
168
            txtPort.setPreferredSize(new java.awt.Dimension(40, 19));
169
            txtPort.setName("txtPort");
170
            txtPort.setText("3306");
171
            txtPort.setHorizontalAlignment(javax.swing.JTextField.LEFT);
172
        }
173

  
174
        return txtPort;
175
    }
176

  
177
    /**
178
     * This method initializes txtUser
179
     *
180
     * @return javax.swing.JTextField
181
     */
182
    private JTextField getTxtUser() {
183
        if (txtUser == null) {
184
            txtUser = new JTextField();
185
            txtUser.setPreferredSize(new java.awt.Dimension(120, 19));
186
            txtUser.setName("txtUser");
187
        }
188

  
189
        return txtUser;
190
    }
191

  
192
    /**
193
     * This method initializes txtPassword
194
     *
195
     * @return javax.swing.JTextField
196
     */
197
    private JPasswordField getTxtPassword() {
198
        if (txtPassword == null) {
199
            txtPassword = new JPasswordField();
200
            txtPassword.setPreferredSize(new java.awt.Dimension(120, 19));
201
            txtPassword.setName("txtPassword");
202
        }
203

  
204
        return txtPassword;
205
    }
206

  
207
    /**
208
     * This method initializes txtBD
209
     *
210
     * @return javax.swing.JTextField
211
     */
212
    private JTextField getTxtBD() {
213
        if (txtBD == null) {
214
            txtBD = new JTextField();
215
            txtBD.setPreferredSize(new java.awt.Dimension(120, 19));
216
            txtBD.setName("txtBD");
217
        }
218

  
219
        return txtBD;
220
    }
221

  
222
    /**
223
     * DOCUMENT ME!
224
     *
225
     * @return DOCUMENT ME!
226
     */
227
    public String getHost() {
228
        return getTxtHost().getText();
229
    }
230

  
231
    /**
232
     * DOCUMENT ME!
233
     *
234
     * @return DOCUMENT ME!
235
     */
236
    public String getPort() {
237
        return getTxtPort().getText();
238
    }
239

  
240
    /**
241
     * DOCUMENT ME!
242
     *
243
     * @return DOCUMENT ME!
244
     */
245
    public String getUser() {
246
        return getTxtUser().getText();
247
    }
248

  
249
    /**
250
     * DOCUMENT ME!
251
     *
252
     * @return DOCUMENT ME!
253
     */
254
    public String getSettingsName() {
255
        return getCmbName().getSelectedItem().toString();
256
    }
257

  
258
    /**
259
     * DOCUMENT ME!
260
     *
261
     * @return DOCUMENT ME!
262
     */
263
    public String getPassword() {
264
        return new String(getTxtPassword().getPassword());
265
    }
266

  
267
    /**
268
     * DOCUMENT ME!
269
     *
270
     * @return DOCUMENT ME!
271
     */
272
    public String getDBName() {
273
        return getTxtBD().getText();
274
    }
275

  
276
    /**
277
     * DOCUMENT ME!
278
     *
279
     * @param drivers DOCUMENT ME!
280
     */
281
    public void setDrivers(String[] drivers) {
282
        DefaultComboBoxModel model = new DefaultComboBoxModel();
283

  
284
        for (int i = 0; i < drivers.length; i++) {
285
            model.addElement(drivers[i]);
286
        }
287

  
288
        getCmbDriver().setModel(model);
289

  
290
        //Para que refresque el textbox del puerto
291
        if (drivers.length > 0)
292
            cmbDriver.setSelectedIndex(0);
293
        
294
    }
295

  
296
    /**
297
     * DOCUMENT ME!
298
     *
299
     * @return DOCUMENT ME!
300
     */
301
    public String getDriver() {
302
        return cmbDriver.getSelectedItem().toString();
303
    }
304

  
305
    /**
306
     * DOCUMENT ME!
307
     *
308
     * @param cs DOCUMENT ME!
309
     */
310
    public void setSettings(HashMap cs) {
311
        this.cs = cs;
312
        ((DefaultComboBoxModel) getCmbName().getModel()).removeAllElements();
313

  
314
        Iterator i = cs.keySet().iterator();
315

  
316
        while (i.hasNext()) {
317
            String item = (String) i.next();
318
            ((DefaultComboBoxModel) getCmbName().getModel()).addElement(item);
319
        }
320
    }
321

  
322
    /**
323
     * @see com.iver.utiles.swing.wizard.Step#init(com.iver.utiles.swing.wizard.WizardControl)
324
     */
325
    public void init(WizardControl w) {
326
    }
327

  
328
    /**
329
     * This method initializes cmbDriver
330
     *
331
     * @return com.iver.utiles.swing.JComboBox
332
     */
333
    private JComboBox getCmbDriver() {
334
        if (cmbDriver == null) {
335
            cmbDriver = new JComboBox();
336
            cmbDriver.setPreferredSize(new java.awt.Dimension(120, 19));
337
            cmbDriver.setName("cmbDriver");
338
            cmbDriver.addActionListener(new ActionListener() {
339
                public void actionPerformed(ActionEvent e) {
340
                    String driverName = cmbDriver.getSelectedItem().toString();
341
                    VectorialJDBCDriver driver;
342
                    try {
343
                        driver = (VectorialJDBCDriver) LayerFactory.getDM().getDriver(driverName);
344
                        getTxtPort().setText(Integer.toString(driver.getDefaultPort()));
345
                    } catch (DriverLoadException e1) {
346
                        getTxtPort().setText("");
347
                    }
348
                }
349
            });
350
        }
351

  
352
        return cmbDriver;
353
    }
354

  
355
    /**
356
     * DOCUMENT ME!
357
     *
358
     * @return
359
     */
360
    public boolean done() {
361
        return (getTxtBD().getText().length() > 0) &&
362
        (getTxtHost().getText().length() > 0) &&
363
        (getCmbName().getSelectedItem().toString().length() > 0);
364
    }
365

  
366
    /**
367
     * This method initializes jLabel6
368
     *
369
     * @return javax.swing.JLabel
370
     */
371
    private JLabel getJLabel6() {
372
        if (jLabel6 == null) {
373
            jLabel6 = new JLabel();
374
            jLabel6.setText(PluginServices.getText(this, "connection_name")+":");
375
            jLabel6.setHorizontalAlignment(javax.swing.SwingConstants.RIGHT);
376
        }
377

  
378
        return jLabel6;
379
    }
380

  
381
    /**
382
     * This method initializes jComboBox
383
     *
384
     * @return com.iver.utiles.swing.JComboBox
385
     */
386
    private com.iver.utiles.swing.JComboBox getCmbName() {
387
        if (cmbName == null) {
388
            cmbName = new com.iver.utiles.swing.JComboBox();
389
            cmbName.setEditable(true);
390
            cmbName.setPreferredSize(new java.awt.Dimension(120, 19));
391
            cmbName.setModel(new DefaultComboBoxModel());
392
            cmbName.addActionListener(new ActionListener() {
393
                    public void actionPerformed(ActionEvent e) {
394
                        Object item = cmbName.getSelectedItem();
395

  
396
                        if (item == null) {
397
                            return;
398
                        }
399

  
400
                        ConnectionSettings c = (ConnectionSettings) cs.get(item.toString());
401

  
402
                        if (c != null) {
403
                            getTxtHost().setText(c.getHost());
404
                            getTxtPort().setText(c.getPort());
405
                            getTxtBD().setText(c.getDb());
406
                            getTxtUser().setText(c.getUser());
407
                            getCmbDriver().setSelectedItem(c.getDriver());
408
                        }
409
                    }
410
                });
411
        }
412

  
413
        return cmbName;
414
    }
415
} //  @jve:decl-index=0:visual-constraint="7,3"
0 416

  
branches/gvSIG_JDBC04/extensions/extJDBC/src/com/iver/cit/gvsig/jdbc_spatial/gui/jdbcwizard/ConnectionSettings.java
1
package com.iver.cit.gvsig.jdbc_spatial.gui.jdbcwizard;
2

  
3

  
4
/**
5
 * @author Fernando Gonz?lez Cort?s
6
 */
7
public class ConnectionSettings {
8
    private String host;
9
    private String port;
10
    private String db;
11
    private String driver;
12
    private String user;
13
    private String name;
14
    
15
    public String getDb() {
16
        return db;
17
    }
18
    public void setDb(String db) {
19
        this.db = db;
20
    }
21
    public String getDriver() {
22
        return driver;
23
    }
24
    public void setDriver(String driver) {
25
        this.driver = driver;
26
    }
27
    public String getHost() {
28
        return host;
29
    }
30
    public void setHost(String host) {
31
        this.host = host;
32
    }
33
    public String getPort() {
34
        return port;
35
    }
36
    public void setPort(String port) {
37
        this.port = port;
38
    }
39
    public String getUser() {
40
        return user;
41
    }
42
    public void setUser(String user) {
43
        this.user = user;
44
    }
45
    public void setName(String name) {
46
        this.name = name;
47
    }
48
    public String getName() {
49
        return name;
50
    }
51
    
52
    public String toString(){
53
        return host+","+port+","+db+","+driver+","+user+","+name;
54
    }
55
    
56
    public void setFromString(String str) {
57
        String[] values = str.split(",");
58
        host = values[0];
59
        port = values[1];
60
        db = values[2];
61
        driver = values[3];
62
        user = values[4];
63
        name = values[5];
64
    }
65
}
0 66

  
branches/gvSIG_JDBC04/extensions/extJDBC/src/com/iver/cit/gvsig/jdbc_spatial/gui/jdbcwizard/UniqueFieldSelection.java
1
package com.iver.cit.gvsig.jdbc_spatial.gui.jdbcwizard;
2

  
3
import javax.swing.JPanel;
4

  
5
import javax.swing.DefaultListModel;
6
import javax.swing.JLabel;
7
import javax.swing.JScrollPane;
8
import javax.swing.JList;
9

  
10
import com.iver.andami.PluginServices;
11
/**
12
 * @author Fernando Gonz?lez Cort?s
13
 */
14
public class UniqueFieldSelection extends JPanel {
15

  
16
	private JLabel jLabel = null;
17
	private JScrollPane jScrollPane = null;
18
	private JList lstFields = null;
19
	private WizardJDBC w;
20
	/**
21
	 * This is the default constructor
22
	 */
23
	public UniqueFieldSelection() {
24
		super();
25
		initialize();
26
	}
27
	/**
28
	 * This method initializes this
29
	 * 
30
	 * @return void
31
	 */
32
	private  void initialize() {
33
		jLabel = new JLabel();
34
		this.setSize(300,200);
35
		jLabel.setText(PluginServices.getText(this, "select_unique_field")+":");
36
		jLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
37
		jLabel.setPreferredSize(new java.awt.Dimension(315,15));
38
		this.add(jLabel, null);
39
		this.add(getJScrollPane(), null);
40
		this.add(getJScrollPane(), null);
41
	}
42
	/**
43
	 * This method initializes jScrollPane	
44
	 * 	
45
	 * @return javax.swing.JScrollPane	
46
	 */    
47
	private JScrollPane getJScrollPane() {
48
		if (jScrollPane == null) {
49
			jScrollPane = new JScrollPane();
50
			jScrollPane.setViewportView(getLstFields());
51
			jScrollPane.setPreferredSize(new java.awt.Dimension(260,131));
52
		}
53
		return jScrollPane;
54
	}
55
	/**
56
	 * This method initializes jList	
57
	 * 	
58
	 * @return javax.swing.JList	
59
	 */    
60
	private JList getLstFields() {
61
		if (lstFields == null) {
62
			lstFields = new JList();
63
			lstFields.addListSelectionListener(new javax.swing.event.ListSelectionListener() { 
64
				public void valueChanged(javax.swing.event.ListSelectionEvent e) {    
65
					w.callStateChanged(lstFields.getSelectedIndices().length > 0);
66
				}
67
			});
68
		}
69
		return lstFields;
70
	}
71
	public void setWizard(WizardJDBC w) {
72
		this.w = w;
73
	}
74
	
75
	/**
76
	 * @param fields
77
	 */
78
	public void setFields(String[] fields) {
79
		DefaultListModel model = new DefaultListModel();
80
		for (int i = 0; i < fields.length; i++) {
81
			model.addElement(fields[i]);
82
		}
83
		
84
		lstFields.setModel(model);
85
	}
86
	
87
	public String getField(){
88
		return (String) getLstFields().getSelectedValue();
89
	}
90
}
0 91

  
branches/gvSIG_JDBC04/extensions/extJDBC/src/com/iver/cit/gvsig/jdbc_spatial/gui/jdbcwizard/GeomFieldSelection.java
1
package com.iver.cit.gvsig.jdbc_spatial.gui.jdbcwizard;
2

  
3
import javax.swing.JPanel;
4

  
5
import javax.swing.DefaultListModel;
6
import javax.swing.JLabel;
7
import javax.swing.JList;
8
import javax.swing.JScrollPane;
9

  
10
import com.iver.andami.PluginServices;
11
/**
12
 * @author Fernando Gonz?lez Cort?s
13
 */
14
public class GeomFieldSelection extends JPanel {
15

  
16
	private JLabel jLabel = null;
17
	private JList lstFields = null;
18
	private JScrollPane jScrollPane = null;
19
	/**
20
	 * This is the default constructor
21
	 */
22
	public GeomFieldSelection() {
23
		super();
24
		initialize();
25
	}
26
	/**
27
	 * This method initializes this
28
	 * 
29
	 * @return void
30
	 */
31
	private  void initialize() {
32
		jLabel = new JLabel();
33
		this.setSize(300,200);
34
		jLabel.setText(PluginServices.getText(this, "select_geom_field") + ":");
35
		jLabel.setPreferredSize(new java.awt.Dimension(359,15));
36
		jLabel.setHorizontalAlignment(javax.swing.SwingConstants.CENTER);
37
		this.add(jLabel, null);
38
		this.add(getJScrollPane(), null);
39
	}
40
	/**
41
	 * This method initializes jList	
42
	 * 	
43
	 * @return javax.swing.JList	
44
	 */    
45
	private JList getLstFields() {
46
		if (lstFields == null) {
47
			lstFields = new JList();
48
			lstFields.setSelectionMode(javax.swing.ListSelectionModel.SINGLE_SELECTION);
49
		}
50
		return lstFields;
51
	}
52
	/**
53
	 * This method initializes jScrollPane	
54
	 * 	
55
	 * @return javax.swing.JScrollPane	
56
	 */    
57
	private JScrollPane getJScrollPane() {
58
		if (jScrollPane == null) {
59
			jScrollPane = new JScrollPane();
60
			jScrollPane.setViewportView(getLstFields());
61
			jScrollPane.setPreferredSize(new java.awt.Dimension(260,131));
62
		}
63
		return jScrollPane;
64
	}
65
	
66
	public boolean done() {
67
		return (lstFields.getSelectedIndex() != -1);
68
	}
69
	/**
70
	 * @param fields
71
	 */
72
	public void setFields(String[] fields) {
73
		DefaultListModel model = new DefaultListModel();
74
		for (int i = 0; i < fields.length; i++) {
75
			model.addElement(fields[i]);
76
		}
77
		
78
		lstFields.setModel(model);
79
	}
80
	
81
	public String getField(){
82
		return (String) getLstFields().getSelectedValue();
83
	}
84
  }
0 85

  
branches/gvSIG_JDBC04/extensions/extJDBC/src/com/iver/cit/gvsig/jdbc_spatial/gui/jdbcwizard/WizardJDBC.java
1
package com.iver.cit.gvsig.jdbc_spatial.gui.jdbcwizard;
2

  
3
import java.awt.BorderLayout;
4
import java.awt.CardLayout;
5
import java.awt.FlowLayout;
6
import java.io.IOException;
7
import java.sql.Connection;
8
import java.sql.DatabaseMetaData;
9
import java.sql.DriverManager;
10
import java.sql.ResultSet;
11
import java.sql.ResultSetMetaData;
12
import java.sql.SQLException;
13
import java.sql.Statement;
14
import java.util.ArrayList;
15
import java.util.HashMap;
16

  
17
import javax.swing.JButton;
18
import javax.swing.JOptionPane;
19
import javax.swing.JPanel;
20

  
21
import com.hardcode.driverManager.DriverLoadException;
22
import com.hardcode.gdbms.engine.data.NoSuchTableException;
23
import com.iver.andami.PluginServices;
24
import com.iver.andami.messages.NotificationManager;
25
import com.iver.cit.gvsig.fmap.drivers.DefaultDBDriver;
26
import com.iver.cit.gvsig.fmap.drivers.DriverIOException;
27
import com.iver.cit.gvsig.fmap.drivers.VectorialJDBCDriver;
28
import com.iver.cit.gvsig.fmap.layers.FLayer;
29
import com.iver.cit.gvsig.fmap.layers.LayerFactory;
30
import com.iver.cit.gvsig.gui.WizardPanel;
31
import com.iver.utiles.NotExistInXMLEntity;
32
import com.iver.utiles.StringUtilities;
33
import com.iver.utiles.XMLEntity;
34
/**
35
 * @author Fernando Gonz?lez Cort?s
36
 */
37
public class WizardJDBC extends WizardPanel{
38

  
39
	private JPanel pnlWizard = null;
40
	private JPanel jPanel1 = null;
41
	private JButton btnBack = null;
42
	private JButton btnNext = null;
43
	private ConnectionPanel connectionPanel = null;
44
	private DBLayerDefinition dbLayerDefinition = null;
45
	private FieldSelection fieldSelection = null;
46
	
47
	private int step = 0;
48
	private final int nsteps = 5;
49
	private static final String CONNECTION = "conn";
50
	private static final String LAYER_DEFINITION = "layerdef";
51
	private static final String FIELD_SELECTION= "fieldsel";
52
	private VectorialJDBCDriver driver;
53
	
54
	private GeomFieldSelection geomFieldSelection = null;
55
	private UniqueFieldSelection uniqueFieldSelection = null;
56
	
57
	private HashMap settings = new HashMap();
58
	/**
59
	 * This is the default constructor
60
	 */
61
	public WizardJDBC() {
62
		super();
63
		initialize();
64
	}
65
	/**
66
	 * This method initializes this
67
	 * 
68
	 * @return void
69
	 */
70
	private  void initialize() {
71
		setTabName("JDBC");
72
		this.setLayout(new BorderLayout());
73
		this.setSize(300, 270);
74
		this.add(getPnlWizard(), java.awt.BorderLayout.CENTER);
75
		this.add(getJPanel1(), java.awt.BorderLayout.SOUTH);
76
		connectionPanel.setDrivers(getDriverNames());
77
		enableButtons();
78
		
79

  
80
        XMLEntity xml = PluginServices.getPluginServices(this)
81
                                      .getPersistentXML();
82

  
83
        if (xml == null) {
84
            xml = new XMLEntity();
85
        }
86

  
87
        if (!xml.contains("jdbc-connections")) {
88
            String[] servers = new String[0];
89
            xml.putProperty("jdbc-connections", servers);
90
        }
91

  
92
        try {
93
            String[] servers = xml.getStringArrayProperty("jdbc-connections");
94

  
95
            for (int i = 0; i < servers.length; i++) {
96
                ConnectionSettings cs = new ConnectionSettings();
97
                cs.setFromString(servers[i]);
98
                settings.put(cs.getName(), cs);
99
            }
100
            getConnectionPanel().setSettings(settings);
101
        } catch (NotExistInXMLEntity e) {
102
        }
103
		
104
	}
105
	
106
	private String[] getDriverNames(){
107
		Class[] classes = new Class[] { VectorialJDBCDriver.class };
108

  
109
		ArrayList ret = new ArrayList();
110
		String[] driverNames = LayerFactory.getDM().getDriverNames();
111

  
112
		for (int i = 0; i < driverNames.length; i++) {
113
			boolean is = false;
114

  
115
			for (int j = 0; j < classes.length; j++) {
116
				if (LayerFactory.getDM().isA(driverNames[i], classes[j])) {
117
					ret.add(driverNames[i]);
118
				}
119
			}
120
		}
121

  
122
		return (String[]) ret.toArray(new String[0]);
123
		
124
	}
125
	
126
	private void enableButtons(){
127
		getBtnBack().setEnabled(step > 0);
128
		getBtnNext().setEnabled(step < nsteps - 1);
129
	}
130
	
131
	/**
132
	 * This method initializes pnlWizard	
133
	 * 	
134
	 * @return javax.swing.JPanel	
135
	 */    
136
	private JPanel getPnlWizard() {
137
		if (pnlWizard == null) {
138
			pnlWizard = new JPanel();
139
			pnlWizard.setLayout(new CardLayout());
140
			pnlWizard.add(getConnectionPanel(), CONNECTION);
141
			pnlWizard.add(getDbLayerDefinition(), LAYER_DEFINITION);
142
			pnlWizard.add(getFieldSelection(), FIELD_SELECTION);
143
			pnlWizard.add(getGeomFieldSelection(), getGeomFieldSelection().getName());
144
			pnlWizard.add(getUniqueFieldSelection(), getUniqueFieldSelection().getName());
145
		}
146
		return pnlWizard;
147
	}
148
	/**
149
	 * This method initializes jPanel1	
150
	 * 	
151
	 * @return javax.swing.JPanel	
152
	 */    
153
	private JPanel getJPanel1() {
154
		if (jPanel1 == null) {
155
			FlowLayout flowLayout1 = new FlowLayout();
156
			jPanel1 = new JPanel();
157
			jPanel1.setLayout(flowLayout1);
158
			jPanel1.setPreferredSize(new java.awt.Dimension(10,25));
159
			flowLayout1.setHgap(0);
160
			flowLayout1.setVgap(4);
161
			jPanel1.add(getBtnBack(), null);
162
			jPanel1.add(getBtnNext(), null);
163
		}
164
		return jPanel1;
165
	}
166
	/**
167
	 * This method initializes btnBack	
168
	 * 	
169
	 * @return javax.swing.JButton	
170
	 */    
171
	private JButton getBtnBack() {
172
		if (btnBack == null) {
173
			btnBack = new JButton();
174
			btnBack.setText(PluginServices.getText(this, "back"));
175
			btnBack.setPreferredSize(new java.awt.Dimension(63,18));
176
			btnBack.addActionListener(new java.awt.event.ActionListener() { 
177
				public void actionPerformed(java.awt.event.ActionEvent e) {    
178
					step--;
179
					enableButtons();
180
					((CardLayout)pnlWizard.getLayout()).previous(pnlWizard);
181
				}
182
			});
183
		}
184
		return btnBack;
185
	}
186
	/**
187
	 * This method initializes btnNext	
188
	 * 	
189
	 * @return javax.swing.JButton	
190
	 */    
191
	private JButton getBtnNext() {
192
		if (btnNext == null) {
193
			btnNext = new JButton();
194
			btnNext.setText(PluginServices.getText(this, "next"));
195
			btnNext.setPreferredSize(new java.awt.Dimension(62,18));
196
			btnNext.addActionListener(new java.awt.event.ActionListener() { 
197
				public void actionPerformed(java.awt.event.ActionEvent e) {
198
					boolean done = false;
199
					if (step == 0) done = connectionPanel.done();
200
					else if (step == 1) done = dbLayerDefinition.done();
201
					else if (step == 2) done = fieldSelection.done();
202
					else if (step == 3) done = geomFieldSelection.done();
203
					if (done){
204
						try {
205
							if (step == 0){
206
								dbLayerDefinition.setTables(getTableNames());
207
							    saveConnection();
208
							}
209
							else if (step == 1) {
210
								fieldSelection.setFields(getTableFields());
211
							}else if (step == 2) {
212
								geomFieldSelection.setFields(getFields());
213
							}else if (step == 3) {
214
								uniqueFieldSelection.setFields(getTableFields());
215
							}
216
							step++;
217
							enableButtons();
218
							((CardLayout)pnlWizard.getLayout()).next(pnlWizard);
219
						} catch (SQLException e1) {
220
							NotificationManager.addError("No se pudieron obtener los metadatos de la base de datos", e1);
221
						} catch (DriverLoadException e1) {
222
							NotificationManager.addError("No se pudo cargar el driver", e1);
223
						}
224
					}else{
225
						JOptionPane.showMessageDialog(WizardJDBC.this, "No estan todos los datos rellenos", "Error", JOptionPane.ERROR_MESSAGE);
226
						
227
					}
228
				}
229
			});
230
		}
231
		return btnNext;
232
	}
233

  
234
    private void saveConnection() {
235
        ConnectionSettings cs = new ConnectionSettings();
236
        cs.setDb(connectionPanel.getDBName());
237
        cs.setDriver(connectionPanel.getDriver());
238
        cs.setHost(connectionPanel.getHost());
239
        cs.setPort(connectionPanel.getPort());
240
        cs.setUser(connectionPanel.getUser());
241
        cs.setName(connectionPanel.getSettingsName());
242
        
243
      //  if (settings.get(connectionPanel.getSettingsName())== null){
244
            settings.put(connectionPanel.getSettingsName(), cs);
245
    //        connectionPanel.setSettings(settings);
246
        //}
247
        
248
		PluginServices ps = PluginServices.getPluginServices(this);
249
		XMLEntity xml = ps.getPersistentXML();
250

  
251
		try {
252
			String[] connections = xml.getStringArrayProperty("jdbc-connections");
253
			String[] newConnections = new String[connections.length + 1];
254
			System.arraycopy(connections, 0, newConnections, 0, connections.length);
255
			newConnections[connections.length] = cs.toString();
256
			xml.putProperty("jdbc-connections", newConnections);
257
		} catch (NotExistInXMLEntity e) {
258
			xml.putProperty("jdbc-connections", new String[] { cs.toString() });
259
		}
260

  
261
		ps.setPersistentXML(xml);
262
        
263
    }
264

  
265
    private String[] getTableNames() throws SQLException, DriverLoadException {
266
		Connection c = DriverManager.getConnection(getConnectionString(), connectionPanel.getUser(),
267
				connectionPanel.getPassword());
268

  
... This diff was truncated because it exceeds the maximum size that can be displayed.

Also available in: Unified diff