/**
* junit-rules: JUnit Rules Library
*
* Copyright (c) 2009-2011 by Alistair A. Israel.
* This software is made available under the terms of the MIT License.
*
* Created Oct 22, 2009
*/
package junit.rules.dbunit;
import java.io.File;
import java.io.FileInputStream;
import java.io.InputStream;
import java.util.ArrayList;
import java.util.List;
import org.dbunit.dataset.IDataSet;
import org.dbunit.dataset.xml.XmlDataSet;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
/**
* @author Alistair A. Israel
*/
public final class DbUnitUtil {
private static final Logger LOGGER = LoggerFactory.getLogger(DbUnitUtil.class);
/**
* Utility classes should not have a public or default constructor.
*/
private DbUnitUtil() {
// noop
}
/**
* @param fixtureNames
* the fixture names
* @return IDataSet[]
*/
public static IDataSet[] loadDataSets(final List<String> fixtureNames) {
final List<IDataSet> dataSets = new ArrayList<IDataSet>();
for (final String fixtureName : fixtureNames) {
LOGGER.trace("Attempting to load database fixture \"" + fixtureName + "\"");
final IDataSet dataSet = attemptToLoadFixture(fixtureName);
if (dataSet != null) {
dataSets.add(dataSet);
}
}
return dataSets.toArray(new IDataSet[dataSets.size()]);
}
/**
* @param fixtureName
* the fixture name
* @return {@link IDataSet}
*/
private static IDataSet attemptToLoadFixture(final String fixtureName) {
IDataSet dataSet = null;
try {
final InputStream in = new FileInputStream(getFile(fixtureName));
try {
if (in != null) {
if (fixtureName.endsWith(".xml")) {
dataSet = new XmlDataSet(in);
}
}
} finally {
in.close();
}
} catch (final Exception e) {
throw new Error(e.getMessage(), e);
}
return dataSet;
}
/**
* @param fixtureName
* the fixture (file) name
* @return the {@link File} with the prefix
*/
public static File getFile(final String fixtureName) {
return new File("src/test/db/fixtures", fixtureName);
}
}