package de.randi2.testUtility.utility;
import java.io.File;
import java.sql.Connection;
import javax.sql.DataSource;
import liquibase.Liquibase;
import liquibase.database.jvm.JdbcConnection;
import liquibase.logging.LogFactory;
import liquibase.logging.LogLevel;
import liquibase.resource.FileSystemResourceAccessor;
import org.dbunit.database.DatabaseConnection;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.FlatXmlDataSet;
import org.dbunit.operation.DatabaseOperation;
import org.springframework.beans.factory.annotation.Autowired;
public class InitializeDatabaseUtil {
@Autowired
private DataSource dataSource;
public void setUpDatabaseFull() throws Exception {
try {
setUpDatabase(new FlatXmlDataSet(new File(
"src/test/resources/dbunit/testdata.xml")));
} catch (Exception e) {
e.printStackTrace();
throw e;
}
}
public void setUpDatabaseEmpty() throws Exception {
setUpDatabase(new FlatXmlDataSet(new File(
"src/test/resources/dbunit/emptytestdata.xml")));
}
public void setUpDatabaseUserAndTrialSites() throws Exception {
setUpDatabase(new FlatXmlDataSet(new File(
"src/test/resources/dbunit/userAndTrialSitesTestdata.xml")));
}
private void setUpDatabase(IDataSet dataSet) throws Exception{
LogFactory.getLogger().setLogLevel(LogLevel.WARNING);
// initialize your database connection here
Connection connectionDS = dataSource.getConnection();
JdbcConnection jdbcConnection = new JdbcConnection(connectionDS);
// Liquibase liquibase = new Liquibase(
// "src/test/resources/liquibase/database_changelog.xml",
// new FileSystemResourceAccessor(), jdbcConnection);
// liquibase.update("init");
//
//
// connectionDS
// .createStatement()
// .executeUpdate(
// "DELETE FROM DATABASECHANGELOG WHERE ID='remove_constraints' OR ID='add_constraints';");
//
// connectionDS.commit();
// liquibase = new Liquibase(
// "src/test/resources/liquibase/removeConstraints.xml",
// new FileSystemResourceAccessor(), jdbcConnection);
// liquibase.update("remove_constraints");
IDatabaseConnection connection = new DatabaseConnection(connectionDS);
try {
DatabaseOperation.DELETE_ALL.execute(connection, dataSet);
DatabaseOperation.INSERT.execute(connection, dataSet);
jdbcConnection.commit();
// liquibase = new Liquibase(
// "src/test/resources/liquibase/addConstraints.xml",
// new FileSystemResourceAccessor(), jdbcConnection);
// liquibase.update("add_constraints");
} finally {
connection.close();
}
}
}