TSK-152 fix problem with drop table if exists

This commit is contained in:
BerndBreier 2018-01-15 15:24:58 +01:00 committed by Holger Hagen
parent 51eba86d8f
commit 429b2327e4
1 changed files with 9 additions and 6 deletions

View File

@ -11,13 +11,13 @@ import javax.sql.DataSource;
import org.apache.ibatis.jdbc.ScriptRunner; import org.apache.ibatis.jdbc.ScriptRunner;
import org.slf4j.Logger; import org.slf4j.Logger;
import org.slf4j.LoggerFactory; import org.slf4j.LoggerFactory;
import pro.taskana.configuration.DbSchemaCreator;
/** /**
* This class cleans the complete database. Only to be used in Unittest * This class cleans the complete database. Only to be used in Unittest
*/ */
public class DBCleaner { public class DBCleaner {
private static final Logger LOGGER = LoggerFactory.getLogger(DbSchemaCreator.class);
private static final Logger LOGGER = LoggerFactory.getLogger(DBCleaner.class);
private static final String DB_CLEAR_SCRIPT = "/sql/clear-db.sql"; private static final String DB_CLEAR_SCRIPT = "/sql/clear-db.sql";
private static final String DB_DROP_TABLES_SCRIPT = "/sql/drop-tables.sql"; private static final String DB_DROP_TABLES_SCRIPT = "/sql/drop-tables.sql";
@ -26,10 +26,11 @@ public class DBCleaner {
private StringWriter errorWriter = new StringWriter(); private StringWriter errorWriter = new StringWriter();
private PrintWriter errorLogWriter = new PrintWriter(errorWriter); private PrintWriter errorLogWriter = new PrintWriter(errorWriter);
/** /**
* Clears the db. * Clears the db.
* @param dropTables if true drop tables, else clean tables *
* @param dropTables
* if true drop tables, else clean tables
* @throws SQLException * @throws SQLException
*/ */
public void clearDb(DataSource dataSource, boolean dropTables) throws SQLException { public void clearDb(DataSource dataSource, boolean dropTables) throws SQLException {
@ -37,7 +38,7 @@ public class DBCleaner {
ScriptRunner runner = new ScriptRunner(connection); ScriptRunner runner = new ScriptRunner(connection);
LOGGER.debug(connection.getMetaData().toString()); LOGGER.debug(connection.getMetaData().toString());
runner.setStopOnError(true); runner.setStopOnError(false);
runner.setLogWriter(logWriter); runner.setLogWriter(logWriter);
runner.setErrorLogWriter(errorLogWriter); runner.setErrorLogWriter(errorLogWriter);
if (dropTables) { if (dropTables) {
@ -50,7 +51,9 @@ public class DBCleaner {
LOGGER.error("caught Exception " + e); LOGGER.error("caught Exception " + e);
} }
LOGGER.debug(outWriter.toString()); LOGGER.debug(outWriter.toString());
if (!errorWriter.toString().trim().isEmpty()) { String errorMsg = errorWriter.toString().trim();
if (!errorMsg.isEmpty() && errorMsg.indexOf("SQLCODE=-204, SQLSTATE=42704") == -1) {
LOGGER.error(errorWriter.toString()); LOGGER.error(errorWriter.toString());
} }
} }