X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=test%2Fenterprise%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsupport%2Fpersistence%2FDatabaseUtils.java;h=d2abd90aeccd66eb12331370ed11602e202b9e27;hb=edb24f54ba0affacbc1da46c9d72ea84add68f54;hp=5f26bd8e0dceab7d128684399eacb51727d950bc;hpb=5e33a52ba36ac928b9863ddd79d2d09f6a308af6;p=utils diff --git a/test/enterprise/src/main/java/org/wamblee/support/persistence/DatabaseUtils.java b/test/enterprise/src/main/java/org/wamblee/support/persistence/DatabaseUtils.java index 5f26bd8e..d2abd90a 100644 --- a/test/enterprise/src/main/java/org/wamblee/support/persistence/DatabaseUtils.java +++ b/test/enterprise/src/main/java/org/wamblee/support/persistence/DatabaseUtils.java @@ -90,15 +90,12 @@ public class DatabaseUtils { final String[] tables = getTableNames(aTables); executeInTransaction(new JdbcUnitOfWork() { public Void execute(Connection aConnection) throws Exception { - for (int i = tables.length - 1; i >= 0; i--) { + for (int i = tables.length-1; i >= 0; i--) { aOperation.execute(tables[i]); } return null; } }); - for (String table : tables) { - - } } public void cleanDatabase(ITableFilterSimple aSelection) throws Exception { @@ -123,6 +120,7 @@ public class DatabaseUtils { public T executeInTransaction(JdbcUnitOfWork aCallback) throws Exception { Connection connection = dataSource.getConnection(); + connection.setAutoCommit(false); try { T value = aCallback.execute(connection); connection.commit(); @@ -190,25 +188,30 @@ public class DatabaseUtils { public void emptyTable(String aTable) throws Exception { executeSql("delete from " + aTable); } - - public void dropTables() throws Exception { - executeOnTables(tables, new TableSetOperation() { - - public void execute(String aTable) throws Exception { - dropTable(aTable); - } - }); + + public void dropTables() throws Exception { + dropTables(tables); } public void dropTables(ITableFilterSimple aTables) throws Exception { - executeOnTables(aTables, new TableSetOperation() { + final String[] tables = getTableNames(aTables); + String[] sortedTables = executeInTransaction(new JdbcUnitOfWork() { - public void execute(String aTable) throws Exception { - dropTable(aTable); + public String[] execute(Connection aConnection) throws Exception { + IDatabaseConnection connection = new DatabaseConnection( + aConnection); + ITableFilter filter = new DatabaseSequenceFilter(connection, + tables); + IDataSet dataset = new FilteredDataSet(filter, connection + .createDataSet(tables)); + return dataset.getTableNames(); } }); + for (int i = sortedTables.length-1; i >= 0; i--) { + dropTable(sortedTables[i]); + } } - + /** * @return * @throws SQLException