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