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

📄 xmlschema.java

📁 导出ORACLE数据库对象DDL语句的程序
💻 JAVA
📖 第 1 页 / 共 2 页
字号:
package com.icbcsdc.ddlexp.pub.xml.nodeinfo;

import java.io.BufferedWriter;
import java.io.File;
import java.io.FileWriter;
import java.sql.PreparedStatement;
import java.sql.ResultSet;

import com.icbcsdc.ddlexp.pub.staticLog.Logger;
import com.icbcsdc.ddlexp.pub.connectionpool.JDBCCnn;
import com.icbcsdc.ddlexp.pub.connectionpool.JDBCPool;
import com.icbcsdc.ddlexp.pub.connectionpool.JDBCPoolManager;


/**
 * @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 XMLSchema extends XMLNode {

	String sqlCompareTables="SELECT COUNT(*) FROM COMPARE_TABLES WHERE SRC_OWNER=?"; 
	String sqlCompareViews="SELECT COUNT(*) FROM COMPARE_VIEWS WHERE SRC_OWNER=?";
	String sqlCompareSequences="SELECT COUNT(*) FROM COMPARE_SEQUENCES WHERE SRC_OWNER=?";
	String sqlCompareSynonyms="SELECT COUNT(*) FROM COMPARE_SYNONYMS WHERE SRC_OWNER=?";
	String sqlCompareTypes="SELECT COUNT(*) FROM COMPARE_TYPES WHERE SRC_OWNER=?";
	String sqlComparePackages="SELECT COUNT(*) FROM COMPARE_PACKAGES  WHERE SRC_OWNER=? ";
	String sqlCompareFunctions="SELECT COUNT(*) FROM COMPARE_FUNCTIONS  WHERE SRC_OWNER=? ";
	String sqlCompareProcedures="SELECT COUNT(*) FROM COMPARE_PROCEDURES  WHERE SRC_OWNER=?";
//	String sqlComparedSchemas="SELECT SRC_OWNER FROM COMPARE_TABLES WHERE ATTR_NAME='MYSTYLE' UNION SELECT SRC_OWNER FROM COMPARE_SEQUENCES WHERE ATTR_NAME='MYSTYLE' UNION SELECT SRC_OWNER FROM COMPARE_SYNONYMS WHERE ATTR_NAME='MYSTYLE' UNION SELECT SRC_OWNER FROM COMPARE_TYPES WHERE ATTR_NAME='MYSTYLE' UNION SELECT SRC_OWNER FROM COMPARE_VIEWS WHERE ATTR_NAME='MYSTYLE'";	

	//String sqlTriggers = "select name, MAX(LINE) from DBA_SOURCE where type= 'TRIGGER' and owner=? GROUP by name";
	//String sqlTriggersWrapped="select name from DBA_SOURCE where type='TRIGGER' and line=1 and owner=? and text like '% wrapped%'";

	public XMLSchema(String name) throws NodeException{
		this.name=name;
	}
	
	/**
	 * @see com.mysqlecc.pub.xml.XmlProcess.XMLNode#getType()
	 */
	public int getType() {
		return XMLNode.XML_SCHEMA;
	}

	/**从数据库中获取数据对象比较后的结果*/
	public void refreshChangedProperties() throws Exception{
		if(hasTables()){
			XMLTables tables=new XMLTables();		
			tables.setCompareStatus(ComparedNode.COMPARED);
			this.addChild(tables);
		}

		if(hasViews()){
			XMLViews views=new XMLViews();
			views.setCompareStatus(ComparedNode.COMPARED);
			this.addChild(views);
		
		}

		if(hasSequences()){
			XMLSequences seqs=new XMLSequences();
			seqs.setCompareStatus(ComparedNode.COMPARED);
			this.addChild(seqs);
		
		}

		if(hasSynonyms()){
			XMLSynonyms syns=new XMLSynonyms();
			syns.setCompareStatus(ComparedNode.COMPARED);
			this.addChild(syns);
		
		}

		if(hasTypes()){
			XMLTypes types=new XMLTypes();
			types.setCompareStatus(ComparedNode.COMPARED);
			this.addChild(types);
		
		}
			
//			/**处理sources对象*/
//			Logger.log(Logger.INFO,"hasPackages:"+hasPackages());
//			Logger.log(Logger.INFO,"hasProcedures:"+hasProcedures());
//			Logger.log(Logger.INFO,"hasFunctions:"+hasFunctions());
			if(hasPackages()||hasProcedures()||hasFunctions()){
				XMLSources sources=new XMLSources();
				sources.setCompareStatus(ComparedNode.COMPARED);
				this.addChild(sources);
			
			}

	}
	
	/**从数据库中获取数据对象定义*/
	public void refreshDDLInfo() throws Exception{
		this.addChild(new XMLTypes());
		this.addChild(new XMLSources());
		this.addChild(new XMLSynonyms());
		this.addChild(new XMLSequences());
		this.addChild(new XMLViews());
		this.addChild(new XMLTables());
	}


	/**
	 * @see com.icbcsdc.ddlexp.pub.xml.nodeinfo.XMLNode#refresh()
	 */
	public void refresh() throws Exception{
		refreshNodeNeedAccessDB();		
		super.refresh();
	}


	/**
	 * Manager类型的节点下面只能添加Database类型的节点
	 * */
	public boolean chkChildType(XMLNode node){
		if(node.getType()==XMLNode.XML_VIEWS) return true;
		if(node.getType()==XMLNode.XML_TYPES) return true;
		if(node.getType()==XMLNode.XML_SOURCES) return true;
		if(node.getType()==XMLNode.XML_SYNONYMS) return true;
		if(node.getType()==XMLNode.XML_SEQUENCES) return true;
		if(node.getType()==XMLNode.XML_TABLES) return true;

		return false;
	}

	/**
	 * Returns the 返回定义导出语句.
	 * @return String
	 */
	public String getSqlDDL(){
		return "";	
	}
	
	public XMLNode getIndirectChildren(XMLNode path){
		XMLNode result=null;
		
		switch(path.getType()){

			case XMLNode.XML_SOURCES:
				result=this.getDirectChildren(XMLNode.XML_SOURCES,XMLSources.NAME);
				break;
			
			case XMLNode.XML_FUNCTIONS:
				result=this.getDirectChildren(XMLNode.XML_SOURCES,XMLSources.NAME)
						.getDirectChildren(XMLNode.XML_FUNCTIONS,XMLFunctions.NAME);
				break;
		
			case XMLNode.XML_FUNCTION:
				result=this.getDirectChildren(XMLNode.XML_SOURCES,XMLSources.NAME)
						.getDirectChildren(XMLNode.XML_FUNCTIONS,XMLFunctions.NAME)
						.getDirectChildren(XMLNode.XML_FUNCTION,path.getName());
				break;
		
			case XMLNode.XML_PACKAGES:
				result=this.getDirectChildren(XMLNode.XML_SOURCES,XMLSources.NAME)
						.getDirectChildren(XMLNode.XML_PACKAGES,XMLPackages.NAME);
				break;
		
			case XMLNode.XML_PACKAGE:
				result=this.getDirectChildren(XMLNode.XML_SOURCES,XMLSources.NAME)
						.getDirectChildren(XMLNode.XML_PACKAGES,XMLPackages.NAME)
						.getDirectChildren(XMLNode.XML_PACKAGE,path.getName());
				break;
		
			case XMLNode.XML_PACKAGEBODIES:
				result=this.getDirectChildren(XMLNode.XML_SOURCES,XMLSources.NAME)
						.getDirectChildren(XML_PACKAGEBODIES,XMLPackageBodies.NAME);
				break;
		
			case XMLNode.XML_PACKAGEBODY:
				result=this.getDirectChildren(XMLNode.XML_SOURCES,XMLSources.NAME)
						.getDirectChildren(XML_PACKAGEBODIES,XMLPackageBodies.NAME)
						.getDirectChildren(XMLNode.XML_PACKAGEBODY,path.getName());
				break;
		
			case XMLNode.XML_PROCEDURES:
				result=this.getDirectChildren(XMLNode.XML_SOURCES,XMLSources.NAME)
						.getDirectChildren(XMLNode.XML_PROCEDURES,XMLProcedures.NAME);			
				break;

			case XMLNode.XML_PROCEDURE:
				result=this.getDirectChildren(XMLNode.XML_SOURCES,XMLSources.NAME)
						.getDirectChildren(XMLNode.XML_PROCEDURES,XMLProcedures.NAME)
						.getDirectChildren(XMLNode.XML_PROCEDURE,path.getName());
				break;
		
			case XMLNode.XML_TABLES:
				result=this.getDirectChildren(XMLNode.XML_TABLES,XMLTables.NAME);
				break;
		
			case XMLNode.XML_TABLE:
				result=this.getDirectChildren(XMLNode.XML_TABLES,XMLTables.NAME)
						.getDirectChildren(XMLNode.XML_TABLE,path.getName());
				break;
		
			case XMLNode.XML_TABCOMMENT:
				result=this.getDirectChildren(XMLNode.XML_TABLES,XMLTables.NAME)
						.getDirectChildren(XMLNode.XML_TABLE,path.getTable().getName())
						.getDirectChildren(XMLNode.XML_TABCOMMENT,XMLTabComment.NAME);
				break;

			case XMLNode.XML_TABCOLUMNS:
				result=this.getDirectChildren(XMLNode.XML_TABLES,XMLTables.NAME)
						.getDirectChildren(XMLNode.XML_TABLE,path.getTable().getName())
						.getDirectChildren(XMLNode.XML_TABCOLUMNS,XMLTabColumns.NAME);
				break;

			case XMLNode.XML_TABCOLUMN:
				result=this.getDirectChildren(XMLNode.XML_TABLES,XMLTables.NAME)
						.getDirectChildren(XMLNode.XML_TABLE,path.getTable().getName())
						.getDirectChildren(XMLNode.XML_TABCOLUMNS,XMLTabColumns.NAME)
						.getDirectChildren(XMLNode.XML_TABCOLUMN,path.getName());
				break;

			case XMLNode.XML_TABCOLCOMMENT:
				result=this.getDirectChildren(XMLNode.XML_TABLES,XMLTables.NAME)
						.getDirectChildren(XMLNode.XML_TABLE,path.getTable().getName())
						.getDirectChildren(XMLNode.XML_TABCOLUMNS,XMLTabColumns.NAME)
						.getDirectChildren(XMLNode.XML_TABCOLUMN,path.getTabColumn().getName())
						.getDirectChildren(XMLNode.XML_TABCOLCOMMENT,path.getName());
				break;

			case XMLNode.XML_INDEXES:
				result=this.getDirectChildren(XMLNode.XML_TABLES,XMLTables.NAME)
						.getDirectChildren(XMLNode.XML_TABLE,path.getTable().getName())

⌨️ 快捷键说明

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