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

📄 comparedpopupmenu.java

📁 导出ORACLE数据库对象DDL语句的程序
💻 JAVA
字号:
package com.icbcsdc.ddlexp.ui.popMenu;

import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;

import javax.swing.JMenuItem;
import javax.swing.JPopupMenu;

import sun.security.krb5.internal.crypto.e;

import com.icbcsdc.ddlexp.pub.staticLog.Logger;
import com.icbcsdc.ddlexp.pub.util.MessageBox;
import com.icbcsdc.ddlexp.pub.xml.nodeinfo.XMLNode;
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.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 ComparedPopupMenu extends PopupMenu {
	JMenuItem refreshItem =null; 
	JMenuItem writScpItem = null;
	JPopupMenu popup = new JPopupMenu();
	TreeFrame parent=null;
	XMLNode node = null;
	String selFile = null;

	/**
	 * Constructor for ComparedPopupMenu.
	 * @param node
	 */
	public ComparedPopupMenu(TreeFrame parent,XMLNode node) {
		super(node);
		this.parent=parent;
		this.node = node;
	}

	protected void init(){
		refreshItem=new JMenuItem("Refresh "+this.node.getName());

		refreshItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				refreshNode();
			}
		});
		popup.add(refreshItem);
		
		//限制只能在Schemas或其子节点中才可以到处结果文件
		if(this.node.getName()!="Schemas"&&this.node.getParent().toString()!="数据库比较结果"){
		System.out.println(this.node.getParent());
		writScpItem=new JMenuItem("Write Compare Script To File");
		writScpItem.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				writeScpItem();
			}
		});	
		popup.add(writScpItem);		
		}

	}

	private void writeScpItem(){
		SetExpFileDlg frmExpDir = new SetExpFileDlg(parent,false);
		frmExpDir.show();
		
		if(frmExpDir.result == 1){
			selFile = frmExpDir.fileName;
			if((selFile!= null)||(selFile.length() > 0)){
				GlobalParameters.expDBDir = new File(selFile);
			}else{
				MessageBox.showErr(getTreeFrame(),"导出目录、文件不能为空");
				return;					
			}
		}else{
			Logger.log(Logger.DEBUG,"用户取消输入导出文件");
			return;		
		}
		Logger.log(Logger.DEBUG,"选中文件:"+selFile);

		//开始导出DDL
		final DeamonThread mainthread = new DeamonThread() {
			public void run() {
				try {
					Logger.log(Logger.DEBUG,"将比较脚本写入文件");
					File file = new File(selFile);
					if(file.isDirectory()){		//若用户选中一个目录,则在相应的目录下面添加一个文件comparedSQL.sql
			//			file = new File(selFile,"comparedSQL.sql");
		                
						File fileDir = new File(selFile+"/"+node.getSchema());
					    fileDir.mkdirs();
					    file=new File(fileDir.getPath(),node.getSchema()+".txt");
					}
					if(file.exists())			//清除已存在的文件	
						file.delete();
					BufferedWriter datIn=new BufferedWriter(new FileWriter(file,true));
					datIn.write("--------------------"+"Compared SQL"+"--------------------");
					datIn.newLine();
					datIn.newLine();
					datIn.close();
					node.writeComparedSQLToFil(file);
					running=false;				
				} catch (Exception e) {
					e.printStackTrace();
					Logger.log(Logger.INFO,e.getMessage());
					MessageBox.showErr(getTreeFrame(),"导出失败,请确定源SCHEMA和目标SCHEMA是否展开");
				}finally{
					running=false;				
				}	
			}
		};
		mainthread.start();
		WaitingDlg dlg = new WaitingDlg(this.parent, mainthread,"Exporting the selected node....");

		//dlg.show(300,300);
		dlg.showInParentMiddle();
	}

	private void addScpItem() throws Exception{


	}
	
	public void refreshNode(){
		parent.getSelectedTree().selectedNodeRefresh();		

	}


	/**
	 * @see com.icbcsdc.ddlexp.ui.popMenu.PopupMenu#getJPopupMenu()
	 */
	public JPopupMenu getJPopupMenu() {
		init();
		
		return popup;
	}
	

	public static void main(String[] args) {
	}
	/**
	 * Returns the parent.
	 * @return TreeFrame
	 */
	public TreeFrame getTreeFrame() {
		return parent;
	}

}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -