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

📄 compareframe.java

📁 导出ORACLE数据库对象DDL语句的程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package com.icbcsdc.ddlexp.ui;
import java.awt.AWTEvent;
import java.awt.BorderLayout;
import java.awt.Color;
import java.awt.Dimension;
import java.awt.FlowLayout;
import java.awt.Font;
import java.awt.Frame;
import java.awt.Graphics;
import java.awt.GridLayout;
import java.awt.Point;
import java.awt.Rectangle;
import java.awt.SystemColor;
import java.awt.event.ActionEvent;
import java.awt.event.ActionListener;
import java.awt.event.WindowEvent;
import java.io.File;
import java.sql.CallableStatement;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.Types;

import javax.swing.BorderFactory;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JEditorPane;
import javax.swing.JLabel;
import javax.swing.JMenu;
import javax.swing.JMenuBar;
import javax.swing.JMenuItem;
import javax.swing.JPanel;
import javax.swing.JScrollPane;
import javax.swing.JSplitPane;
import javax.swing.JToolBar;
import javax.swing.UIManager;
import javax.swing.border.Border;

import pv.jfcx.JPVButton;
import pv.jfcx.PVNode;

import com.icbc.util.Context;
import com.icbc.util.DAO;
import com.icbc.util.DbCompare;
import com.icbc.util.XMLReader;
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.XMLManager;
import com.icbcsdc.ddlexp.pub.xml.nodeinfo.XMLNode;
import com.icbcsdc.ddlexp.pub.xml.nodeinfo.XMLSchema;
import com.icbcsdc.ddlexp.pub.xml.nodeinfo.XMLSchemas;
import com.icbcsdc.ddlexp.pub.connectionpool.JDBCCnn;
import com.icbcsdc.ddlexp.pub.connectionpool.JDBCException;
import com.icbcsdc.ddlexp.pub.connectionpool.JDBCPool;
import com.icbcsdc.ddlexp.pub.connectionpool.JDBCPoolManager;
import com.icbcsdc.ddlexp.ui.dialog.DeamonThread;
import com.icbcsdc.ddlexp.ui.dialog.MainFrameAboutBox;
import com.icbcsdc.ddlexp.ui.dialog.WaitingDlg;
import com.icbcsdc.ddlexp.ui.rightPanel.RightPanel;


/**
 * 
 * 主窗口类
 *  
 */
public class CompareFrame extends TreeFrame implements ActionListener {


    public MyTree selectedTreeView=null;

	/**
	 * 本Frame的Panel
	 */
	private JPanel contentPane;

	/**
	 * 窗体的菜单栏
	 */
	private JMenuBar myMenuBar = new JMenuBar();

	/**
	 * File菜单
	 */
	private JMenu jMenuFile = new JMenu();

	/**
	 * 退出菜单项
	 */
	private JMenuItem jMenuFileExit = new JMenuItem();

	/**
	 * 帮助菜单
	 */
	private JMenu jMenuHelp = new JMenu();

	/**
	 * 弹出about对话框的菜单项
	 */
	private JMenuItem jMenuHelpAbout = new JMenuItem();

	/**
	 * 窗体的工具栏
	 */
	private JToolBar jToolBar = new JToolBar();

	/**
	 * 窗体的工具栏按钮
	 */
	private JButton btnRefresh = new JButton();

	/**
	 * 窗体的工具栏按钮
	 */
	private JButton btnHelp = new JButton();
	
	/**
	 * 窗体的工具栏按钮
	 */
	private JButton btnCompare = new JButton();

	/**
	 * 用户管理按钮图标
	 */
	private ImageIcon usermanagerImage = null;

	/**
	 * 图标
	 */
	private ImageIcon refreshImage = null;

	/**
	 * 图标
	 */
	private ImageIcon helpImage = null;
	
	private ImageIcon compareImage = null;

	/**
	 * 窗体边框
	 */
	private Border mainFrmBorder = null;

	private File expFile = null;

	/**
	 * 窗体的状态栏
	 */
	private JToolBar statusBar = new JToolBar();
	private JLabel blankHeader = new JLabel("   ");
	private JLabel statusHeader = new JLabel(" ");
	private JLabel statusInfo = new JLabel("              ");

	private BorderLayout mainFrmBorderLayout = new BorderLayout();

	private JSplitPane splitPane = new JSplitPane();

	private JSplitPane splitPaneTop = new JSplitPane();

	private JSplitPane splitPaneBottom = new JSplitPane();

	private FlowLayout flwLayout = new FlowLayout();

	//private JButton button = new JButton("ttt");

	JEditorPane editPane = new JEditorPane();

	JPVButton jpvbutton = null;

	javax.swing.Timer m_run;

	/**
	 * 窗体左边树的容器
	 */
	protected MyTree treeSource;

	protected MyTree treeDest;

	/**
	 * 窗体右边树的容器
	 */
	protected MyTree treeCompared;

	XMLSchema srcXMLSchema=null;
	XMLSchema dstXMLSchema=null;
	XMLDatabase resultXMLDB=null;
	/**
	 * 窗体右边的容器
	 */
	protected JScrollPane jScrollPane = new JScrollPane();
	
	private static DAO srcDao=null,desDao=null,storageDao=null;
	
	private static Connection srcCon=null,desCon=null,storageCon=null;
	
	private String scope="*";
	//XMLManager manager=null;
	
	//XMLManager managerB=null;
	
	//XMLManager managerC=null;

	/**
	 * Construct the frame
	 */
	public CompareFrame() {
//		

		try {
			//manager= new XMLManager("源数据库");
//			LoadDBFromInitfile();

			jbInit();
			enableEvents(AWTEvent.WINDOW_EVENT_MASK);
			
			//jspStatic = jsp;
		} catch (Exception e) {
			Logger.log(Logger.ERROR, e.getMessage());
			//e.printStackTrace();
		}
	}

	static private CompareFrame instance = null; // 唯一实例

	/**
	 * 返回唯一实例.如果是第一次调用此方法,则创建实例
	 * 
	 * @return JDBCPoolManager 唯一实例
	 */
	static synchronized public CompareFrame getInstance() {
		
		if (instance == null) {
			instance = new CompareFrame();
			
			instance.setExtendedState(Frame.MAXIMIZED_BOTH);
			instance.show();

			instance.LoadDBFromInitfile();
			
			instance.selectedTreeView=instance.treeDest;
			instance.LoadDBFromInitfile();

			instance.selectedTreeView=instance.treeCompared;
			instance.LoadDBFromInitfile();
			
		}
	
		//instance.setVisible(true);
		
		return instance;
	}

	/**
	 * @throws Exception
	 *             窗体初始化
	 */
	private void jbInit() throws Exception {
		/** 设置图标 */
		usermanagerImage = new ImageIcon("img/user.gif");
		refreshImage = new ImageIcon("img/refresh18.gif");
		helpImage = new ImageIcon("img/help.gif");
		compareImage = new ImageIcon("img/dbs.gif");
		setIconImage(new ImageIcon("img/console1.gif").getImage());

		/** 设置边框和布局 */
		mainFrmBorder = BorderFactory.createEtchedBorder(SystemColor.desktop,
				SystemColor.activeCaptionBorder);
		contentPane = (JPanel) this.getContentPane();
		contentPane.setLayout(mainFrmBorderLayout);

		/** 树的生成 */
		this.constructTree();

		/** 设置按钮 */
		//btnUserManagement.setIcon(usermanagerImage);
		//btnUserManagement.setToolTipText("用户管理");
		btnRefresh.setIcon(refreshImage);
		btnRefresh.setToolTipText("刷新");
		btnHelp.setIcon(helpImage);
		btnHelp.setToolTipText("Help");
		btnCompare.setIcon(compareImage);
		btnCompare.setToolTipText("Compare");
		

		//System.out.println("4");
		jpvbutton = new pv.jfcx.JPVButton("") {
			pv.shape.Cube m_cube = new pv.shape.Cube(45, 20, null);
			protected Rectangle drawTextAndImage(Graphics g, int x, int y,
					int w, int h) {
				Rectangle r = super.drawTextAndImage(g, x, y, w, h);
				//-----------------
				// rotate cube on every paint
				m_cube.x = x + 1;
				m_cube.y = y + 1;
				m_cube.lines = Color.gray;
				double speed = 1;
				if (isFlat())
					speed /= 4.0;
				else if (getPressed())
					speed = -speed;
				m_cube.angleX += speed * 6.0;
				m_cube.angleY += speed;
				m_cube.angleZ += speed;
				m_cube.paint(g);
				return r;
			}
		};
		jpvbutton.setOpaque(true);
		jpvbutton.setCanKeepPressed(false);
		jpvbutton.setCanGetFocus(false);
		jpvbutton.setFocusRect((6 & 1) == 0);
		jpvbutton.setTextPressed("");
		jpvbutton.setText3D(-1, -1);
		jpvbutton.setThreeButtonStates(true);
		myMenuBar.add(jpvbutton);
		jpvbutton.setBounds(0, 0, 25, 25);

		/** 设置菜单 */
		this.setSize(new Dimension(800, 600));
		this.setTitle("DDLExp");
		jMenuFile.setText("File");
		jMenuFileExit.setText("Exit");
		jMenuHelp.setText("Help");
		jMenuHelpAbout.setText("About");
		//		jMenuTool.setText("Tools");
		jMenuFile.add(jMenuFileExit);
		jMenuHelp.add(jMenuHelpAbout);

		myMenuBar.setLayout(new GridLayout(1, 20));
		myMenuBar.add(jMenuFile);
		myMenuBar.add(jMenuHelp);
		//		myMenuBar.add(jMenuTool);

		JPanel j1 = new JPanel();
		myMenuBar.add(j1);
		JPanel j2 = new JPanel();
		myMenuBar.add(j2);
		JPanel j3 = new JPanel();
		myMenuBar.add(j3);
		JPanel j4 = new JPanel();
		myMenuBar.add(j4);
		JPanel j5 = new JPanel();
		myMenuBar.add(j5);
		JPanel j6 = new JPanel();
		myMenuBar.add(j6);
		JPanel j7 = new JPanel();
		myMenuBar.add(j7);
		JPanel j8 = new JPanel();
		myMenuBar.add(j8);
		JPanel j9 = new JPanel();
		myMenuBar.add(j9);
		JPanel j10 = new JPanel();
		myMenuBar.add(j10);
		JPanel j11 = new JPanel();
		myMenuBar.add(j11);
		JPanel j12 = new JPanel();
		myMenuBar.add(j12);
		JPanel j13 = new JPanel();
		myMenuBar.add(j13);
		JPanel j14 = new JPanel();
		myMenuBar.add(j14);
		JPanel j15 = new JPanel();

		//jMenuChange.add(jMenuNxtChange);
		//jMenuNxtChange.add(jMenuItem1);
		this.setJMenuBar(myMenuBar);

		//System.out.println("6");

		/** 将各种对象添加到主窗口中 */
		jToolBar.setOrientation(JToolBar.VERTICAL);
		jToolBar.add(btnRefresh);
		jToolBar.add(btnHelp);
		jToolBar.add(btnCompare);
		jToolBar.setBackground(Color.lightGray);
		contentPane.add(jToolBar, BorderLayout.WEST);

		statusBar.setOrientation(JToolBar.HORIZONTAL);
		statusBar.setPreferredSize(new Dimension(40, 25));
		statusBar.add(blankHeader);
		statusBar.add(statusHeader);
		statusBar.add(statusInfo);
		contentPane.add(statusBar, BorderLayout.SOUTH);

		contentPane.add(splitPane, BorderLayout.CENTER);
		contentPane.setBackground(Color.lightGray);
		contentPane.setBorder(mainFrmBorder);

		splitPane.setBackground(Color.lightGray);

		//		设置左面树面板的边框
		splitPane.setDividerSize(5);
		splitPane.setEnabled(true);

		//设置左左面板的边框
		splitPaneTop.setDividerSize(3);
		splitPaneTop.setEnabled(true);

		//设置右右面板的边框
		splitPaneBottom.setDividerSize(3);
		splitPaneBottom.setEnabled(true);

		treeSource.setBorderStyle(pv.util.PVBorder.OUTDENT + 4);
		treeDest.setBorderStyle(pv.util.PVBorder.OUTDENT + 4);
		treeCompared.setBorderStyle(pv.util.PVBorder.OUTDENT + 4);

		//分裂框中间条的位置
		splitPane.setDividerLocation(250);
		splitPaneTop.setDividerLocation(480);
		splitPaneBottom.setDividerLocation(300);

		//加载左面树面板
		splitPaneTop.add(treeSource, JSplitPane.LEFT);
		splitPaneTop.add(treeDest, JSplitPane.RIGHT);

		//加载右面树面板
		splitPaneBottom.add(treeCompared, JSplitPane.LEFT);
		splitPaneBottom.add(jScrollPane, JSplitPane.RIGHT);

		jScrollPane.setVerticalScrollBarPolicy(JScrollPane.VERTICAL_SCROLLBAR_AS_NEEDED);
		jScrollPane.setHorizontalScrollBarPolicy(JScrollPane.HORIZONTAL_SCROLLBAR_AS_NEEDED);
		jScrollPane.setViewportBorder(BorderFactory.createEtchedBorder());

		splitPane.setOrientation(javax.swing.JSplitPane.VERTICAL_SPLIT);
		splitPane.add(splitPaneTop, JSplitPane.TOP);
		splitPane.add(splitPaneBottom, JSplitPane.BOTTOM);

		//System.out.println("7");
		/** 添加各类事件监听器 */
		// 添加树的响应事件和鼠标事件
		//pv.jfcx.PVTreeListener ls = TreeEventProcess.buildListener();
		//treeView.addAllListeners(ls);
		//tree.addMouseListener(TreeEventProcess.buildMouseListener());
		//添加其它监听事件
		addListner();
		//System.out.println("8");
	}

	/**
	 * 退出
	 * 
	 * @param e
	 */
	public void jMenuFileExit_actionPerformed(ActionEvent e) {
		setVisible(false);
		instance=null;
		MainFrame frame=MainFrame.getInstance();
		frame.setVisible(true);
//		dispose();
		
	}

	/**
	 * 弹出about对话框
	 * 
	 * @param e
	 */
	public void jMenuHelpAbout_actionPerformed(ActionEvent e) {
		MainFrameAboutBox dlg = new MainFrameAboutBox(this);
		Dimension dlgSize = dlg.getPreferredSize();
		Dimension frmSize = getSize();
		Point loc = getLocation();
		dlg.setLocation((frmSize.width - dlgSize.width) / 2 + loc.x,
				(frmSize.height - dlgSize.height) / 2 + loc.y);
		dlg.setModal(true);
		dlg.pack();
		dlg.show();
	}

	//Overridden so we can exit when window is closed
	protected void processWindowEvent(WindowEvent e) {
		super.processWindowEvent(e);

		if (e.getID() == WindowEvent.WINDOW_CLOSING) {

			jMenuFileExit_actionPerformed(null);

		}
		if (e.getID() == WindowEvent.WINDOW_CLOSED) {

			jMenuFileExit_actionPerformed(null);

		}
	}

	public void actionPerformed(ActionEvent e) {
		if (e.getSource() == m_run)
			jpvbutton.repaint();

	}

	/**
	 * 把窗体上添加监听器的操作集中起来
	 */
	private void addListner() {
		jMenuFileExit.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jMenuFileExit_actionPerformed(e);
			}
		});
		jMenuHelpAbout.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				jMenuHelpAbout_actionPerformed(e);
			}
		});

		btnRefresh.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(ActionEvent e) {
				refreshButtonCall();
			}
		});
		
		btnHelp.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(ActionEvent e) {
			    //DBJFrame.main(null);
			}
		});
		
		btnCompare.addActionListener(new java.awt.event.ActionListener() {
			public void actionPerformed(ActionEvent e) {
				compareDB();
			}			   		
		});

	}

⌨️ 快捷键说明

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