From: <fg...@us...> - 2007-05-23 17:59:53
|
Revision: 328 http://svn.sourceforge.net/openutils/?rev=328&view=rev Author: fgiust Date: 2007-05-23 10:59:52 -0700 (Wed, 23 May 2007) Log Message: ----------- make default table filter overridable Modified Paths: -------------- trunk/openutils-testing-junit/src/main/java/it/openutils/testing/junit/DbUnitTestCase.java trunk/openutils-testing-testng/src/main/java/it/openutils/testing/testng/DbUnitTestCase.java Modified: trunk/openutils-testing-junit/src/main/java/it/openutils/testing/junit/DbUnitTestCase.java =================================================================== --- trunk/openutils-testing-junit/src/main/java/it/openutils/testing/junit/DbUnitTestCase.java 2007-05-04 16:49:46 UTC (rev 327) +++ trunk/openutils-testing-junit/src/main/java/it/openutils/testing/junit/DbUnitTestCase.java 2007-05-23 17:59:52 UTC (rev 328) @@ -21,12 +21,15 @@ import javax.sql.DataSource; import org.apache.commons.lang.ClassUtils; +import org.apache.commons.lang.StringUtils; import org.dbunit.database.DatabaseConnection; import org.dbunit.database.DatabaseSequenceFilter; import org.dbunit.database.IDatabaseConnection; +import org.dbunit.dataset.DataSetException; import org.dbunit.dataset.FilteredDataSet; import org.dbunit.dataset.IDataSet; import org.dbunit.dataset.excel.XlsDataSet; +import org.dbunit.dataset.filter.AbstractTableFilter; import org.dbunit.dataset.filter.ITableFilter; import org.dbunit.dataset.filter.SequenceTableFilter; import org.dbunit.dataset.xml.XmlDataSet; @@ -63,6 +66,27 @@ } /** + * Returns the table filter that will be used to exclude certain tables from sort/deletion. This may be overridden + * by subclasses, and is needed when tables have circular references (not handled by dbunit DatabaseSequenceFilter) + * @return an <code>ITableFilter</code> + */ + protected ITableFilter getTableFilter() + { + return new AbstractTableFilter() + { + + @Override + public boolean isValidName(String tableName) throws DataSetException + { + // default excludes: + // $ = oracle recycle bin tables + // JBPM = jbpm tables, with circular references + return !StringUtils.contains(tableName, "$") && !StringUtils.contains(tableName, "JBPM"); + } + }; + } + + /** * {@inheritDoc} */ @SuppressWarnings("unchecked") @@ -118,8 +142,12 @@ { log.debug("Generating sorted dataset for initial cleanup"); IDataSet unsortedTruncateDataSet = connection.createDataSet(); - ITableFilter filter = new DatabaseSequenceFilter(connection); + + ITableFilter filter = new DatabaseSequenceFilter(connection, new FilteredDataSet( + getTableFilter(), + unsortedTruncateDataSet).getTableNames()); truncateDataSet = new FilteredDataSet(filter, unsortedTruncateDataSet); + truncateDataSet = new FilteredDataSet(getTableFilter(), truncateDataSet); log.debug("Sorted dataset generated"); } Modified: trunk/openutils-testing-testng/src/main/java/it/openutils/testing/testng/DbUnitTestCase.java =================================================================== --- trunk/openutils-testing-testng/src/main/java/it/openutils/testing/testng/DbUnitTestCase.java 2007-05-04 16:49:46 UTC (rev 327) +++ trunk/openutils-testing-testng/src/main/java/it/openutils/testing/testng/DbUnitTestCase.java 2007-05-23 17:59:52 UTC (rev 328) @@ -95,6 +95,27 @@ } /** + * Returns the table filter that will be used to exclude certain tables from sort/deletion. This may be overridden + * by subclasses, and is needed when tables have circular references (not handled by dbunit DatabaseSequenceFilter) + * @return an <code>ITableFilter</code> + */ + protected ITableFilter getTableFilter() + { + return new AbstractTableFilter() + { + + @Override + public boolean isValidName(String tableName) throws DataSetException + { + // default excludes: + // $ = oracle recycle bin tables + // JBPM = jbpm tables, with circular references + return !StringUtils.contains(tableName, "$") && !StringUtils.contains(tableName, "JBPM"); + } + }; + } + + /** * Setup the Database before running the test method. * @throws Exception Any exception. */ @@ -198,19 +219,11 @@ log.debug("Generating sorted dataset for initial cleanup"); IDataSet unsortedTruncateDataSet = connection.createDataSet(); - ITableFilter filter = new DatabaseSequenceFilter(connection); + ITableFilter filter = new DatabaseSequenceFilter(connection, new FilteredDataSet( + getTableFilter(), + unsortedTruncateDataSet).getTableNames()); truncateDataSet = new FilteredDataSet(filter, unsortedTruncateDataSet); - - truncateDataSet = new FilteredDataSet(new AbstractTableFilter() - { - - @Override - public boolean isValidName(String tableName) throws DataSetException - { - return !StringUtils.contains(tableName, "$"); - } - }, truncateDataSet); - + truncateDataSet = new FilteredDataSet(getTableFilter(), truncateDataSet); log.debug("Sorted dataset generated"); } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |