X-Git-Url: http://wamblee.org/gitweb/?a=blobdiff_plain;f=system%2Fspring%2Fsrc%2Ftest%2Fjava%2Forg%2Fwamblee%2Fsystem%2Fspring%2Fcomponent%2FDatabaseTesterComponent.java;h=ddbb6812d12c21d69881f78d43b77b5bb7e3bd6f;hb=8de36ff0206c996baf3ee4adc3e2293b12ff5f39;hp=09d5725bdfa7b2bced98a10e7b6666f1e76bcbd4;hpb=89c06d4d52b46c154128c97d6e758fa1f4fc7a6e;p=utils diff --git a/system/spring/src/test/java/org/wamblee/system/spring/component/DatabaseTesterComponent.java b/system/spring/src/test/java/org/wamblee/system/spring/component/DatabaseTesterComponent.java index 09d5725b..ddbb6812 100644 --- a/system/spring/src/test/java/org/wamblee/system/spring/component/DatabaseTesterComponent.java +++ b/system/spring/src/test/java/org/wamblee/system/spring/component/DatabaseTesterComponent.java @@ -67,16 +67,13 @@ import java.util.TreeMap; import javax.sql.DataSource; - /** - * Test support class for database testing. Currently, this still requires - * the spring platform transaction manager and hibernate template. + * Test support class for database testing. Currently, this still requires the + * spring platform transaction manager and hibernate template. */ public class DatabaseTesterComponent { - /** - * DOCUMENT ME! - */ - private static final Log LOG = LogFactory.getLog(DatabaseTesterComponent.class); + private static final Log LOG = LogFactory + .getLog(DatabaseTesterComponent.class); /** * Schema pattern. @@ -88,38 +85,25 @@ public class DatabaseTesterComponent { */ private ApplicationContext context; - /** - * DOCUMENT ME! - */ private HibernateTemplate hibernateTemplate; - /** - * DOCUMENT ME! - */ private PlatformTransactionManager transactionManager; - /** - * DOCUMENT ME! - */ private DataSource dataSource; -/** + /** * Creates a new DatabaseTesterComponent object. - * - * @param aHibernateTemplate DOCUMENT ME! - * @param aTransactionManager DOCUMENT ME! - * @param aDataSource DOCUMENT ME! + * */ public DatabaseTesterComponent(HibernateTemplate aHibernateTemplate, PlatformTransactionManager aTransactionManager, DataSource aDataSource) { - hibernateTemplate = aHibernateTemplate; - transactionManager = aTransactionManager; - dataSource = aDataSource; + hibernateTemplate = aHibernateTemplate; + transactionManager = aTransactionManager; + dataSource = aDataSource; } /** - * DOCUMENT ME! - * + * * @return Hibernate session factory. */ protected SessionFactory getSessionFactory() { @@ -128,10 +112,10 @@ public class DatabaseTesterComponent { /** * Performs common initialization for test cases: - * - * + * + * * @throws Exception */ public void setUp() throws Exception { @@ -141,9 +125,9 @@ public class DatabaseTesterComponent { } /** - * Performs common tear down after execution of a test case. - * Currenlty this method does nothing. - * + * Performs common tear down after execution of a test case. Currenlty this + * method does nothing. + * * @throws Exception */ protected void tearDown() throws Exception { @@ -151,8 +135,7 @@ public class DatabaseTesterComponent { } /** - * DOCUMENT ME! - * + * * @return Transaction manager */ protected PlatformTransactionManager getTransactionManager() { @@ -160,8 +143,7 @@ public class DatabaseTesterComponent { } /** - * DOCUMENT ME! - * + * * @return Starts a new transaction. */ protected TransactionStatus getTransaction() { @@ -174,7 +156,7 @@ public class DatabaseTesterComponent { /** * Returns the hibernate template for executing hibernate-specific * functionality. - * + * * @return Hibernate template. */ public HibernateTemplate getTemplate() { @@ -182,17 +164,17 @@ public class DatabaseTesterComponent { } /** - * Flushes the session. Should be called after some Hibernate work - * and before JDBC is used to check results. + * Flushes the session. Should be called after some Hibernate work and + * before JDBC is used to check results. */ public void flush() { getTemplate().flush(); } /** - * Flushes the session first and then removes all objects from the - * Session cache. Should be called after some Hibernate work and before - * JDBC is used to check results. + * Flushes the session first and then removes all objects from the Session + * cache. Should be called after some Hibernate work and before JDBC is used + * to check results. */ public void clear() { flush(); @@ -202,9 +184,9 @@ public class DatabaseTesterComponent { /** * Evicts the object from the session. This is essential for the * implementation of unit tests where first an object is saved and is - * retrieved later. By removing the object from the session, Hibernate - * must retrieve the object again from the database. - * + * retrieved later. By removing the object from the session, Hibernate must + * retrieve the object again from the database. + * * @param aObject */ protected void evict(Object aObject) { @@ -213,18 +195,13 @@ public class DatabaseTesterComponent { /** * Gets the connection. - * + * * @return Connection. */ public Connection getConnection() { return DataSourceUtils.getConnection(getDataSource()); } - /** - * DOCUMENT ME! - * - * @throws SQLException DOCUMENT ME! - */ public void cleanDatabase() throws SQLException { if (!isDatabaseConfigured()) { return; @@ -233,11 +210,11 @@ public class DatabaseTesterComponent { String[] tables = getTableNames(); try { - IDatabaseConnection connection = new DatabaseConnection(getConnection()); - ITableFilter filter = new DatabaseSequenceFilter(connection, - tables); - IDataSet dataset = new FilteredDataSet(filter, - connection.createDataSet(tables)); + IDatabaseConnection connection = new DatabaseConnection( + getConnection()); + ITableFilter filter = new DatabaseSequenceFilter(connection, tables); + IDataSet dataset = new FilteredDataSet(filter, connection + .createDataSet(tables)); DatabaseOperation.DELETE_ALL.execute(connection, dataset); } catch (DatabaseUnitException e) { @@ -248,19 +225,17 @@ public class DatabaseTesterComponent { } /** - * DOCUMENT ME! - * - * @return DOCUMENT ME! - * + * + * * @throws SQLException */ public String[] getTableNames() throws SQLException { List result = new ArrayList(); - LOG.debug("Getting database table names to clean (schema: '" - + SCHEMA_PATTERN + "'"); + LOG.debug("Getting database table names to clean (schema: '" + + SCHEMA_PATTERN + "'"); - ResultSet tables = getConnection().getMetaData() - .getTables(null, SCHEMA_PATTERN, "%", new String[] { "TABLE" }); + ResultSet tables = getConnection().getMetaData().getTables(null, + SCHEMA_PATTERN, "%", new String[] { "TABLE" }); while (tables.next()) { String table = tables.getString("TABLE_NAME"); @@ -269,8 +244,8 @@ public class DatabaseTesterComponent { // infrastructure tables. if (!table.toLowerCase().startsWith("hibernate")) { result.add(table); - LOG.debug("Adding " + table - + " to list of tables to be cleaned."); + LOG.debug("Adding " + table + + " to list of tables to be cleaned."); } } @@ -278,10 +253,8 @@ public class DatabaseTesterComponent { } /** - * DOCUMENT ME! - * - * @param aTableList DOCUMENT ME! - * + * + * * @throws SQLException */ public void emptyTables(List aTableList) throws SQLException { @@ -293,10 +266,8 @@ public class DatabaseTesterComponent { } /** - * DOCUMENT ME! - * - * @param aTable DOCUMENT ME! - * + * + * * @throws SQLException */ public void emptyTable(String aTable) throws SQLException { @@ -304,10 +275,8 @@ public class DatabaseTesterComponent { } /** - * DOCUMENT ME! - * - * @param aTable DOCUMENT ME! - * + * + * * @throws SQLException */ public void dropTable(String aTable) throws SQLException { @@ -316,9 +285,10 @@ public class DatabaseTesterComponent { /** * Executes an SQL statement within a transaction. - * - * @param aSql SQL statement. - * + * + * @param aSql + * SQL statement. + * * @return Return code of the corresponding JDBC call. */ public int executeSql(final String aSql) { @@ -326,13 +296,15 @@ public class DatabaseTesterComponent { } /** - * Executes an SQL statement within a transaction. See {@link - * #setPreparedParam(int, PreparedStatement, Object)}for details on + * Executes an SQL statement within a transaction. See + * {@link #setPreparedParam(int, PreparedStatement, Object)}for details on * supported argument types. - * - * @param aSql SQL statement. - * @param aArg Argument of the sql statement. - * + * + * @param aSql + * SQL statement. + * @param aArg + * Argument of the sql statement. + * * @return Return code of the corresponding JDBC call. */ public int executeSql(final String aSql, final Object aArg) { @@ -340,105 +312,112 @@ public class DatabaseTesterComponent { } /** - * Executes an sql statement. See {@link #setPreparedParam(int, - * PreparedStatement, Object)}for details on supported argument types. - * - * @param aSql SQL query to execute. - * @param aArgs Arguments. - * + * Executes an sql statement. See + * {@link #setPreparedParam(int, PreparedStatement, Object)}for details on + * supported argument types. + * + * @param aSql + * SQL query to execute. + * @param aArgs + * Arguments. + * * @return Number of rows updated. */ public int executeSql(final String aSql, final Object[] aArgs) { Map results = executeTransaction(new TestTransactionCallback() { - public Map execute() throws Exception { - JdbcTemplate template = new JdbcTemplate(getDataSource()); - int result = template.update(aSql, - aArgs); + public Map execute() throws Exception { + JdbcTemplate template = new JdbcTemplate(getDataSource()); + int result = template.update(aSql, aArgs); - Map map = new TreeMap(); - map.put("result", new Integer(result)); + Map map = new TreeMap(); + map.put("result", new Integer(result)); - return map; - } - }); + return map; + } + }); return ((Integer) results.get("result")).intValue(); } /** * Executes a transaction with a result. - * - * @param aCallback Callback to do your transactional work. - * + * + * @param aCallback + * Callback to do your transactional work. + * * @return Result. */ public Object executeTransaction(TransactionCallback aCallback) { - TransactionTemplate lTemplate = new TransactionTemplate(getTransactionManager()); + TransactionTemplate lTemplate = new TransactionTemplate( + getTransactionManager()); return lTemplate.execute(aCallback); } /** * Executes a transaction without a result. - * - * @param aCallback Callback to do your transactional work. . + * + * @param aCallback + * Callback to do your transactional work. . */ public void executeTransaction(TransactionCallbackWithoutResult aCallback) { - TransactionTemplate template = new TransactionTemplate(getTransactionManager()); + TransactionTemplate template = new TransactionTemplate( + getTransactionManager()); template.execute(aCallback); } /** - * Executes a transaction with a result, causing the testcase to - * fail if any type of exception is thrown. - * - * @param aCallback Code to be executed within the transaction. - * + * Executes a transaction with a result, causing the testcase to fail if any + * type of exception is thrown. + * + * @param aCallback + * Code to be executed within the transaction. + * * @return Result. - * - * @throws RuntimeException DOCUMENT ME! + * */ public Map executeTransaction(final TestTransactionCallback aCallback) { return (Map) executeTransaction(new TransactionCallback() { - public Object doInTransaction(TransactionStatus aArg) { - try { - return aCallback.execute(); - } catch (Exception e) { - // test case must fail. - e.printStackTrace(); - throw new RuntimeException(e); - } + public Object doInTransaction(TransactionStatus aArg) { + try { + return aCallback.execute(); + } catch (Exception e) { + // test case must fail. + e.printStackTrace(); + throw new RuntimeException(e); } - }); + } + }); } /** - * Executes a transaction with a result, causing the testcase to - * fail if any type of exception is thrown. - * - * @param aCallback Code to be executed within the transaction. - * - * @throws RuntimeException DOCUMENT ME! + * Executes a transaction with a result, causing the testcase to fail if any + * type of exception is thrown. + * + * @param aCallback + * Code to be executed within the transaction. + * */ public void executeTransaction( final TestTransactionCallbackWithoutResult aCallback) { executeTransaction(new TransactionCallbackWithoutResult() { - public void doInTransactionWithoutResult(TransactionStatus aArg) { - try { - aCallback.execute(); - } catch (Exception e) { - // test case must fail. - throw new RuntimeException(e.getMessage(), e); - } + public void doInTransactionWithoutResult(TransactionStatus aArg) { + try { + aCallback.execute(); + } catch (Exception e) { + // test case must fail. + throw new RuntimeException(e.getMessage(), e); } - }); + } + }); } /** * Executes an SQL query. - * - * @param aSql Query to execute. - * + * + * @param aSql + * Query to execute. + * * @return Result set. */ public ResultSet executeQuery(String aSql) { @@ -446,13 +425,15 @@ public class DatabaseTesterComponent { } /** - * Executes a query with a single argument. See {@link - * #setPreparedParam(int, PreparedStatement, Object)}for details on + * Executes a query with a single argument. See + * {@link #setPreparedParam(int, PreparedStatement, Object)}for details on * supported argument types. - * - * @param aSql Query. - * @param aArg Argument. - * + * + * @param aSql + * Query. + * @param aArg + * Argument. + * * @return Result set. */ public ResultSet executeQuery(String aSql, Object aArg) { @@ -460,21 +441,23 @@ public class DatabaseTesterComponent { } /** - * Executes a query. See {@link #setPreparedParam(int, - * PreparedStatement, Object)}for details on supported argument types. - * - * @param aSql Sql query. - * @param aArgs Arguments to the query. - * + * Executes a query. See + * {@link #setPreparedParam(int, PreparedStatement, Object)}for details on + * supported argument types. + * + * @param aSql + * Sql query. + * @param aArgs + * Arguments to the query. + * * @return Result set. - * - * @throws RuntimeException DOCUMENT ME! + * */ public ResultSet executeQuery(final String aSql, final Object[] aArgs) { try { - Connection connection = getConnection(); + Connection connection = getConnection(); - PreparedStatement statement = connection.prepareStatement(aSql); + PreparedStatement statement = connection.prepareStatement(aSql); setPreparedParams(aArgs, statement); return statement.executeQuery(); @@ -484,13 +467,15 @@ public class DatabaseTesterComponent { } /** - * Sets the values of a prepared statement. See {@link - * #setPreparedParam(int, PreparedStatement, Object)}for details on + * Sets the values of a prepared statement. See + * {@link #setPreparedParam(int, PreparedStatement, Object)}for details on * supported argument types. - * - * @param aArgs Arguments to the prepared statement. - * @param aStatement Prepared statement - * + * + * @param aArgs + * Arguments to the prepared statement. + * @param aStatement + * Prepared statement + * * @throws SQLException */ private void setPreparedParams(final Object[] aArgs, @@ -502,11 +487,14 @@ public class DatabaseTesterComponent { /** * Sets a prepared statement parameter. - * - * @param aIndex Index of the parameter. - * @param aStatement Prepared statement. - * @param aObject Value Must be of type Integer, Long, or String. - * + * + * @param aIndex + * Index of the parameter. + * @param aStatement + * Prepared statement. + * @param aObject + * Value Must be of type Integer, Long, or String. + * * @throws SQLException */ private void setPreparedParam(int aIndex, PreparedStatement aStatement, @@ -518,17 +506,12 @@ public class DatabaseTesterComponent { } else if (aObject instanceof String) { aStatement.setString(aIndex, (String) aObject); } else { - TestCase.fail("Unsupported object type for prepared statement: " - + aObject.getClass() + " value: " + aObject + " statement: " - + aStatement); + TestCase.fail("Unsupported object type for prepared statement: " + + aObject.getClass() + " value: " + aObject + " statement: " + + aStatement); } } - /** - * DOCUMENT ME! - * - * @return DOCUMENT ME! - */ private boolean isDatabaseConfigured() { try { getDataSource(); @@ -540,8 +523,7 @@ public class DatabaseTesterComponent { } /** - * DOCUMENT ME! - * + * * @return Returns the dataSource. */ public DataSource getDataSource() { @@ -549,17 +531,15 @@ public class DatabaseTesterComponent { } /** - * DOCUMENT ME! - * - * @param aTable DOCUMENT ME! - * + * + * * @return - * + * * @throws SQLException */ public int getTableSize(final String aTable) throws SQLException { ResultSet resultSet = executeQuery("select * from " + aTable); - int count = 0; + int count = 0; while (resultSet.next()) { count++; @@ -568,15 +548,6 @@ public class DatabaseTesterComponent { return count; } - /** - * DOCUMENT ME! - * - * @param aResultSet DOCUMENT ME! - * - * @return DOCUMENT ME! - * - * @throws SQLException DOCUMENT ME! - */ public int countResultSet(ResultSet aResultSet) throws SQLException { int count = 0;