KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > finalist > jaggenerator > ConnectDialog


1 /* Copyright (C) 2003 Finalist IT Group
2  *
3  * This file is part of JAG - the Java J2EE Application Generator
4  *
5  * JAG is free software; you can redistribute it and/or modify
6  * it under the terms of the GNU General Public License as published by
7  * the Free Software Foundation; either version 2 of the License, or
8  * (at your option) any later version.
9  * JAG is distributed in the hope that it will be useful,
10  * but WITHOUT ANY WARRANTY; without even the implied warranty of
11  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
12  * GNU General Public License for more details.
13  * You should have received a copy of the GNU General Public License
14  * along with JAG; if not, write to the Free Software
15  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
16  */

17 package com.finalist.jaggenerator;
18
19 import javax.swing.*;
20 import java.sql.Connection JavaDoc;
21 import java.sql.SQLException JavaDoc;
22
23 /**
24  *
25  * @author hillie
26  */

27 public class ConnectDialog extends javax.swing.JDialog JavaDoc {
28
29    private JagGenerator parent;
30    private static final String JavaDoc DRIVER = "driver";
31    private String JavaDoc[] showTableTypes = null;
32    private boolean offLineMode = false;
33
34
35    /** Creates new form ConnectDialog */
36    public ConnectDialog(JagGenerator parent) {
37       super(parent, true);
38       this.parent = parent;
39       initComponents();
40       this.setTitle("Connect to database");
41       this.setLocation(50, 150);
42       String JavaDoc url = parent.root.datasource.getJdbcUrl().toString();
43       String JavaDoc user = parent.root.datasource.userNameText.getText();
44       String JavaDoc password = parent.root.datasource.passwordText.getText();
45
46       if (url == null)
47          urlTextField.setText("jdbc:oracle:thin:@localhost:1521:orcl");
48       else
49          urlTextField.setText(url);
50       if (user == null)
51          user = "";
52       usernameTextField.setText(user);
53       if (password == null)
54          password = "";
55       passwordField.setText(password);
56    }
57
58
59    /** This method is called from within the constructor to
60     * initialize the form.
61     * WARNING: Do NOT modify this code. The content of this method is
62     * always regenerated by the Form Editor.
63     */

64     // <editor-fold defaultstate="collapsed" desc=" Generated Code ">//GEN-BEGIN:initComponents
65
private void initComponents() {
66         urlLabel = new javax.swing.JLabel JavaDoc();
67         usernameLabel = new javax.swing.JLabel JavaDoc();
68         passwordLabel = new javax.swing.JLabel JavaDoc();
69         urlTextField = new javax.swing.JTextField JavaDoc();
70         usernameTextField = new javax.swing.JTextField JavaDoc();
71         connectButton = new javax.swing.JButton JavaDoc();
72         passwordField = new javax.swing.JPasswordField JavaDoc();
73         passwordLabel1 = new javax.swing.JLabel JavaDoc();
74         showTablesRadioButton = new javax.swing.JCheckBox JavaDoc();
75         showViewsRadioButton = new javax.swing.JCheckBox JavaDoc();
76         showSynonymsRadioButton = new javax.swing.JCheckBox JavaDoc();
77         connectButton1 = new javax.swing.JButton JavaDoc();
78
79         getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout());
80
81         addWindowListener(new java.awt.event.WindowAdapter JavaDoc() {
82             public void windowClosing(java.awt.event.WindowEvent JavaDoc evt) {
83                 closeDialog(evt);
84             }
85         });
86
87         urlLabel.setText("Database URL");
88         getContentPane().add(urlLabel, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 20, 120, -1));
89
90         usernameLabel.setText("Username");
91         getContentPane().add(usernameLabel, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 40, 100, -1));
92
93         passwordLabel.setText("Password");
94         getContentPane().add(passwordLabel, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 60, -1, -1));
95
96         getContentPane().add(urlTextField, new org.netbeans.lib.awtextra.AbsoluteConstraints(110, 20, 370, -1));
97
98         getContentPane().add(usernameTextField, new org.netbeans.lib.awtextra.AbsoluteConstraints(110, 40, 170, -1));
99
100         connectButton.setText("Connect");
101         connectButton.setToolTipText("Connect to the database");
102         connectButton.addActionListener(new java.awt.event.ActionListener JavaDoc() {
103             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
104                 connectButtonActionPerformed(evt);
105             }
106         });
107
108         getContentPane().add(connectButton, new org.netbeans.lib.awtextra.AbsoluteConstraints(170, 130, -1, -1));
109
110         getContentPane().add(passwordField, new org.netbeans.lib.awtextra.AbsoluteConstraints(110, 60, 170, -1));
111
112         passwordLabel1.setText("Show");
113         getContentPane().add(passwordLabel1, new org.netbeans.lib.awtextra.AbsoluteConstraints(20, 90, -1, -1));
114
115         showTablesRadioButton.setSelected(true);
116         showTablesRadioButton.setLabel("tables");
117         showTablesRadioButton.addActionListener(new java.awt.event.ActionListener JavaDoc() {
118             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
119                 showTablesRadioButtonActionPerformed(evt);
120             }
121         });
122
123         getContentPane().add(showTablesRadioButton, new org.netbeans.lib.awtextra.AbsoluteConstraints(110, 90, -1, -1));
124
125         showViewsRadioButton.setText("views");
126         getContentPane().add(showViewsRadioButton, new org.netbeans.lib.awtextra.AbsoluteConstraints(190, 90, -1, -1));
127
128         showSynonymsRadioButton.setText("synonyms");
129         getContentPane().add(showSynonymsRadioButton, new org.netbeans.lib.awtextra.AbsoluteConstraints(270, 90, -1, -1));
130
131         connectButton1.setText("Offline");
132         connectButton1.setToolTipText("Work in offline mode");
133         connectButton1.addActionListener(new java.awt.event.ActionListener JavaDoc() {
134             public void actionPerformed(java.awt.event.ActionEvent JavaDoc evt) {
135                 offlineButtonActionPerformed(evt);
136             }
137         });
138
139         getContentPane().add(connectButton1, new org.netbeans.lib.awtextra.AbsoluteConstraints(260, 130, -1, -1));
140
141         pack();
142     }
143     // </editor-fold>//GEN-END:initComponents
144

145     private void offlineButtonActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_offlineButtonActionPerformed
146
// TODO add your handling code here:
147
parent.setOfflineMode(true);
148         this.dispose();
149     }//GEN-LAST:event_offlineButtonActionPerformed
150

151    private void showTablesRadioButtonActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_showTablesRadioButtonActionPerformed
152
// TODO add your handling code here:
153
}//GEN-LAST:event_showTablesRadioButtonActionPerformed
154

155
156    private void connectButtonActionPerformed(java.awt.event.ActionEvent JavaDoc evt) {//GEN-FIRST:event_connectButtonActionPerformed
157
parent.setOfflineMode(false);
158       String JavaDoc url = urlTextField.getText();
159       String JavaDoc username = usernameTextField.getText();
160       String JavaDoc password = new String JavaDoc(passwordField.getPassword());
161       java.util.ArrayList JavaDoc theTypes = new java.util.ArrayList JavaDoc();
162       if (this.showTablesRadioButton.isSelected()) {
163          theTypes.add("TABLE");
164       }
165       if (this.showSynonymsRadioButton.isSelected()) {
166          theTypes.add("SYNONYM");
167       }
168       if (this.showViewsRadioButton.isSelected()) {
169          theTypes.add("VIEW");
170       }
171       showTableTypes = new String JavaDoc[theTypes.size()];
172       for (int i = 0; i < theTypes.size(); i++) {
173          showTableTypes[i] = (String JavaDoc) theTypes.get(i);
174       }
175       Connection JavaDoc con = null;
176
177       String JavaDoc databaseType = parent.root.datasource.getDatabase().getDbName();
178       parent.setConManager(
179             new GenericJdbcManager(url, username, password, parent.root.datasource.getDatabase().getDriverClass(), showTableTypes));
180
181       // Assume the connection will fail.
182
String JavaDoc connectLabel = "Database Connection: failed";
183       String JavaDoc connectToolTip = "Database Connection: failed to " + databaseType + " using: url=" + url + " username=" + username + " pasword=" + password;
184       try {
185          con = parent.getConManager().connect();
186          JagGenerator.logToConsole("Connected to " + databaseType + " at " + url);
187          connectLabel = "Database Connection: connected";
188          connectToolTip = "Database Connection: connected to " + databaseType + " using: url=" + url + " username=" + username + " pasword=" + password;
189          parent.databaseConnectionLabel.setText(connectLabel);
190          parent.databaseConnectionLabel.setToolTipText(connectToolTip);
191
192       } catch (ClassNotFoundException JavaDoc e) {
193          requiresRestartWarning(e.getMessage(), databaseType, connectLabel, connectToolTip);
194
195       } catch (SQLException JavaDoc e) {
196          e.printStackTrace();
197          if (e.getMessage().indexOf(DRIVER) != -1) {
198             requiresRestartWarning(e.getMessage(), databaseType, connectLabel, connectToolTip);
199          } else {
200             genericConnectError(e, connectLabel, connectToolTip);
201          }
202       } catch (Exception JavaDoc e) {
203          genericConnectError(e, connectLabel, connectToolTip);
204
205       } finally {
206          if (con != null) {
207             try {
208                con.close();
209             } catch (Exception JavaDoc e) {
210                JagGenerator.logToConsole("Connection couldn't be closed");
211             }
212          }
213       }
214       this.dispose();
215    }//GEN-LAST:event_connectButtonActionPerformed
216

217    private void genericConnectError(Exception JavaDoc e, String JavaDoc connectLabel, String JavaDoc connectToolTip) {
218       e.printStackTrace();
219       JagGenerator.logToConsole("Error while connecting! - " + e);
220       parent.databaseConnectionLabel.setText(connectLabel);
221       parent.databaseConnectionLabel.setToolTipText(connectToolTip);
222       parent.setConManager(null);
223    }
224
225    private void requiresRestartWarning(String JavaDoc message, String JavaDoc databaseType, String JavaDoc connectLabel, String JavaDoc connectToolTip) {
226       JagGenerator.logToConsole("Database driver problem! Driver class: " + message);
227       String JavaDoc msg = "The driver you are trying to use to connect to the database is not working.\n" +
228             "Please check that you have chosen the correct 'Database Type' in the Datasource configuration screen.\n\n" +
229             "NOTE: If you added the driver for " + databaseType + " databases during this session,\n" +
230             "you'll need to restart JAG first to make the necessary driver available. Sorry!";
231       JagGenerator.logToConsole("\n" + msg + "\n");
232       JOptionPane.showMessageDialog(JagGenerator.jagGenerator,
233             msg, "Driver problems!", JOptionPane.INFORMATION_MESSAGE);
234
235       parent.databaseConnectionLabel.setText(connectLabel);
236       parent.databaseConnectionLabel.setToolTipText(connectToolTip);
237       parent.setConManager(null);
238    }
239
240
241    /** Closes the dialog */
242    private void closeDialog(java.awt.event.WindowEvent JavaDoc evt) {//GEN-FIRST:event_closeDialog
243

244    }//GEN-LAST:event_closeDialog
245

246
247     // Variables declaration - do not modify//GEN-BEGIN:variables
248
private javax.swing.JButton JavaDoc connectButton;
249     private javax.swing.JButton JavaDoc connectButton1;
250     private javax.swing.JPasswordField JavaDoc passwordField;
251     private javax.swing.JLabel JavaDoc passwordLabel;
252     private javax.swing.JLabel JavaDoc passwordLabel1;
253     private javax.swing.JCheckBox JavaDoc showSynonymsRadioButton;
254     private javax.swing.JCheckBox JavaDoc showTablesRadioButton;
255     private javax.swing.JCheckBox JavaDoc showViewsRadioButton;
256     private javax.swing.JLabel JavaDoc urlLabel;
257     private javax.swing.JTextField JavaDoc urlTextField;
258     private javax.swing.JLabel JavaDoc usernameLabel;
259     private javax.swing.JTextField JavaDoc usernameTextField;
260     // End of variables declaration//GEN-END:variables
261

262 }
263
Popular Tags