📄 databasemenu.java
字号:
package com.icbcsdc.ddlexp.ui.popMenu;
import java.awt.Dimension;
import java.awt.Toolkit;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.File;
import javax.swing.JMenuItem;
import javax.swing.JOptionPane;
import com.icbcsdc.ddlexp.pub.staticLog.Logger;
import com.icbcsdc.ddlexp.pub.util.ConfigFile;
import com.icbcsdc.ddlexp.pub.util.FileDb;
import com.icbcsdc.ddlexp.pub.util.MessageBox;
import com.icbcsdc.ddlexp.pub.xml.nodeinfo.ComparedNode;
import com.icbcsdc.ddlexp.pub.xml.nodeinfo.XMLDatabase;
import com.icbcsdc.ddlexp.pub.xml.nodeinfo.XMLNode;
import com.icbcsdc.ddlexp.pub.xml.nodeinfo.XMLStorage;
import com.icbcsdc.ddlexp.ui.GlobalParameters;
import com.icbcsdc.ddlexp.ui.TreeFrame;
import com.icbcsdc.ddlexp.ui.dialog.DeamonThread;
import com.icbcsdc.ddlexp.ui.dialog.SelComponent;
import com.icbcsdc.ddlexp.ui.dialog.SetDirsDlg;
import com.icbcsdc.ddlexp.ui.dialog.SetExpFileDlg;
import com.icbcsdc.ddlexp.ui.dialog.WaitingDlg;
/**
* @author zhangyc
*
* To change this generated comment edit the template variable "typecomment":
* Window>Preferences>Java>Templates.
* To enable and disable the creation of type comments go to
* Window>Preferences>Java>Code Generation.
*/
public class DatabaseMenu extends ParentPopupMenu {
XMLDatabase database = null;
/**
* Constructor for DatabaseMenu.
* @param node
*/
public DatabaseMenu(TreeFrame parent,XMLNode in_node) {
super(parent,in_node);
database = ((XMLDatabase)in_node);
}
public void init(){
super.init();
//JMenuItem connectDBItem = new JMenuItem("Connect...");
//JMenuItem closeConnItem = new JMenuItem("Close Connection");
JMenuItem selComItem = new JMenuItem("Select Component");
JMenuItem expDBItem = new JMenuItem("Export DB Creation SQL"); //数据库的创建语句
JMenuItem delDBItem = new JMenuItem("Delete Database");
//popup.add(connectDBItem);
//popup.add(closeConnItem);
popup.add(selComItem);
popup.add(expDBItem);
popup.add(delDBItem);
//将数据库从树上移除
delDBItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
removeDb();
}
});
//选择数据库要安装的组件
selComItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
selCompnt();
}
});
//导出数据库的创建SQL语句
expDBItem.addActionListener(new ActionListener() {
public void actionPerformed(ActionEvent e) {
expDBCrSQL();
}
});
}
private void removeDb() {
// System.out.println("删除数据库:"+db.getSrvName()+":"+db.getIP()+":"+db.getDbUser());
if(JOptionPane.showConfirmDialog(null,"确实要从工具上移除数据库"+database.getSrvName()+"吗?","移除确认",JOptionPane.YES_NO_OPTION) == 0){
ConfigFile file=null;
if(parent.getSelectedTree().getCompareStatus()==ComparedNode.NO_COMPARED){
file = new ConfigFile(GlobalParameters.ddlDBConfig);
}else{
file = new ConfigFile(GlobalParameters.compareDBConfig);
}
Object[] sections = file.getAllSection();
for(int i = 0;i < sections.length;i++){
if(file.hasSection(sections[i].toString())){
FileDb filedb = file.getFileDb(sections[i].toString());
if((filedb.getDbName().equals(database.getSrvName()))&&(filedb.getIP().equals(database.getIP()))&&(filedb.getUserName().equals(database.getDBUser()))){
parent.removeDatabase(parent.getSelectedTree().getSelectedNode());
file.removeSection(sections[i].toString());
file.save();
System.out.println("完成移除数据库:"+filedb.getDbName());
return;
}
}
}
}
}
private void expDBCrSQL(){
System.out.println("expDBCrSQL call...");
/**设置导出环境中的各类环境变量*/
SetDirsDlg frmEnv = new SetDirsDlg(parent);
frmEnv.show();
if(frmEnv.result == 1){
database.setEnv(frmEnv.oracleHome,frmEnv.oracleBase,frmEnv.dataDir);
}else{
Logger.log(Logger.DEBUG,"用户取消输入参数!");
// MessageBox.showErr("所有参数不能为空");
return;
}
//SetExpFileDlg frmExpDir = new SetExpFileDlg(parent,GlobalParameters.expDBDir,false);
SetExpFileDlg frmExpDir = new SetExpFileDlg(parent,false);
frmExpDir.show();
String fileName = null;
if(frmExpDir.result == 1){
fileName = frmExpDir.fileName;
if((fileName!= null)||(fileName.length() > 0)){
GlobalParameters.expDBDir = new File(fileName);
}else{
MessageBox.showErr(getTreeFrame(),"导出目录不能为空");
return;
}
}else{
Logger.log(Logger.DEBUG,"用户取消输入导出目录");
return;
}
//parent.getSelectedTree().selectedNodeRefresh();
XMLStorage storage=(XMLStorage)database.getDirectChildren(XMLNode.XML_STORAGE,XMLStorage.NAME);
if(storage==null){
MessageBox.showErr(getTreeFrame(),"在导出数据库创建脚本之前,必须先打开数据库");
}
final DeamonThread mainthread = new DeamonThread() {
public void run() {
//TreeEventProcess.doubleClickNode();
try {
database.expDBSQL(GlobalParameters.expDBDir);
running=false;
} catch (Exception e) {
e.printStackTrace();
MessageBox.showErr(getTreeFrame(),e.getMessage());
}finally{
running=false;
}
}
};
mainthread.start();
WaitingDlg dlg = new WaitingDlg(parent, mainthread,"Exporting db creation sql...");
dlg.showInParentMiddle();
}
//用户进入选择数据库组件的界面
private void selCompnt(){
Logger.log(Logger.DEBUG,"选择要安装的组件");
//若component数组为空,则添加相应的内容
if(database.component == null){
//若是Oracle 9i
if(database.getVersion() == XMLDatabase.VERSION_ORACLE9I){
database.component = new Object[10][2];
for(int i=0;i<10;i++){
database.component[i][0] = i+1+"";
database.component[i][1] = new Boolean(false);
}
}else if(database.getVersion() == XMLDatabase.VERSION_ORACLE8I){
//若是Oracle 8i
database.component = new Object[5][2];
database.component[0][0] = XMLDatabase.COMPNT_8I_SPATIAL+"";
database.component[0][1] = new Boolean(false);
database.component[1][0] = XMLDatabase.COMPNT_8I_JSERVER+"";
database.component[1][1] = new Boolean(false);
database.component[2][0] = XMLDatabase.COMPNT_8I_INTERMEDIA+"";
database.component[2][1] = new Boolean(false);
database.component[3][0] = XMLDatabase.COMPNT_8I_ADVANCEDREPLICATION+"";
database.component[3][1] = new Boolean(false);
database.component[4][0] = XMLDatabase.COMPNT_8I_SQLPLUSHELP+"";
database.component[4][1] = new Boolean(false);
}else{
MessageBox.showErr(getTreeFrame(),"数据库未打开,无法选择安装组件!");
// Logger.log(Logger.DEBUG,"数据库未OPEN");
return;
}
}
SelComponent frame = new SelComponent(parent,database.component);
frame.pack();
Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize();
Dimension dlgSize = frame.getPreferredSize();
if (dlgSize.height > screenSize.height)
dlgSize.height = screenSize.height;
if (dlgSize.width > screenSize.width)
dlgSize.width = screenSize.width;
frame.setLocation((screenSize.width - dlgSize.width) / 2, (screenSize.height - dlgSize.height) / 2);
frame.setModal(true);
frame.show();
}
public static void main(String[] args) {
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -