📄 comparedpopupmenu.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 + -