Package org.springside.modules.test.utils

Source Code of org.springside.modules.test.utils.DbUnitUtils

/**
* Copyright (c) 2005-2010 springside.org.cn
*
* Licensed under the Apache License, Version 2.0 (the "License");
*
* $Id: DbUnitUtils.java 1186 2010-08-29 16:34:10Z calvinxiu $
*/
package org.springside.modules.test.utils;

import java.io.IOException;
import java.io.InputStream;
import java.sql.SQLException;

import javax.sql.DataSource;

import org.dbunit.DatabaseUnitException;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSetBuilder;
import org.dbunit.ext.h2.H2Connection;
import org.dbunit.operation.DatabaseOperation;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import org.springframework.core.io.DefaultResourceLoader;
import org.springframework.core.io.ResourceLoader;
import org.springside.modules.utils.PropertiesUtils;

/**
* 使用DBUnit初始化测试用H2嵌入式数据库数据的工具类.
*/
public class DbUnitUtils {

  private static Logger logger = LoggerFactory.getLogger(PropertiesUtils.class);
  private static ResourceLoader resourceLoader = new DefaultResourceLoader();

  /**
   * 清除并插入XML数据文件到H2数据库.
   *
   * XML数据文件中涉及的表在插入数据前会先进行清除.
   *
   * @param xmlFilePaths 符合Spring Resource路径格式的文件列表.
   */
  public static void loadData(DataSource h2DataSource, String... xmlFilePaths) throws Exception {
    execute(DatabaseOperation.CLEAN_INSERT, h2DataSource, xmlFilePaths);
  }

  /**
   * 插入XML数据文件到H2数据库.
   */
  public static void appendData(DataSource h2DataSource, String... xmlFilePaths) throws Exception {
    execute(DatabaseOperation.INSERT, h2DataSource, xmlFilePaths);
  }

  /**
   * 在H2数据库中删除XML数据文件中涉及的表的数据.
   */
  public static void removeData(DataSource h2DataSource, String... xmlFilePaths) throws Exception {
    execute(DatabaseOperation.DELETE_ALL, h2DataSource, xmlFilePaths);
  }

  /**
   * 按DBUnit Operation执行XML数据文件的数据.
   *
   * @param xmlFilePaths 符合Spring Resource路径格式的文件列表.
   */
  private static void execute(DatabaseOperation operation, DataSource h2DataSource, String... xmlFilePaths)
      throws DatabaseUnitException, SQLException {
    IDatabaseConnection connection = new H2Connection(h2DataSource.getConnection(), "");
    for (String xmlPath : xmlFilePaths) {
      try {
        InputStream input = resourceLoader.getResource(xmlPath).getInputStream();
        IDataSet dataSet = new FlatXmlDataSetBuilder().setColumnSensing(true).build(input);
        operation.execute(connection, dataSet);
      } catch (IOException e) {
        logger.warn(xmlPath + " file not found", e);
      }
    }
  }
}
TOP

Related Classes of org.springside.modules.test.utils.DbUnitUtils

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.