databasepanel.java

来自「导出ORACLE数据库对象DDL语句的程序」· Java 代码 · 共 370 行

JAVA
370
字号
package com.icbcsdc.ddlexp.ui.rightPanel;

import java.awt.BorderLayout;
import java.awt.Dimension;
import java.awt.Font;
import java.awt.GridLayout;
import java.awt.SystemColor;
import java.awt.Toolkit;
import java.util.Enumeration;
import java.util.Hashtable;

import javax.swing.BorderFactory;
import javax.swing.Box;
import javax.swing.BoxLayout;
import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JLabel;
import javax.swing.JPanel;
import javax.swing.border.Border;
import javax.swing.border.TitledBorder;

import com.icbcsdc.ddlexp.pub.xml.nodeinfo.XMLDatabase;
import com.icbcsdc.ddlexp.pub.xml.nodeinfo.XMLNode;
import com.icbcsdc.ddlexp.pub.xml.nodeinfo.XMLSchemas;
import com.icbcsdc.ddlexp.pub.xml.nodeinfo.XMLSecurity;
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.SelComponent;

/**
 *
 * 右边窗口
 * 
 * 显示当前数据库实例的详细信息
 *  
 */
public class DatabasePanel extends RightPanel {
	private BorderLayout borderLayout1 = new BorderLayout();
	private JPanel contentPane;
	private JPanel contentPane2;

	private Border border1;
	private TitledBorder titledBorder1;
	private GridLayout gridLayout1 = new GridLayout(5, 1, 50, 0);
	
	private JLabel jLabel_instance,jLabel_hostip,jLabel_port,jLabel_status;

	private JButton button_Component = new JButton();
	private JLabel labelDesc = new JLabel("Pelese select from the under checkbox:");
	private JCheckBox jCheckBox1 = new JCheckBox();
	private JCheckBox jCheckBox2 = new JCheckBox();
	private JCheckBox jCheckBox3 = new JCheckBox();	
	
	private JButton button_Export = new JButton();
	private JButton button_AllSelect = new JButton();
	private JButton button_ClearSelect = new JButton();
	
	private Hashtable children = null;
	private Enumeration enumeration = null;
	private Object[][] selectedObj = new Object[3][2];
	private static byte SELECT_SECURITY = 0;
	private static byte SELECT_STORAGE = 1;
	private static byte SELECT_SCHEMAS = 2;
	
	XMLDatabase database = null;
	
	public DatabasePanel(TreeFrame parent,XMLNode in_node) {
		super(parent,in_node);
		//this.node = in_node;

		database = (XMLDatabase)in_node;
		
		//读取子节点是否已被选择
		//安全性
  		if(database.getDirectChildren(XMLNode.XML_SECURITY)!=null){
	  		enumeration = database.getDirectChildren(XMLNode.XML_SECURITY).elements();
		    while(enumeration.hasMoreElements()){
		    	XMLSecurity security = (XMLSecurity)enumeration.nextElement();
		    	selectedObj[SELECT_SECURITY][0] = security.getName();
		    	selectedObj[SELECT_SECURITY][1] = new Boolean(security.isSelected());
		    }
  		
  		}

		//存储
  		if(database.getDirectChildren(XMLNode.XML_STORAGE)!=null){
	  		enumeration = database.getDirectChildren(XMLNode.XML_STORAGE).elements();
		    while(enumeration.hasMoreElements()){
		    	XMLStorage storage = (XMLStorage)enumeration.nextElement();
		    	selectedObj[SELECT_STORAGE][0] = storage.getName();
		    	selectedObj[SELECT_STORAGE][1] = new Boolean(storage.isSelected());
		    }
  		
  		}

		//方案
  		if(database.getDirectChildren(XMLNode.XML_SCHEMAS)!=null){
	  		enumeration = database.getDirectChildren(XMLNode.XML_SCHEMAS).elements();
		    while(enumeration.hasMoreElements()){
		    	XMLSchemas schemas = (XMLSchemas)enumeration.nextElement();
		    	selectedObj[SELECT_SCHEMAS][0] = schemas.getName();
		    	selectedObj[SELECT_SCHEMAS][1] = new Boolean(schemas.isSelected());
		    }
  		
  		}

		try {
			jbInit();
		} catch (Exception ex) {
			ex.printStackTrace();
		}
		
	}
	void jbInit() throws Exception {
		border1 = BorderFactory.createEtchedBorder(SystemColor.desktop, SystemColor.activeCaptionBorder);
		titledBorder1 = javax.swing.BorderFactory.createTitledBorder(javax.swing.BorderFactory.createLineBorder(java.awt.SystemColor.desktop,1), "数据库基本信息", javax.swing.border.TitledBorder.DEFAULT_JUSTIFICATION, javax.swing.border.TitledBorder.DEFAULT_POSITION, new java.awt.Font("Dialog", java.awt.Font.BOLD, 12), java.awt.Color.black);

		JPanel panel1 = new JPanel();
		JLabel banner1 = new JLabel("实例名:");
		jLabel_instance = new JLabel("");
		panel1.setLayout(new BoxLayout(panel1, BoxLayout.X_AXIS));
		panel1.setBorder(BorderFactory.createEmptyBorder(10, 30, 10, 10));
		panel1.add(Box.createRigidArea(new Dimension(13, 0)));
		panel1.add(banner1);
		panel1.add(Box.createRigidArea(new Dimension(10, 0)));
		panel1.add(jLabel_instance);

		JPanel panel2 = new JPanel();
		JLabel banner2 = new JLabel("主机:");
		jLabel_hostip = new JLabel("");
		panel2.setLayout(new BoxLayout(panel2, BoxLayout.X_AXIS));
		panel2.setBorder(BorderFactory.createEmptyBorder(5, 30, 10, 10));
		panel2.add(Box.createRigidArea(new Dimension(26, 0)));
		panel2.add(banner2);
		panel2.add(Box.createRigidArea(new Dimension(10, 0)));
		panel2.add(jLabel_hostip);

		JPanel panel3 = new JPanel();
		JLabel banner3 = new JLabel("端口:");
		jLabel_port = new JLabel("");
		panel3.setLayout(new BoxLayout(panel3, BoxLayout.X_AXIS));
		panel3.setBorder(BorderFactory.createEmptyBorder(5, 30, 10, 10));
		panel3.add(Box.createRigidArea(new Dimension(26, 0)));
		panel3.add(banner3);
		panel3.add(Box.createRigidArea(new Dimension(10, 0)));
		panel3.add(jLabel_port);

		JPanel panel4 = new JPanel();
		JLabel banner4 = new JLabel("实例状态:");
		jLabel_status = new JLabel(database.getStatus());
		panel4.setLayout(new BoxLayout(panel4, BoxLayout.X_AXIS));
		panel4.setBorder(BorderFactory.createEmptyBorder(5, 30, 10, 10));
		panel4.add(banner4);
		panel4.add(Box.createRigidArea(new Dimension(10, 0)));
		panel4.add(jLabel_status);

		contentPane = new JPanel();
		contentPane.setBorder(titledBorder1);
		contentPane.setLayout(gridLayout1);

	  contentPane.add(panel1);
      contentPane.add(panel2);
      contentPane.add(panel3);
      contentPane.add(panel4);

      labelDesc.setFont(new Font("华文细黑",Font.PLAIN,15));
	  labelDesc.setBounds(START_HOR,SHOW_HEIGHT*3,RIGHT_WIDTH,SHOW_HEIGHT);

	  this.button_Component.setText("Select Components");
	  this.button_Component.setBounds(0,SHOW_HEIGHT*1,170,SHOW_HEIGHT);
	  button_Component.addActionListener(new java.awt.event.ActionListener() { 
		public void actionPerformed(java.awt.event.ActionEvent e) {    
					pressSelCompnt();
		}
	  });
	  
	  //安全性
	  if(database.getDirectChildren(XMLNode.XML_SECURITY)!=null){
	      jCheckBox1.setText("Security");
	      jCheckBox1.setBounds(START_HOR+SHOW_HEIGHT*9,SHOW_HEIGHT*5,RIGHT_WIDTH,SHOW_HEIGHT);
	      if(this.selectedObj[SELECT_SECURITY][1].toString().equals("true"))
	      	jCheckBox1.setSelected(true);	      	
	  
	  }

		//存储
 	  if(database.getDirectChildren(XMLNode.XML_STORAGE)!=null){
	      jCheckBox2.setText("Storage");
	      jCheckBox2.setBounds(START_HOR+SHOW_HEIGHT*9,SHOW_HEIGHT*7,RIGHT_WIDTH,SHOW_HEIGHT);
	      if(this.selectedObj[SELECT_STORAGE][1].toString().equals("true"))
	      	jCheckBox2.setSelected(true);	      	
 	  
 	  }
      
		//方案
		if(database.getDirectChildren(XMLNode.XML_SCHEMAS)!=null){
	      jCheckBox3.setText("Schemas");
	      jCheckBox3.setBounds(START_HOR+SHOW_HEIGHT*9,SHOW_HEIGHT*9,RIGHT_WIDTH,SHOW_HEIGHT);
	      if(this.selectedObj[SELECT_SCHEMAS][1].toString().equals("true"))
	      	jCheckBox3.setSelected(true);	      	
			
		}

      this.button_Export.setText("Export");
      this.button_Export.setBounds((RIGHT_WIDTH-330)/4,SHOW_HEIGHT*12,110,SHOW_HEIGHT+SHOW_INTERVAL);
      button_Export.addActionListener(new java.awt.event.ActionListener() { 
			public void actionPerformed(java.awt.event.ActionEvent e) {    
				pressExport();
			}
		});

	  this.button_AllSelect.setText("All Select");
      this.button_AllSelect.setBounds((RIGHT_WIDTH-330)/4*2+110,SHOW_HEIGHT*12,110,SHOW_HEIGHT+SHOW_INTERVAL);
	  button_AllSelect.addActionListener(new java.awt.event.ActionListener() { 
		public void actionPerformed(java.awt.event.ActionEvent e) {    
			allSelect(true);
		}
	});
	  
      this.button_ClearSelect.setText("Clear Select");
      this.button_ClearSelect.setBounds((RIGHT_WIDTH-330)/4*3+220,SHOW_HEIGHT*12,120,SHOW_HEIGHT+SHOW_INTERVAL);
	  button_ClearSelect.addActionListener(new java.awt.event.ActionListener() { 
		public void actionPerformed(java.awt.event.ActionEvent e) {    
			allSelect(false);
		}
	});

      contentPane2 = new JPanel();
      contentPane2.setLayout(null);
      
	  contentPane2.add(labelDesc,null);
      contentPane2.add(jCheckBox1,null);
      contentPane2.add(jCheckBox2,null);
      contentPane2.add(jCheckBox3,null);
//      contentPane2.add(button_Component,null);
      contentPane2.add(button_Export,null);
      contentPane2.add(button_AllSelect,null);
      contentPane2.add(button_ClearSelect,null);

	this.setLayout(borderLayout1);
//	this.setPreferredSize(new Dimension(GlobalParameters.RIGHT_WIDTH,GlobalParameters.RIGHT_HEIGHT));
	this.setBorder(BorderFactory.createEmptyBorder(5, 5, 5, 5));
	this.add(contentPane, BorderLayout.NORTH);
	this.add(contentPane2, BorderLayout.CENTER);
	refresh();

	}

	//用户进入选择数据库组件的界面
	private void pressSelCompnt(){

		//若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{
//				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();
		

	}
	
    private void pressExport(){
		setSelect();
    	this.expDDL();    	
    }
    
    private void allSelect(boolean flag){
    	//全选和清除全选动作
    	this.jCheckBox1.setSelected(flag);
    	this.jCheckBox2.setSelected(flag);    	
    	this.jCheckBox3.setSelected(flag);    	
   }

    public JPanel getJPanel() {
		return this;

	};

	/*
	 * 实现接口 CommonView
	 * 
	 * @see console.CommView#open()
	 */
	public void refresh(){
		jLabel_instance.setText(database.getSrvName());
		if(database.getCompareStatus()==XMLNode.NO_COMPARED){
			jLabel_hostip.setText(database.getIP());
		}else
			jLabel_hostip.setText(database.getIP()+"("+database.getSrcPosition()+"<==>"+database.getDstPosition()+")");
		
		jLabel_port.setText(String.valueOf(database.getPort()));
		
		XMLDatabase db = (XMLDatabase)this.node.getDatabase();
		if(db!=null){
			jLabel_status.setText(database.getStatus());
		}
		
		if(!this.database.getDirectChildren().hasMoreElements()){
			this.button_Export.setEnabled(false);
			this.button_AllSelect.setEnabled(false);
			this.button_ClearSelect.setEnabled(false);
		}else{
			this.button_Export.setEnabled(true);
			this.button_AllSelect.setEnabled(true);
			this.button_ClearSelect.setEnabled(true);			
		}
		
	}
	
	public void open() {
	}
	
	public void close() {

	}
	/* (non-Javadoc)
	 * @see com.icbcsdc.ddlexp.ui.rightPanel.RightPanel#expDDL()
	 */
	public void expDDL() {
		parent.getSelectedTree().selectedNodeExport();			
	}
	
    public void setSelect(){
    	
    	if(this.database.getDirectChildren(XMLNode.XML_SECURITY)!=null) ((XMLSecurity)((this.database.getDirectChildren(XMLNode.XML_SECURITY).elements())).nextElement()).setSelected(this.jCheckBox1.isSelected());
    	if(this.database.getDirectChildren(XMLNode.XML_STORAGE)!=null) ((XMLStorage)((this.database.getDirectChildren(XMLNode.XML_STORAGE).elements())).nextElement()).setSelected(this.jCheckBox2.isSelected());
    	if(this.database.getDirectChildren(XMLNode.XML_SCHEMAS)!=null) ((XMLSchemas)((this.database.getDirectChildren(XMLNode.XML_SCHEMAS).elements())).nextElement()).setSelected(this.jCheckBox3.isSelected());
    }
}

 

⌨️ 快捷键说明

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