
it.tidalwave.util.test.DatabaseTestUtils Maven / Gradle / Ivy
The newest version!
/***********************************************************************************************************************
*
* blueBill Stats
* Copyright (C) 2011-2011 by Tidalwave s.a.s. (http://www.tidalwave.it)
*
***********************************************************************************************************************
*
* Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with
* the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on
* an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the
* specific language governing permissions and limitations under the License.
*
***********************************************************************************************************************
*
* WWW: http://bluebill.tidalwave.it/mobile/
* SCM: http://java.net/hg/bluebill-server~stats-src
*
**********************************************************************************************************************/
package it.tidalwave.util.test;
import javax.annotation.Nonnull;
import java.io.File;
import java.io.FileReader;
import java.io.FileWriter;
import java.io.IOException;
import java.io.Reader;
import java.io.Writer;
import java.sql.Connection;
import java.sql.SQLException;
import org.springframework.orm.jpa.JpaTransactionManager;
import org.dbunit.DatabaseUnitException;
import org.dbunit.database.DatabaseConnection;
import org.dbunit.database.IDatabaseConnection;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.XmlDataSet;
import org.dbunit.dataset.xml.XmlDataSetWriter;
import org.dbunit.operation.DatabaseOperation;
import lombok.Cleanup;
import lombok.NoArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import static lombok.AccessLevel.*;
/***********************************************************************************************************************
*
* @author Fabrizio Giudici
* @version $Id$
*
**********************************************************************************************************************/
@Slf4j @NoArgsConstructor(access=PRIVATE)
public final class DatabaseTestUtils // TODO: move class to TFT testutils
{
/*******************************************************************************************************************
*
* Delete all the contents of the database.
*
* @param transactionManager the Spring transaction manager
*
******************************************************************************************************************/
public static void delete (final @Nonnull JpaTransactionManager transactionManager)
throws SQLException, DatabaseUnitException
{
log.info("******** delete()");
final @Cleanup IDatabaseConnection connection = createConnection(transactionManager);
DatabaseOperation.DELETE_ALL.execute(connection, connection.createDataSet());
connection.close();
}
/*******************************************************************************************************************
*
* Populates the database from the given XML file.
*
* @param transactionManager the Spring transaction manager
* @param xmlFile the file with the data to populate the database with
*
******************************************************************************************************************/
public static void populate (final @Nonnull JpaTransactionManager transactionManager,
final @Nonnull File xmlFile)
throws SQLException, DatabaseUnitException, IOException
{
log.info("******** populate(.., {})", xmlFile);
final @Cleanup IDatabaseConnection connection = createConnection(transactionManager);
final @Cleanup Reader r = new FileReader(xmlFile);
DatabaseOperation.INSERT.execute(connection, new XmlDataSet(r));
r.close();
connection.close();
}
/*******************************************************************************************************************
*
* Dumps the database into the given XML file.
*
* @param transactionManager the Spring transaction manager
* @param xmlFile the file to create the dump into
*
******************************************************************************************************************/
public static void dump (final @Nonnull JpaTransactionManager transactionManager,
final @Nonnull File xmlFile)
throws SQLException, DatabaseUnitException, IOException
{
log.info("******** dump(.., {})", xmlFile);
final @Cleanup IDatabaseConnection connection = createConnection(transactionManager);
final IDataSet fullDataSet = connection.createDataSet();
final Writer w1 = new FileWriter(xmlFile);
final XmlDataSetWriter datasetWriter = new XmlDataSetWriter(w1, "UTF-8");
datasetWriter.write(fullDataSet);
w1.close();
connection.close();
}
/*******************************************************************************************************************
*
******************************************************************************************************************/
@Nonnull
private static IDatabaseConnection createConnection (final @Nonnull JpaTransactionManager transactionManager)
throws DatabaseUnitException, SQLException
{
final Connection jdbcConnection = transactionManager.getDataSource().getConnection();
final IDatabaseConnection connection = new DatabaseConnection(jdbcConnection);
return connection;
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy