www.pudn.com > dataswap.rar > ExportToXML.java


package com.gemt.dataswap.util; 
 
import java.io.File; 
import java.io.FileWriter; 
import java.io.IOException; 
import java.sql.Connection; 
import java.sql.PreparedStatement; 
import java.sql.ResultSet; 
import java.sql.SQLException; 
import java.util.Map; 
import java.util.Set; 
import org.apache.commons.logging.Log; 
import org.apache.commons.logging.LogFactory; 
import org.dom4j.Document; 
import org.dom4j.DocumentException; 
import org.dom4j.DocumentHelper; 
import org.dom4j.io.OutputFormat; 
import org.dom4j.io.XMLWriter; 
import com.gemt.dataswap.config.TableConfig; 
import com.gemt.dataswap.dao.ConnectionFactory; 
import com.gemt.dataswap.dataset.DataType; 
import com.gemt.dataswap.resources.ReadConfig; 
 
public class ExportToXML extends ConnectionFactory 
{ 
	private static final Log log = LogFactory.getLog(ExportToXML.class); 
	 
	private ExportToXML() { 
		// TODO Auto-generated constructor stub 
	} 
	 
	public static void generateXML() { 
		if(log.isDebugEnabled()) 
			log.debug("generateXML.begin()..."); 
		Map tableConfigs = ReadConfig.tableConfig; 
		 
		Set tableNames = tableConfigs.keySet(); 
		PreparedStatement pstmt = null; 
		ResultSet rs = null; 
		for(String tableName : tableNames) { 
			TableConfig tableConfig = tableConfigs.get(tableName); 
			 
			//考虑到数据量会比较大, 所以为每个表生成一个XML文件, 在此处设置每个表对应的XML的头部信息 
			StringBuffer sb = new StringBuffer(); 
			sb.append(""); 
			sb.append(""); 
			for(int i = 0; i < tableConfig.getField().length; i++) { 
				sb.append("" + tableConfig.getField()[i].getName() + "");				 
			} 
 
			 
			Connection con = getConnection(tableConfig.getFromDb()); 
			if(log.isDebugEnabled()) { 
				log.debug("enquiry sql is :: " + tableConfig.getCondition()); 
			} 
			try { 
				pstmt = con.prepareStatement(tableConfig.getCondition()); 
				rs = pstmt.executeQuery(); 
 
				while(rs.next()) { 
					sb.append("");					 
					for(int j = 1; j <= rs.getMetaData().getColumnCount(); j++) { 
						//if(log.isDebugEnabled()) 
						//	log.debug(rs.getMetaData().getColumnName(j) + " " + rs.getObject(j)); 
						if(DataType.TIMESTAMP.equals(tableConfig.getField()[j-1].getType())) { 
							sb.append("" + rs.getTimestamp(j) + ""); 
						} 
						else if(DataType.TIME.equals(tableConfig.getField()[j-1].getType())) 
						{ 
							sb.append("" + rs.getTime(j) + ""); 
						} 
						else { 
							sb.append("" + rs.getObject(j) + ""); 
						} 
 
					} 
					sb.append("");					 
				} 
				 
				sb.append("
"); if(!"".equals(sb.toString())) { Document document = DocumentHelper.parseText(sb.toString()); write(document, tableName); } } catch (SQLException e) { if(log.isErrorEnabled()) { log.error("exception generate when export data for table :: " + tableName + " " + e); } } catch (DocumentException de) { if(log.isErrorEnabled()) { log.error("exception when generate xml file :: " + tableName + " " + de); } } catch(IOException ioe) { if(log.isErrorEnabled()) { log.error("exception when write xml file :: " + tableName + " " + ioe); } } finally { try { if(rs != null) { rs.close(); } if(pstmt != null) { pstmt.close(); } } catch (SQLException sqe) { if(log.isErrorEnabled()) { log.error("error when close some db param " + sqe); } } } //if(Constants.DATABASE_ORACLE.equals(dbDialectMap.get(tableConfig.getFromDb()))) { //} } closeAllConnection(); if(log.isDebugEnabled()) log.debug("generateXML.end()..."); } public static void write(Document document, String tableName) throws IOException { if(log.isDebugEnabled()) { log.debug("write file begin ......"); } boolean flag = false; flag = new File(ReadConfig.outfolder).mkdirs(); if(log.isDebugEnabled()) { log.debug("create folder flag is " + flag); } // 指定文件 OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("GBK"); XMLWriter writer = new XMLWriter(new FileWriter(new File(ReadConfig.outfolder, tableName + ".xml")), format); writer.write( document ); writer.close(); /* // 美化格式 OutputFormat format = OutputFormat.createPrettyPrint(); format.setEncoding("UTF-8"); writer = new XMLWriter( System.out, format ); writer.write( document ); // 缩减格式 format = OutputFormat.createCompactFormat(); writer = new XMLWriter( System.out, format ); writer.write( document ); */ if(log.isDebugEnabled()) { log.debug("write file end ......"); } } /** * @param args */ public static void main(String[] args) { generateXML(); } }