1 17 package com.finalist.jaggenerator; 18 19 import javax.swing.*; 20 import java.sql.Connection ; 21 import java.sql.SQLException ; 22 23 27 public class ConnectDialog extends javax.swing.JDialog { 28 29 private JagGenerator parent; 30 private static final String DRIVER = "driver"; 31 private String [] showTableTypes = null; 32 private boolean offLineMode = false; 33 34 35 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 url = parent.root.datasource.getJdbcUrl().toString(); 43 String user = parent.root.datasource.userNameText.getText(); 44 String 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 64 private void initComponents() { 66 urlLabel = new javax.swing.JLabel (); 67 usernameLabel = new javax.swing.JLabel (); 68 passwordLabel = new javax.swing.JLabel (); 69 urlTextField = new javax.swing.JTextField (); 70 usernameTextField = new javax.swing.JTextField (); 71 connectButton = new javax.swing.JButton (); 72 passwordField = new javax.swing.JPasswordField (); 73 passwordLabel1 = new javax.swing.JLabel (); 74 showTablesRadioButton = new javax.swing.JCheckBox (); 75 showViewsRadioButton = new javax.swing.JCheckBox (); 76 showSynonymsRadioButton = new javax.swing.JCheckBox (); 77 connectButton1 = new javax.swing.JButton (); 78 79 getContentPane().setLayout(new org.netbeans.lib.awtextra.AbsoluteLayout()); 80 81 addWindowListener(new java.awt.event.WindowAdapter () { 82 public void windowClosing(java.awt.event.WindowEvent 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 () { 103 public void actionPerformed(java.awt.event.ActionEvent 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 () { 118 public void actionPerformed(java.awt.event.ActionEvent 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 () { 134 public void actionPerformed(java.awt.event.ActionEvent 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 145 private void offlineButtonActionPerformed(java.awt.event.ActionEvent evt) { parent.setOfflineMode(true); 148 this.dispose(); 149 } 151 private void showTablesRadioButtonActionPerformed(java.awt.event.ActionEvent evt) { } 155 156 private void connectButtonActionPerformed(java.awt.event.ActionEvent evt) { parent.setOfflineMode(false); 158 String url = urlTextField.getText(); 159 String username = usernameTextField.getText(); 160 String password = new String (passwordField.getPassword()); 161 java.util.ArrayList theTypes = new java.util.ArrayList (); 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 [theTypes.size()]; 172 for (int i = 0; i < theTypes.size(); i++) { 173 showTableTypes[i] = (String ) theTypes.get(i); 174 } 175 Connection con = null; 176 177 String databaseType = parent.root.datasource.getDatabase().getDbName(); 178 parent.setConManager( 179 new GenericJdbcManager(url, username, password, parent.root.datasource.getDatabase().getDriverClass(), showTableTypes)); 180 181 String connectLabel = "Database Connection: failed"; 183 String 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 e) { 193 requiresRestartWarning(e.getMessage(), databaseType, connectLabel, connectToolTip); 194 195 } catch (SQLException 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 e) { 203 genericConnectError(e, connectLabel, connectToolTip); 204 205 } finally { 206 if (con != null) { 207 try { 208 con.close(); 209 } catch (Exception e) { 210 JagGenerator.logToConsole("Connection couldn't be closed"); 211 } 212 } 213 } 214 this.dispose(); 215 } 217 private void genericConnectError(Exception e, String connectLabel, String 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 message, String databaseType, String connectLabel, String connectToolTip) { 226 JagGenerator.logToConsole("Database driver problem! Driver class: " + message); 227 String 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 242 private void closeDialog(java.awt.event.WindowEvent evt) { 244 } 246 247 private javax.swing.JButton connectButton; 249 private javax.swing.JButton connectButton1; 250 private javax.swing.JPasswordField passwordField; 251 private javax.swing.JLabel passwordLabel; 252 private javax.swing.JLabel passwordLabel1; 253 private javax.swing.JCheckBox showSynonymsRadioButton; 254 private javax.swing.JCheckBox showTablesRadioButton; 255 private javax.swing.JCheckBox showViewsRadioButton; 256 private javax.swing.JLabel urlLabel; 257 private javax.swing.JTextField urlTextField; 258 private javax.swing.JLabel usernameLabel; 259 private javax.swing.JTextField usernameTextField; 260 262 } 263 | Popular Tags |