X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=test%2Fenterprise%2Fsrc%2Fmain%2Fjava%2Forg%2Fwamblee%2Fsupport%2Fpersistence%2FDatabaseUtils.java;h=cd7b3e26dd0bd56cc1d943e37ef8262b478ce8ab;hb=185601ca79008d99e5c2293bc3686fc501720484;hp=d2abd90aeccd66eb12331370ed11602e202b9e27;hpb=db8c34ba627d0342d911283793352804bb353c64;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 d2abd90a..cd7b3e26 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 @@ -21,6 +21,7 @@ import java.sql.ResultSet; import java.sql.SQLException; import java.util.ArrayList; import java.util.List; +import java.util.logging.Level; import java.util.logging.Logger; import javax.sql.DataSource; @@ -66,9 +67,47 @@ public class DatabaseUtils { private DataSource dataSource; private ITableFilterSimple tables; + private IDatabaseTester dbtester; + /** + * List of connections that were created for dbtesters. + * This list will be closed in the {@link #stop()} method. + */ + private List connections; + + /** + * Constructs the database utils. + * Before use, {@link #start()} must be called. + * @param aDataSource Datasource. + * @param aTables Tables to work with. + */ public DatabaseUtils(DataSource aDataSource, ITableFilterSimple aTables) { dataSource = aDataSource; tables = aTables; + dbtester = new DataSourceDatabaseTester(dataSource); + connections = new ArrayList(); + } + + /** + * Starts the database utils. + */ + public void start() { + // Empty. No operation currently. + } + + /** + * Stops the database utils, closing any JDBC connections that were created + * by this utility. Note that connections obtained from the datasource directly + * must still be closed by the user. The involved connections are only those that + * are created by this utility. + */ + public void stop() { + for (IDatabaseConnection connection: connections) { + try { + connection.close(); + } catch (SQLException e) { + LOG.log(Level.WARNING, "Could not close connection", e); + } + } } public IDatabaseTester createDbTester() throws Exception { @@ -76,8 +115,9 @@ public class DatabaseUtils { } public IDatabaseTester createDbTester(String[] aTables) throws Exception { - IDatabaseTester dbtester = new DataSourceDatabaseTester(dataSource); - dbtester.setDataSet(dbtester.getConnection().createDataSet(aTables)); + IDatabaseConnection connection = dbtester.getConnection(); + connections.add(connection); + dbtester.setDataSet(connection.createDataSet(aTables)); return dbtester; } @@ -90,7 +130,7 @@ 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; @@ -188,8 +228,8 @@ public class DatabaseUtils { public void emptyTable(String aTable) throws Exception { executeSql("delete from " + aTable); } - - public void dropTables() throws Exception { + + public void dropTables() throws Exception { dropTables(tables); } @@ -207,11 +247,11 @@ public class DatabaseUtils { return dataset.getTableNames(); } }); - for (int i = sortedTables.length-1; i >= 0; i--) { + for (int i = sortedTables.length - 1; i >= 0; i--) { dropTable(sortedTables[i]); } } - + /** * @return * @throws SQLException