⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 databasemenu.java

📁 导出ORACLE数据库对象DDL语句的程序
💻 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 + -