This is an automated email from the git hooks/post-receive script. New commit to branch feature/2892 in repository topia. See http://git.nuiton.org/topia.git commit 0fe85a4b2203392d8834d36393409d3278986a6e Author: Brendan Le Ny <bleny@codelutin.com> Date: Tue Dec 16 18:15:02 2014 +0100 use JdbcHelper in tests --- pom.xml | 2 +- .../org/nuiton/topia/it/TopiaSchemaHelper.java | 72 +---------- .../topia/persistence/jdbc/JdbcH2Helper.java | 29 +++++ .../nuiton/topia/persistence/jdbc/JdbcHelper.java | 132 +++++++++++++++++++++ .../topia/migration/TopiaMigrationEngineTest.java | 60 +--------- 5 files changed, 171 insertions(+), 124 deletions(-) diff --git a/pom.xml b/pom.xml index fc60c8e..a6c4a22 100644 --- a/pom.xml +++ b/pom.xml @@ -206,7 +206,7 @@ <module>topia-templates</module> <module>topia-it</module> <module>topia-service-replication</module> - <module>topia-service-migration</module> + <!--<module>topia-service-migration</module>--> <module>topia-service-flyway</module> <module>topia-service-liquibase</module> <module>topia-service-csv</module> diff --git a/topia-it/src/main/java/org/nuiton/topia/it/TopiaSchemaHelper.java b/topia-it/src/main/java/org/nuiton/topia/it/TopiaSchemaHelper.java index f1683b0..09831d1 100644 --- a/topia-it/src/main/java/org/nuiton/topia/it/TopiaSchemaHelper.java +++ b/topia-it/src/main/java/org/nuiton/topia/it/TopiaSchemaHelper.java @@ -26,17 +26,8 @@ package org.nuiton.topia.it; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.nuiton.topia.persistence.TopiaConfigurationConstants; -import org.nuiton.topia.persistence.TopiaException; import org.nuiton.topia.persistence.jdbc.JdbcConfiguration; - -import java.sql.CallableStatement; -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.SQLException; -import java.sql.Statement; -import java.util.HashMap; -import java.util.Map; +import org.nuiton.topia.persistence.jdbc.JdbcHelper; /** * Created on 7/6/14. @@ -48,57 +39,6 @@ public class TopiaSchemaHelper { private static final Log log = LogFactory.getLog(TopiaSchemaHelper.class); - protected static void closeQuietly(Connection connection) { - if (connection != null) { - try { - connection.close(); - } catch (Exception eee) { - if (log.isWarnEnabled()) { - log.warn("Unable to close: " + eee.getMessage() , eee); - } - } - } - } - - protected static void closeQuietly(Statement statement) { - if (statement != null) { - try { - statement.close(); - } catch (Exception eee) { - if (log.isWarnEnabled()) { - log.warn("Unable to close: " + eee.getMessage() , eee); - } - } - } - } - - /** - * Create the physical schema. - * - * @param config sql connection configuration - * @param schemaName name of schema to create - * @throws Exception if could not create schema - * @since 3.0 - */ - protected static void createSchema(Map<String, String> config, String schemaName) { - Connection connection = null; - CallableStatement callableStatement = null; - try { - //DriverManager.registerDriver(new Driver()); - connection = DriverManager.getConnection( - config.get(TopiaConfigurationConstants.CONFIG_URL), - config.get(TopiaConfigurationConstants.CONFIG_USER), - config.get(TopiaConfigurationConstants.CONFIG_PASS)); - callableStatement = connection.prepareCall("create schema " + schemaName); - callableStatement.execute(); - } catch (SQLException e) { - throw new TopiaException(e); - } finally { - closeQuietly(callableStatement); - closeQuietly(connection); - } - } - /** * The mapping database use two extra schema (A and B) see test17. * @@ -106,13 +46,9 @@ public class TopiaSchemaHelper { */ public static void createMappingDataBaseSchemas(JdbcConfiguration jdbcConfiguration) { - Map<String, String> map = new HashMap<String, String>(); - map.put(TopiaConfigurationConstants.CONFIG_URL, jdbcConfiguration.getJdbcConnectionUrl()); - map.put(TopiaConfigurationConstants.CONFIG_USER, jdbcConfiguration.getJdbcConnectionUser()); - map.put(TopiaConfigurationConstants.CONFIG_PASS, jdbcConfiguration.getJdbcConnectionPassword()); - - createSchema(map, "A"); - createSchema(map, "B"); + JdbcHelper jdbcHelper = new JdbcHelper(jdbcConfiguration); + jdbcHelper.createSchema("A"); + jdbcHelper.createSchema("B"); } diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/jdbc/JdbcH2Helper.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/jdbc/JdbcH2Helper.java new file mode 100644 index 0000000..10e11a0 --- /dev/null +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/jdbc/JdbcH2Helper.java @@ -0,0 +1,29 @@ +package org.nuiton.topia.persistence.jdbc; + +import java.sql.Connection; +import java.sql.ResultSet; +import java.sql.SQLException; + +public class JdbcH2Helper extends JdbcHelper { + + public JdbcH2Helper(JdbcConfiguration jdbcConfiguration) { + super(jdbcConfiguration); + } + + public boolean isTableExist(String tableName) { + Connection connection = null; + ResultSet resultSet = null; + try { + connection = openConnection(); + resultSet = connection.getMetaData().getTables(null, null, tableName.toUpperCase(), null); + boolean result = resultSet.next(); + return result; + } catch (SQLException e) { + throw new RuntimeException(e); + } finally { + closeQuietly(resultSet); + closeQuietly(connection); + } + } + +} diff --git a/topia-persistence/src/main/java/org/nuiton/topia/persistence/jdbc/JdbcHelper.java b/topia-persistence/src/main/java/org/nuiton/topia/persistence/jdbc/JdbcHelper.java new file mode 100644 index 0000000..a1dfa41 --- /dev/null +++ b/topia-persistence/src/main/java/org/nuiton/topia/persistence/jdbc/JdbcHelper.java @@ -0,0 +1,132 @@ +package org.nuiton.topia.persistence.jdbc; + +import org.apache.commons.logging.Log; +import org.apache.commons.logging.LogFactory; + +import java.sql.CallableStatement; +import java.sql.Connection; +import java.sql.Driver; +import java.sql.DriverManager; +import java.sql.PreparedStatement; +import java.sql.ResultSet; +import java.sql.SQLException; + +/** + * @since 3.0 + */ +public class JdbcHelper { + + private static final Log log = LogFactory.getLog(JdbcHelper.class); + + protected JdbcConfiguration jdbcConfiguration; + + public JdbcHelper(JdbcConfiguration jdbcConfiguration) { + this.jdbcConfiguration = jdbcConfiguration; + } + + public String runSelectOnString(String sql) { + Connection connection = null; + PreparedStatement preparedStatement = null; + try { + connection = openConnection(); + preparedStatement = connection.prepareStatement(sql); + ResultSet resultSet = preparedStatement.executeQuery(); + if (resultSet.next()) { + return resultSet.getString(1); + } + return null; + } catch (SQLException e) { + throw new RuntimeException(e); + } finally { + closeQuietly(preparedStatement); + closeQuietly(connection); + } + } + + public void createSchema(String schemaName) { + Connection connection = null; + CallableStatement callableStatement = null; + try { + connection = openConnection(); + callableStatement = connection.prepareCall("create schema " + schemaName); + callableStatement.execute(); + } catch (SQLException e) { + throw new RuntimeException(e); + } finally { + closeQuietly(callableStatement); + closeQuietly(connection); + } + } + + public int runUpdate(String sql) { + Connection connection = null; + PreparedStatement preparedStatement = null; + try { + connection = openConnection(); + preparedStatement = connection.prepareStatement(sql); + int result = preparedStatement.executeUpdate(); + return result; + } catch (SQLException e) { + throw new RuntimeException(e); + } finally { + closeQuietly(preparedStatement); + closeQuietly(connection); + } + } + + protected String getJdbcDriverClassName() { + return jdbcConfiguration.getJdbcDriverClassName(); + } + + protected Connection openConnection() throws SQLException { + registerDriver(); + Connection connection = DriverManager.getConnection( + jdbcConfiguration.getJdbcConnectionUrl(), + jdbcConfiguration.getJdbcConnectionUser(), + jdbcConfiguration.getJdbcConnectionPassword()); + return connection; + } + + protected void closeQuietly(AutoCloseable closeable) { + if (closeable != null) { + try { + closeable.close(); + } catch (Exception eee) { + if (log.isWarnEnabled()) { + log.warn("Unable to close: " + eee.getMessage() , eee); + } + } + } + } + + protected void registerDriver() { + Driver driver = getJdbcDriver(); + try { + DriverManager.registerDriver(driver); + } catch (SQLException e) { + throw new RuntimeException("unable to register driver " + driver, e); + } + } + + protected Driver getJdbcDriver() { + Class<? extends Driver> jdbcDriverClass = getJdbcDriverClass(); + try { + Driver driver = jdbcDriverClass.newInstance(); + return driver; + } catch (InstantiationException e) { + throw new IllegalArgumentException(jdbcDriverClass + " is not instantiable", e); + } catch (IllegalAccessException e) { + throw new IllegalArgumentException(jdbcDriverClass + " is not instantiable", e); + } + } + + protected Class<? extends Driver> getJdbcDriverClass() { + String jdbcDriverClassName = getJdbcDriverClassName(); + try { + Class<? extends Driver> jdbcDriverClass = (Class<? extends Driver>) Class.forName(jdbcDriverClassName); + return jdbcDriverClass; + } catch (ClassNotFoundException e) { + throw new IllegalArgumentException(jdbcDriverClassName + " is not available in classpath", e); + } + } +} diff --git a/topia-service-migration/src/test/java/org/nuiton/topia/migration/TopiaMigrationEngineTest.java b/topia-service-migration/src/test/java/org/nuiton/topia/migration/TopiaMigrationEngineTest.java index 8e51d9e..38286c4 100644 --- a/topia-service-migration/src/test/java/org/nuiton/topia/migration/TopiaMigrationEngineTest.java +++ b/topia-service-migration/src/test/java/org/nuiton/topia/migration/TopiaMigrationEngineTest.java @@ -27,7 +27,6 @@ package org.nuiton.topia.migration; import com.google.common.collect.ImmutableMap; import org.apache.commons.logging.Log; import org.apache.commons.logging.LogFactory; -import org.h2.Driver; import org.hibernate.HibernateException; import org.junit.Assert; import org.junit.Rule; @@ -40,11 +39,8 @@ import org.nuiton.topia.persistence.BeanTopiaConfiguration; import org.nuiton.topia.persistence.TopiaConfiguration; import org.nuiton.topia.persistence.TopiaConfigurationBuilder; import org.nuiton.topia.persistence.jdbc.JdbcConfiguration; - -import java.sql.Connection; -import java.sql.DriverManager; -import java.sql.PreparedStatement; -import java.sql.ResultSet; +import org.nuiton.topia.persistence.jdbc.JdbcH2Helper; +import org.nuiton.topia.persistence.jdbc.JdbcHelper; /** * @author Arnaud Thimel (Code Lutin) @@ -70,61 +66,15 @@ public class TopiaMigrationEngineTest { * This method is designed for H2 only. */ protected boolean isTableExist(JdbcConfiguration jdbcConfiguration, String tableName) throws Exception { - Connection connection = null; - try { - DriverManager.registerDriver(new Driver()); - connection = DriverManager.getConnection( - jdbcConfiguration.getJdbcConnectionUrl(), - jdbcConfiguration.getJdbcConnectionUser(), - jdbcConfiguration.getJdbcConnectionPassword()); - ResultSet rset = connection.getMetaData().getTables(null, null, tableName.toUpperCase(), null); - boolean result = rset.next(); - return result; - } finally { - if (connection != null && !connection.isClosed()) { - connection.close(); - } - } + return new JdbcH2Helper(jdbcConfiguration).isTableExist(tableName); } protected String runSelectOnString(JdbcConfiguration jdbcConfiguration, String sql) throws Exception { - Connection connection = null; - try { - DriverManager.registerDriver(new Driver()); - connection = DriverManager.getConnection( - jdbcConfiguration.getJdbcConnectionUrl(), - jdbcConfiguration.getJdbcConnectionUser(), - jdbcConfiguration.getJdbcConnectionPassword()); - PreparedStatement preparedStatement = connection.prepareStatement(sql); - ResultSet resultSet = preparedStatement.executeQuery(); - - if (resultSet.next()) { - return resultSet.getString(1); - } - return null; - } finally { - if (connection != null && !connection.isClosed()) { - connection.close(); - } - } + return new JdbcHelper(jdbcConfiguration).runSelectOnString(sql); } protected int runUpdate(JdbcConfiguration jdbcConfiguration, String sql) throws Exception { - Connection connection = null; - try { - DriverManager.registerDriver(new Driver()); - connection = DriverManager.getConnection( - jdbcConfiguration.getJdbcConnectionUrl(), - jdbcConfiguration.getJdbcConnectionUser(), - jdbcConfiguration.getJdbcConnectionPassword()); - PreparedStatement preparedStatement = connection.prepareStatement(sql); - int result = preparedStatement.executeUpdate(); - return result; - } finally { - if (connection != null && !connection.isClosed()) { - connection.close(); - } - } + return new JdbcHelper(jdbcConfiguration).runUpdate(sql); } protected String readVersion(JdbcConfiguration jdbcConfiguration) throws Exception { -- To stop receiving notification emails like this one, please contact nuiton.org SCM administrator <admin+scm@nuiton.org>.