📄 configdbdlg.java
字号:
package com.jimw.mysqlplus;
import java.io.*;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Properties;
import java.awt.*;
import java.awt.event.*;
import javax.swing.*;
public class ConfigDBDlg extends JDialog {
JList list;
HashMap cfgMap;
DefaultListModel listModel;
private String[] dbType,dbDriver,defaultURL;
public ConfigDBDlg(JFrame frame,String title,HashMap cfgMap) {
super(frame, title, true);
this.cfgMap = cfgMap;
init();
loadSystemProperties();
}
private void init() {
//buttons
final JButton testButton = new JButton("Test");
final JButton addButton = new JButton("Add");
final JButton modifyButton = new JButton("Modify");
final JButton delButton = new JButton("Delete");
testButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
testConnection();
}
});
addButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
addNew();
}
});
modifyButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
modifyDB();
}
});
delButton.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
deleteDB();
}
});
getRootPane().setDefaultButton(testButton);
//main part of the dialog
listModel = new DefaultListModel();
Object[] key = cfgMap.keySet().toArray();
for (int i=0; i<key.length; i++)
listModel.addElement(key[i]);
list = new JList(listModel);
list.setSelectionMode(ListSelectionModel.SINGLE_INTERVAL_SELECTION);
list.addMouseListener(new MouseAdapter() {
public void mouseClicked(MouseEvent e) {
if (e.getClickCount() == 2) {
modifyButton.doClick();
}
}
});
JScrollPane listScroller = new JScrollPane(list);
listScroller.setPreferredSize(new Dimension(250, 80));
listScroller.setMinimumSize(new Dimension(250, 80));
listScroller.setAlignmentX(LEFT_ALIGNMENT);
JPanel listPane = new JPanel();
listPane.setLayout(new BoxLayout(listPane, BoxLayout.Y_AXIS));
JLabel label = new JLabel("DB Alias:");
label.setLabelFor(list);
listPane.add(label);
listPane.add(Box.createRigidArea(new Dimension(0,5)));
listPane.add(listScroller);
listPane.setBorder(BorderFactory.createEmptyBorder(10,10,10,10));
//Lay out the buttons from left to right.
JPanel buttonPane = new JPanel();
buttonPane.setLayout(new BoxLayout(buttonPane, BoxLayout.X_AXIS));
buttonPane.setBorder(BorderFactory.createEmptyBorder(0, 10, 10, 10));
buttonPane.add(Box.createHorizontalGlue());
buttonPane.add(testButton);
buttonPane.add(Box.createRigidArea(new Dimension(10, 0)));
buttonPane.add(addButton);
buttonPane.add(Box.createRigidArea(new Dimension(10, 0)));
buttonPane.add(modifyButton);
buttonPane.add(Box.createRigidArea(new Dimension(10, 0)));
buttonPane.add(delButton);
//Put everything together, using the content pane's BorderLayout.
Container contentPane = getContentPane();
contentPane.add(listPane, BorderLayout.CENTER);
contentPane.add(buttonPane, BorderLayout.SOUTH);
pack();
}
private void testConnection() {
String msg;
int index = list.getSelectedIndex();
if (index == -1) return;
Object key = list.getSelectedValue();
CfgStru cfgStru = (CfgStru)cfgMap.get(key);
JDBCAdapter dataBase = new JDBCAdapter(
cfgStru.serverURL,
cfgStru.driver,
cfgStru.username,
cfgStru.password);
msg = "UserName:"+cfgStru.username+"\nPassword:"+cfgStru.password+
"\nUrl:"+cfgStru.serverURL+"\n";
if (dataBase.isOpen())
msg = msg + "Test Success....";
else
msg = msg + "Test Failure...";
JOptionPane.showMessageDialog(this,msg);
try {
dataBase.close();
} catch (Exception ex) {
ex.printStackTrace();
}
return;
}
private void addNew() {
String[] ConnectOptionNames = { "Add","Cancel" };
String url = defaultURL[0];//"jdbc:oracle:thin:@127.0.0.1:1521:MYORACLE";
ModifyConfigDlg dlg = new ModifyConfigDlg(defaultURL[0],dbType[0]);
dlg.init(dbType,dbDriver,defaultURL);
if(JOptionPane.showOptionDialog(null, dlg, "Add a new DB connection",
JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE,
null, ConnectOptionNames, ConnectOptionNames[0]) == 0) {
checkInputValue(dlg,null);
}
}
private void modifyDB() {
String[] ConnectOptionNames = { "Modify","Cancel" };
int index = list.getSelectedIndex();
if (index == -1) return;
Object key = list.getSelectedValue();
CfgStru cfgStru = (CfgStru)cfgMap.get(key);
ModifyConfigDlg dlg = new ModifyConfigDlg(cfgStru.username,cfgStru.password,
cfgStru.serverURL,cfgStru.driver,cfgStru.alias,
cfgStru.dbType);
dlg.init(dbType,dbDriver,defaultURL);
if(JOptionPane.showOptionDialog(null, dlg, "Modify the DB connection",
JOptionPane.DEFAULT_OPTION, JOptionPane.INFORMATION_MESSAGE,
null, ConnectOptionNames, ConnectOptionNames[0]) == 0) {
checkInputValue(dlg,cfgStru.alias);
}
}
private void deleteDB() {
int index = list.getSelectedIndex();
if (index == -1) return;
int result = JOptionPane.showConfirmDialog(this,
"Are you sure delete this Database config?","Please confirm",JOptionPane.YES_NO_OPTION);
if (result == 0) {//select YES
cfgMap.remove(list.getSelectedValue());
listModel.remove(index);
writePropertiesFile();
}
}
public void checkInputValue(ModifyConfigDlg dlg,String oldKey) {
String username = dlg.getUserName();
String password = dlg.getPassword();
String url = dlg.getURL();
String driver = dlg.getDriver();
String alias = dlg.getAlias();
String dbType = dlg.getDBType();
alias = alias.toUpperCase();
if ("".equals(username) || "".equals(password) ||
"".equals(url) || "".equals(driver) ||
"".equals(alias) ) {
JOptionPane.showMessageDialog(this,"Error:Some filed is null!");
} else {
if (cfgMap.containsKey(alias) && !alias.equals(oldKey)) {
JOptionPane.showMessageDialog(this,"Error:The Alias is repeat!");
return;
}
if (oldKey != null) {//Modify config
cfgMap.remove(oldKey);
listModel.removeElement(oldKey);
}
CfgStru cfgStru = new CfgStru(alias,username,password,url,driver,dbType);
cfgMap.put(alias,cfgStru);
listModel.addElement(alias);
writePropertiesFile();
}
}
public void writePropertiesFile() {
try {
Properties props = new Properties();
FileOutputStream out = new FileOutputStream("./cfg/config.properties");
Iterator iterator = cfgMap.keySet().iterator();
int num = 1;
while (iterator.hasNext()) {
String key = (String)iterator.next();
CfgStru cfgStru = (CfgStru)cfgMap.get(key);
props.setProperty("alias."+num,cfgStru.alias);
props.setProperty("username."+num,cfgStru.username);
props.setProperty("password."+num,cfgStru.password);
props.setProperty("serverURL."+num,cfgStru.serverURL);
props.setProperty("driver."+num,cfgStru.driver);
props.setProperty("dbtype."+num,cfgStru.dbType);
num++;
}
props.store(out,null);
} catch (Exception ex) {
ex.printStackTrace();
}
}
private void loadSystemProperties() {
//dbtype.1=Oracle
//driver.1=oracle.jdbc.driver.OracleDriver
//defaulturl.1=jdbc\:oracle\:thin\:@127.0.0.1\:MYORACLE
try {
Properties props = new Properties();
props.load( new java.io.FileInputStream("./cfg/system.properties"));
int num = Integer.parseInt(props.getProperty("number"));
dbType = new String[num];
dbDriver = new String[num];
defaultURL = new String[num];
for(int i = 0; i < num; i++) {
dbType[i] = props.getProperty("dbtype."+(i+1));
if (dbType[i] == null) break;
dbDriver[i] = props.getProperty("driver."+(i+1));
defaultURL[i] = props.getProperty("defaulturl."+(i+1));
}
} catch (Exception ex) {
ex.printStackTrace();
}
}
public static void main(String[] args) {
final JFrame frame = new JFrame("test");
JButton btn = new JButton("show dlg");
btn.addActionListener(new ActionListener(){
public void actionPerformed(ActionEvent e) {
ConfigDBDlg dlg = new ConfigDBDlg(frame,"Config DB...",null);
dlg.show();
}});
frame.getContentPane().add(btn);
frame.show();
}
}
class ModifyConfigDlg extends JPanel implements ActionListener {
private String alias,username,password,serverURL,driver,type;
private String[] dbType,dbDriver,defaultURL;
private JTextField userNameField;
private JTextField passwordField;
private JTextField serverField;
private JTextField driverField;
private JTextField aliasField;
private JComboBox dbTypeList;
ModifyConfigDlg(String url,String type) {
this.serverURL = url;
this.type = type;
}
ModifyConfigDlg(String username,String password,String url,
String driver,String alias,String type) {
this.username = username;
this.password = password;
this.serverURL= url;
this.driver = driver;
this.alias = alias;
this.type = type;
}
public void init(String[] dbType,String[] dbDriver,String[] defaultURL) {
this.dbType = dbType;
this.dbDriver = dbDriver;
this.defaultURL = defaultURL;
createConnectionDialog();
dbTypeList.setSelectedItem(type);
}
private void createConnectionDialog() {
JLabel userNameLabel = new JLabel("User name: ", JLabel.RIGHT);
userNameField = new JTextField(username);
JLabel passwordLabel = new JLabel("Password: ", JLabel.RIGHT);
passwordField = new JTextField(password);
JLabel serverLabel = new JLabel("Database URL: ", JLabel.RIGHT);
serverField = new JTextField(serverURL);
JLabel driverLabel = new JLabel("Driver: ", JLabel.RIGHT);
driverField = new JTextField(driver);
JLabel aliasLabel = new JLabel("Database Alias: ", JLabel.RIGHT);
aliasField = new JTextField(alias);
JLabel dbTypeLabel = new JLabel("DB Type: ", JLabel.RIGHT);
dbTypeList = new JComboBox(dbType);
dbTypeList.addActionListener(this);
this.setLayout(new BoxLayout(this,BoxLayout.X_AXIS));
JPanel namePanel = new JPanel(false);
namePanel.setLayout(new GridLayout(0, 1));
namePanel.add(userNameLabel);
namePanel.add(passwordLabel);
namePanel.add(serverLabel);
namePanel.add(driverLabel);
namePanel.add(aliasLabel);
namePanel.add(dbTypeLabel);
JPanel fieldPanel = new JPanel(false);
fieldPanel.setLayout(new GridLayout(0, 1));
fieldPanel.add(userNameField);
fieldPanel.add(passwordField);
fieldPanel.add(serverField);
fieldPanel.add(driverField);
fieldPanel.add(aliasField);
fieldPanel.add(dbTypeList);
this.add(namePanel);
this.add(fieldPanel);
}
public void actionPerformed(ActionEvent e) {
JComboBox cb = (JComboBox)e.getSource();
int index = cb.getSelectedIndex();
if (index == -1) return;
if ( cb.getSelectedItem().equals(type) ) {
serverField.setText(serverURL);
} else {
serverField.setText(defaultURL[index]);
}
driverField.setText(dbDriver[index]);
}
public String getDBType() {
return (String)dbTypeList.getSelectedItem();
}
public String getAlias() {
return aliasField.getText().trim();
}
public String getURL() {
return serverField.getText().trim();
}
public String getDriver() {
return driverField.getText().trim();
}
public String getUserName() {
return userNameField.getText().trim();
}
public String getPassword() {
return passwordField.getText().trim();
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -