package org.unitils.dbunit.datasetfactory.impl; import java.io.File; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.InputStream; import java.util.Arrays; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; import org.unitils.core.UnitilsException; import org.unitils.dbunit.util.MultiSchemaDataSet; import org.unitils.dbunit.util.MultiSchemaXmlDataSetReaderExtend; /** * ResourceMultiSchemaXmlDataSetFactory - A factory to create datasets for {@link ResourceDataSet} and {@link ExpectedResourceDataSet} . * * @author wiw * * @since 1.2.8 * * @see <a href="http://unitils.org/summary.html">Unitils</a> */ public class ResourceMultiSchemaXmlDataSetFactory extends MultiSchemaXmlDataSetFactory { private static final Log LOGGER = LogFactory.getLog(ResourceMultiSchemaXmlDataSetFactory.class); /** * Creates a {@link MultiSchemaDataSet} * @param inputStreams * @return {@link MultiSchemaDataSet} */ public MultiSchemaDataSet createDataSet(InputStream... inputStreams) { try { MultiSchemaXmlDataSetReaderExtend multiSchemaXmlDataSetReader = new MultiSchemaXmlDataSetReaderExtend(defaultSchemaName); return multiSchemaXmlDataSetReader.readDataSetXml(Arrays.asList(inputStreams)); } catch (Exception e) { throw new UnitilsException((new StringBuilder()).append("Unable to create DbUnit dataset for data set resourcefiles: xxx").toString(), e); } } /** * The dataSetFiles are converted into inputstreams and than the {@link MultiSchemaDataSet} is created. * @see org.unitils.dbunit.datasetfactory.impl.MultiSchemaXmlDataSetFactory#createDataSet(java.io.File[]) */ @Override public MultiSchemaDataSet createDataSet(File... dataSetFiles) { InputStream[] tempStream = new InputStream[dataSetFiles.length]; for (int i = 0; i < dataSetFiles.length; i++) { File file = dataSetFiles[i]; try { tempStream[i] = new FileInputStream(file); } catch (FileNotFoundException e) { LOGGER.error(e.getMessage(), e); } } return createDataSet(tempStream); } }