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

📄 importtodb.java

📁 最新的数据交换
💻 JAVA
字号:
package com.gemt.dataswap.util;

import java.io.File;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Calendar;
import java.util.Collection;
import java.util.Iterator;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.Element;
import org.dom4j.io.SAXReader;
import com.gemt.dataswap.io.FileHandle;
import com.gemt.dataswap.resources.ReadConfig;

public class ImportToDB
{
	final static Log log = LogFactory.getLog(ImportToDB.class);
	
	private ImportToDB(){
		
	}

	/**
	 * 把XML文件数据导入到数据库;
	 * 如果数据导入成功,则把XML文件移动到成功目录,
	 * 如果XML文件数据导入失败,则把XML文件移动到失败目录
	 *
	 */
	public static void ImportXMLData() {
		if(log.isDebugEnabled()) {
			log.debug("ImportXMLData begin() ");
			log.debug("file" + File.pathSeparator + " " + File.separator + ": " + File.pathSeparatorChar + "  " + File.separatorChar );
		}
        Calendar c = Calendar.getInstance();
        //c.set(Calendar.HOUR_OF_DAY, 0);
        //c.set(Calendar.MINUTE, 0);
        //c.set(Calendar.SECOND, 0);
        java.text.DateFormat dataFormat = new SimpleDateFormat(Constants.BACK_UP_FOLDER_SECONDARY_PATTERN);
        String dateStr = dataFormat.format(c.getTime());
        if(log.isDebugEnabled()) log.debug("dateStr = " + dateStr);
        boolean createOkDirFlag = new File(ReadConfig.okfolder + File.separatorChar  + dateStr).mkdirs();
        boolean createFailDirFlag = new File(ReadConfig.failfolder + File.separatorChar  + dateStr).mkdirs();
        if(createOkDirFlag == false) {
        	if(log.isDebugEnabled()) {
        		log.debug("has not create ok folder for this time");
        	}
        }
        if(createFailDirFlag == false) {
        	if(log.isDebugEnabled()) {
        		log.debug("has not create fail folder for this time");
        	}
        }
        
        File okDir = new File(ReadConfig.okfolder + File.separatorChar + dateStr);
        File failDir = new File(ReadConfig.failfolder + File.separatorChar + dateStr);
		File[] fileArr = FileHandle.scanFolder();
		//考虑到数据库的外键约束,先处理在system-config.xml中配置优先处理的XML文件
		for(int i = 0; i < fileArr.length; i++) {
			parseXMLData(failDir, fileArr[i]);
			
			//当成功完成XML文件的导入数据库操作后, 把这个XML文件移动到导入成功的备份目录
			FileHandle.moveFile(okDir, fileArr[i], fileArr[i].getName());
		}
		
		if(log.isDebugEnabled()) {
			log.debug("ImportXMLData end() ");
		}		
	}
	
	public static void parseXMLData(File failDir, File dataFile) {
		if(log.isDebugEnabled()) {
			log.debug("parseXMLData begin() ");
		}
		SAXReader reader = new SAXReader();
		Document doc = null;
		try {
			doc = reader.read(dataFile);
		}
		catch (DocumentException e) {
			//e.printStackTrace();
			if(log.isErrorEnabled()) {
				log.error("DocumentException .......parseXMLData error : at file " + dataFile.getName() + " " + e);
			}
		}
		if(doc == null) {
			if(log.isErrorEnabled()) {
				log.error("parseXMLData error : at file " + dataFile.getName());
			}
			FileHandle.moveFile(failDir, dataFile, dataFile.getName());
		}
		
		//开始处理XML文件
		Element tableEle = (Element)doc.selectSingleNode(Constants.DATA_FILE_TABLE);
		
		if(log.isDebugEnabled()) {
			log.debug("tableEle name == " + tableEle.attributeValue(Constants.DATA_FILE_TABLE_NAME));
			log.debug("tableEle security == " + tableEle.attributeValue(Constants.DATA_FILE_TABLE_SECURITY));
		}
		
		Collection columnEle = doc.selectNodes(Constants.DATA_FILE_TABLE_COLUMU);
		Collection<String> columnList = new ArrayList<String>();
		for(Iterator it = columnEle.iterator(); it.hasNext();) {
			Element column = (Element)it.next();
			if(log.isDebugEnabled()) {
				log.debug("column value is " + column.getText());
			}
			columnList.add(column.getText());
		}
		String[] columnHeader = columnList.toArray(new String[0]);
		
		Collection rowEle = doc.selectNodes(Constants.DATA_FILE_TABLE_ROW);
		for(Iterator rowIt = rowEle.iterator(); rowIt.hasNext();) {
			Element values = (Element)rowIt.next();
			Collection valueList = values.selectNodes(Constants.DATA_FILE_TABLE_PATH_VALUE);
			
			int i = 0;
			for(Iterator valueIt = valueList.iterator(); valueIt.hasNext(); i++) {
				Element value = (Element)valueIt.next();
				if(log.isDebugEnabled()) {
					log.debug("columnHeader["+i+"](" + columnHeader[i] + ") = " + value.getText());
				}
				//TODO, import data at here, by PengQS 20070616
			}
		}
		
		if(log.isDebugEnabled()) {
			log.debug("parseXMLData end() ");
		}
	}
	
	
	/**
	 * @param args
	 */
	public static void main(String[] args) {
		ImportXMLData();
	}
}

⌨️ 快捷键说明

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