View Javadoc
1 /* 2 * Created by IntelliJ IDEA. 3 * User: birchfield 4 * Date: Aug 18, 2002 5 * Time: 8:59:45 PM 6 * To change template for new class use 7 * Code Style | Class Templates options (Tools | IDE Options). 8 */ 9 package net.plugin.sql.gui; 10 11 import net.plugin.sql.beans.DataSource; 12 import net.plugin.sql.beans.TableInfo; 13 import net.plugin.sql.util.*; 14 import net.plugin.sql.listeners.TableSelectionListener; 15 16 import javax.swing.*; 17 import javax.swing.border.TitledBorder; 18 import java.util.*; 19 import java.util.List; 20 import java.awt.event.*; 21 import java.awt.*; 22 import java.sql.*; 23 24 public class SQLDataPanel extends JPanel implements MouseListener, ItemListener { 25 26 private DataSource dataSource = null; 27 28 private Collection listeners = null; 29 private JList tableList = null; 30 private JComboBox schemaBox = null; 31 private JScrollPane scrollPane = null; 32 private String currentSchema = null; 33 private JPanel schemaPanel = null; 34 35 private List tableNames = null; 36 private List schemaNames = null; 37 38 public SQLDataPanel(DataSource dataSource) { 39 System.out.println("SQLDataPanel.SQLDataPanel"); 40 setLayout(new BorderLayout()); 41 tableNames = new ArrayList(); 42 schemaNames = new ArrayList(); 43 this.dataSource = dataSource; 44 listeners = new ArrayList(); 45 tableList = new JList(); 46 schemaPanel = new JPanel(); 47 schemaPanel.setBorder(new TitledBorder("Schema")); 48 schemaBox = new JComboBox(); 49 buildSchemaList(); 50 if (schemaNames.size() != 0) { 51 if (dataSource.getLastScheme() != null && schemaNames.contains(dataSource.getLastScheme())) 52 { 53 currentSchema = dataSource.getLastScheme(); 54 schemaBox.setSelectedItem(currentSchema); 55 } 56 else 57 { 58 currentSchema = schemaNames.get(0).toString(); 59 dataSource.setLastScheme(currentSchema); 60 } 61 schemaBox.addItemListener(this); 62 schemaPanel.add(schemaBox); 63 } 64 updateTableList(currentSchema); 65 scrollPane = new JScrollPane(tableList); 66 add(scrollPane, BorderLayout.CENTER); 67 68 add(schemaPanel, BorderLayout.SOUTH); 69 tableList.addMouseListener(this); 70 } 71 72 73 public void mouseClicked(MouseEvent e) { 74 if (e.getClickCount() == 2) { 75 String tableName = tableList.getSelectedValue().toString(); 76 if (currentSchema == null || currentSchema.length() < 1) 77 notifyListeners(tableName); 78 else 79 notifyListeners(currentSchema + "." + tableName); 80 System.out.println(currentSchema + "." + tableName); 81 } 82 } 83 84 private void buildSchemaList() { 85 Connection con = null; 86 ResultSet rs = null; 87 88 try { 89 JDBCConnectionManager manager = new JDBCConnectionManager(dataSource); 90 con = manager.getConnection(); 91 DatabaseMetaData md = con.getMetaData(); 92 rs = md.getSchemas(); 93 while (rs.next()) { 94 schemaNames.add(rs.getString("TABLE_SCHEM")); 95 } 96 } catch (DataSourceException e) { 97 e.printStackTrace(); 98 } catch (SQLException e) { 99 e.printStackTrace(); 100 } finally { 101 try { 102 rs.close(); 103 con.close(); 104 } catch (SQLException e) { 105 e.printStackTrace(); 106 } 107 } 108 Collections.sort(schemaNames); 109 for (Iterator iterator = schemaNames.iterator(); iterator.hasNext();) { 110 String s = (String) iterator.next(); 111 System.out.println("s = " + s); 112 schemaBox.addItem(s); 113 114 } 115 } 116 117 private void updateTableList(String schema) { 118 System.out.println("SQLDataTree.updateTableNode"); 119 System.out.println("SQLDataPanel.updateTableList"); 120 tableNames = new ArrayList(); 121 Connection con = null; 122 ResultSet rs = null; 123 124 try { 125 JDBCConnectionManager manager = new JDBCConnectionManager(dataSource); 126 con = manager.getConnection(); 127 DatabaseMetaData md = con.getMetaData(); 128 String[] myTables = {"TABLE"}; 129 System.err.println("schema = " + schema); 130 rs = md.getTables(null, schema, "%", myTables); 131 while (rs.next()) { 132 TableInfo ti = new TableInfo(); 133 ti.setTableName(rs.getString("TABLE_NAME")); 134 ti.setSchemaName(rs.getString("TABLE_SCHEM")); 135 tableNames.add(ti); 136 } 137 } catch (DataSourceException e) { 138 e.printStackTrace(); 139 } catch (SQLException e) { 140 e.printStackTrace(); 141 } finally { 142 try { 143 rs.close(); 144 con.close(); 145 } catch (SQLException e) { 146 e.printStackTrace(); 147 } 148 } 149 Collections.sort(tableNames, new TableInfoComparator()); 150 Vector v = new Vector(tableNames.size()); 151 for (Iterator iterator = tableNames.iterator(); iterator.hasNext();) { 152 TableInfo ti = (TableInfo) iterator.next(); 153 v.add(ti.getTableName()); 154 } 155 tableList.setListData(v); 156 System.out.println("SQLDataPanel.updateTableList"); 157 System.out.println("SQLDataTree.updateTableNode"); 158 } 159 160 public void mousePressed(MouseEvent e) { 161 } 162 163 public void mouseReleased(MouseEvent e) { 164 } 165 166 public void mouseEntered(MouseEvent e) { 167 } 168 169 public void mouseExited(MouseEvent e) { 170 } 171 172 private void notifyListeners(String tableName) { 173 for (Iterator iterator = listeners.iterator(); iterator.hasNext();) { 174 TableSelectionListener tableSelectionListener = (TableSelectionListener) iterator.next(); 175 tableSelectionListener.tableSelected(tableName); 176 } 177 } 178 179 public void addTableSelectionListener(TableSelectionListener listener) { 180 listeners.add(listener); 181 } 182 183 public void itemStateChanged(ItemEvent e) { 184 String schemName = e.getItem().toString(); 185 currentSchema = schemName; 186 this.dataSource.setLastScheme(schemName); 187 updateTableList(schemName); 188 } 189 190 191 public static void main(String[] args) { 192 JFrame frame = new JFrame("Test"); 193 DataSource ds = new DataSource(); 194 ds.setName("Test"); 195 ds.setDriver("org.gjt.mm.mysql.Driver"); 196 ds.setUrl("jdbc:mysql://192.168.15.204/bikehell"); 197 ds.setUser("nico"); 198 ds.setPassword("test"); 199 JScrollPane jScrollPane = new JScrollPane(new SQLDataPanel(ds)); 200 frame.getContentPane().add(jScrollPane); 201 frame.pack(); 202 frame.show(); 203 } 204 205 206 }

This page was automatically generated by Maven