From 91ccf57849d6f2f6c6ec0fa6386f948a42f1163b Mon Sep 17 00:00:00 2001 From: Benjamin Eckstein <13351939+benjamineckstein@users.noreply.github.com> Date: Thu, 5 Dec 2019 21:18:26 +0100 Subject: [PATCH] TSK-967: Move DbCleaner to taskana-data --- .../test/java/acceptance/AbstractAccTest.java | 2 +- .../report/AbstractReportAccTest.java | 2 +- ...ificationServiceImplIntAutoCommitTest.java | 2 +- ...ssificationServiceImplIntExplicitTest.java | 2 +- .../TaskServiceImplIntAutocommitTest.java | 2 +- .../TaskServiceImplIntExplicitTest.java | 2 +- ...orkbasketServiceImplIntAutocommitTest.java | 2 +- .../WorkbasketServiceImplIntExplicitTest.java | 2 +- .../pro/taskana/sampledata}/DBCleaner.java | 6 ++-- .../sampledata/SampleDataGenerator.java | 35 ++++++++++--------- .../main/resources/sql/clear}/clear-db.sql | 0 .../clear-history-events.sql | 0 .../main/resources/sql/clear}/drop-tables.sql | 1 + .../resources/sql/sample-data/clear-db.sql | 11 ------ .../resources/sql/sample-data/drop-tables.sql | 12 ------- .../sampledata/SampleDataGeneratorTest.java | 6 ++-- 16 files changed, 34 insertions(+), 53 deletions(-) rename lib/{taskana-core/src/test/java/pro/taskana/impl/configuration => taskana-data/src/main/java/pro/taskana/sampledata}/DBCleaner.java (90%) rename lib/{taskana-core/src/test/resources/sql => taskana-data/src/main/resources/sql/clear}/clear-db.sql (100%) rename lib/taskana-data/src/main/resources/sql/{sample-data => clear}/clear-history-events.sql (100%) rename lib/{taskana-core/src/test/resources/sql => taskana-data/src/main/resources/sql/clear}/drop-tables.sql (88%) delete mode 100644 lib/taskana-data/src/main/resources/sql/sample-data/clear-db.sql delete mode 100644 lib/taskana-data/src/main/resources/sql/sample-data/drop-tables.sql diff --git a/lib/taskana-core/src/test/java/acceptance/AbstractAccTest.java b/lib/taskana-core/src/test/java/acceptance/AbstractAccTest.java index bb967a33f..9f38cb896 100644 --- a/lib/taskana-core/src/test/java/acceptance/AbstractAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/AbstractAccTest.java @@ -24,7 +24,7 @@ import pro.taskana.TimeInterval; import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.database.TestDataGenerator; import pro.taskana.exceptions.ClassificationNotFoundException; -import pro.taskana.impl.configuration.DBCleaner; +import pro.taskana.sampledata.DBCleaner; import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; /** diff --git a/lib/taskana-core/src/test/java/acceptance/report/AbstractReportAccTest.java b/lib/taskana-core/src/test/java/acceptance/report/AbstractReportAccTest.java index 4e933a0b7..1d670d167 100644 --- a/lib/taskana-core/src/test/java/acceptance/report/AbstractReportAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/report/AbstractReportAccTest.java @@ -11,7 +11,7 @@ import org.junit.jupiter.api.BeforeAll; import pro.taskana.TaskanaEngine; import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.database.TestDataGenerator; -import pro.taskana.impl.configuration.DBCleaner; +import pro.taskana.sampledata.DBCleaner; import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; /** diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntAutoCommitTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntAutoCommitTest.java index c133e06de..e8d130cf1 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntAutoCommitTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntAutoCommitTest.java @@ -31,7 +31,7 @@ import pro.taskana.exceptions.DomainNotFoundException; import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.impl.TaskanaEngineImpl; -import pro.taskana.impl.configuration.DBCleaner; +import pro.taskana.sampledata.DBCleaner; import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; /** diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntExplicitTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntExplicitTest.java index 711186e1c..3f304c0aa 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntExplicitTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntExplicitTest.java @@ -38,7 +38,7 @@ import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.impl.ClassificationImpl; import pro.taskana.impl.TaskanaEngineImpl; -import pro.taskana.impl.configuration.DBCleaner; +import pro.taskana.sampledata.DBCleaner; import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; /** diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/TaskServiceImplIntAutocommitTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/TaskServiceImplIntAutocommitTest.java index fd23f7e21..63b495aec 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/TaskServiceImplIntAutocommitTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/TaskServiceImplIntAutocommitTest.java @@ -48,7 +48,7 @@ import pro.taskana.impl.TaskImpl; import pro.taskana.impl.TaskServiceImpl; import pro.taskana.impl.TaskanaEngineImpl; import pro.taskana.impl.WorkbasketImpl; -import pro.taskana.impl.configuration.DBCleaner; +import pro.taskana.sampledata.DBCleaner; import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; import pro.taskana.impl.util.IdGenerator; import pro.taskana.security.CurrentUserContext; diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/TaskServiceImplIntExplicitTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/TaskServiceImplIntExplicitTest.java index 343a1e6d6..1c4c78e83 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/TaskServiceImplIntExplicitTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/TaskServiceImplIntExplicitTest.java @@ -54,7 +54,7 @@ import pro.taskana.impl.TaskServiceImpl; import pro.taskana.impl.TaskanaEngineImpl; import pro.taskana.impl.WorkbasketImpl; import pro.taskana.impl.WorkbasketSummaryImpl; -import pro.taskana.impl.configuration.DBCleaner; +import pro.taskana.sampledata.DBCleaner; import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; import pro.taskana.impl.util.IdGenerator; import pro.taskana.security.CurrentUserContext; diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/WorkbasketServiceImplIntAutocommitTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/WorkbasketServiceImplIntAutocommitTest.java index a591bdd10..211516f5f 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/WorkbasketServiceImplIntAutocommitTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/WorkbasketServiceImplIntAutocommitTest.java @@ -37,7 +37,7 @@ import pro.taskana.exceptions.WorkbasketAlreadyExistException; import pro.taskana.exceptions.WorkbasketNotFoundException; import pro.taskana.impl.TaskanaEngineProxyForTest; import pro.taskana.impl.WorkbasketImpl; -import pro.taskana.impl.configuration.DBCleaner; +import pro.taskana.sampledata.DBCleaner; import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; import pro.taskana.impl.util.IdGenerator; import pro.taskana.mappings.WorkbasketMapper; diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/WorkbasketServiceImplIntExplicitTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/WorkbasketServiceImplIntExplicitTest.java index 7450fc5f8..23c381608 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/WorkbasketServiceImplIntExplicitTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/WorkbasketServiceImplIntExplicitTest.java @@ -31,7 +31,7 @@ import pro.taskana.exceptions.WorkbasketAlreadyExistException; import pro.taskana.exceptions.WorkbasketNotFoundException; import pro.taskana.impl.TaskanaEngineImpl; import pro.taskana.impl.WorkbasketImpl; -import pro.taskana.impl.configuration.DBCleaner; +import pro.taskana.sampledata.DBCleaner; import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; import pro.taskana.impl.util.IdGenerator; import pro.taskana.security.JAASRunner; diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/configuration/DBCleaner.java b/lib/taskana-data/src/main/java/pro/taskana/sampledata/DBCleaner.java similarity index 90% rename from lib/taskana-core/src/test/java/pro/taskana/impl/configuration/DBCleaner.java rename to lib/taskana-data/src/main/java/pro/taskana/sampledata/DBCleaner.java index deec515f6..a6ded8753 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/configuration/DBCleaner.java +++ b/lib/taskana-data/src/main/java/pro/taskana/sampledata/DBCleaner.java @@ -1,4 +1,4 @@ -package pro.taskana.impl.configuration; +package pro.taskana.sampledata; import java.io.InputStreamReader; import java.io.PrintWriter; @@ -17,8 +17,8 @@ import org.slf4j.LoggerFactory; public class DBCleaner { 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_DROP_TABLES_SCRIPT = "/sql/drop-tables.sql"; + private static final String DB_CLEAR_SCRIPT = "/sql/clear/clear-db.sql"; + private static final String DB_DROP_TABLES_SCRIPT = "/sql/clear/drop-tables.sql"; private StringWriter outWriter = new StringWriter(); private PrintWriter logWriter = new PrintWriter(outWriter); diff --git a/lib/taskana-data/src/main/java/pro/taskana/sampledata/SampleDataGenerator.java b/lib/taskana-data/src/main/java/pro/taskana/sampledata/SampleDataGenerator.java index 44b433376..3bd0d44b7 100644 --- a/lib/taskana-data/src/main/java/pro/taskana/sampledata/SampleDataGenerator.java +++ b/lib/taskana-data/src/main/java/pro/taskana/sampledata/SampleDataGenerator.java @@ -29,19 +29,18 @@ public class SampleDataGenerator { private static final Logger LOGGER = LoggerFactory.getLogger(SampleDataGenerator.class); - private static final String SQL_SAMPLE_DATA = "/sql/sample-data"; + private static final String CLEAR = "/sql/clear/clear-db.sql"; + private static final String CLEAR_HISTORY_EVENTS = "/sql/clear/clear-history-events.sql"; - private static final String CLEAR = SQL_SAMPLE_DATA + "/clear-db.sql"; - private static final String CLEAR_HISTORY_EVENTS = SQL_SAMPLE_DATA + "/clear-history-events.sql"; - private static final String TASK = SQL_SAMPLE_DATA + "/task.sql"; - private static final String WORKBASKET = SQL_SAMPLE_DATA + "/workbasket.sql"; - private static final String DISTRIBUTION_TARGETS = SQL_SAMPLE_DATA + "/distribution-targets.sql"; - private static final String WORKBASKET_ACCESS_LIST = SQL_SAMPLE_DATA + "/workbasket-access-list.sql"; - private static final String CLASSIFICATION = SQL_SAMPLE_DATA + "/classification.sql"; - private static final String OBJECT_REFERENCE = SQL_SAMPLE_DATA + "/object-reference.sql"; - private static final String ATTACHMENT = SQL_SAMPLE_DATA + "/attachment.sql"; - private static final String HISTORY_EVENT = SQL_SAMPLE_DATA + "/history-event.sql"; - private static final String CHECK_HISTORY_EVENT_EXIST = SQL_SAMPLE_DATA + "/check-history-event-exist.sql"; + private static final String TASK = "/sql/sample-data/task.sql"; + private static final String WORKBASKET = "/sql/sample-data/workbasket.sql"; + private static final String DISTRIBUTION_TARGETS = "/sql/sample-data/distribution-targets.sql"; + private static final String WORKBASKET_ACCESS_LIST = "/sql/sample-data/workbasket-access-list.sql"; + private static final String CLASSIFICATION = "/sql/sample-data/classification.sql"; + private static final String OBJECT_REFERENCE = "/sql/sample-data/object-reference.sql"; + private static final String ATTACHMENT = "/sql/sample-data/attachment.sql"; + private static final String HISTORY_EVENT = "/sql/sample-data/history-event.sql"; + private static final String CHECK_HISTORY_EVENT_EXIST = "/sql/sample-data/check-history-event-exist.sql"; static final String RELATIVE_DATE_REGEX = "RELATIVE_DATE\\((-?\\d+)\\)"; static final Pattern RELATIVE_DATE_PATTERN = Pattern.compile(RELATIVE_DATE_REGEX); @@ -134,18 +133,22 @@ public class SampleDataGenerator { * sql statement which may contain the above declared custom function. * @return sql statement with the given function resolved, if the 'sql' parameter contained any. */ - static String replaceRelativeTimeFunction(LocalDateTime now, String sql) { + static String replaceDatePlaceholder(LocalDateTime now, String sql) { Matcher m = RELATIVE_DATE_PATTERN.matcher(sql); StringBuffer sb = new StringBuffer(sql.length()); while (m.find()) { - long days = Long.parseLong(m.group(1)); - String daysAsStringDate = "'" + now.plusDays(days).format(DATE_TIME_FORMATTER) + "'"; + long daysToShift = Long.parseLong(m.group(1)); + String daysAsStringDate = formatToSqlDate(now, daysToShift); m.appendReplacement(sb, daysAsStringDate); } m.appendTail(sb); return sb.toString(); } + private static String formatToSqlDate(LocalDateTime now, long days) { + return "'" + now.plusDays(days).format(DATE_TIME_FORMATTER) + "'"; + } + private StringReader selectSchemaScript(String dbProductName, String schemaName) { return new StringReader(isPostgreSQL(dbProductName) ? "SET search_path TO " + schemaName + ";" @@ -153,7 +156,7 @@ public class SampleDataGenerator { } private static String parseAndReplace(LocalDateTime now, String script) { - return replaceRelativeTimeFunction(now, + return replaceDatePlaceholder(now, getScriptBufferedStream(script).lines().collect(Collectors.joining(System.lineSeparator()))); } diff --git a/lib/taskana-core/src/test/resources/sql/clear-db.sql b/lib/taskana-data/src/main/resources/sql/clear/clear-db.sql similarity index 100% rename from lib/taskana-core/src/test/resources/sql/clear-db.sql rename to lib/taskana-data/src/main/resources/sql/clear/clear-db.sql diff --git a/lib/taskana-data/src/main/resources/sql/sample-data/clear-history-events.sql b/lib/taskana-data/src/main/resources/sql/clear/clear-history-events.sql similarity index 100% rename from lib/taskana-data/src/main/resources/sql/sample-data/clear-history-events.sql rename to lib/taskana-data/src/main/resources/sql/clear/clear-history-events.sql diff --git a/lib/taskana-core/src/test/resources/sql/drop-tables.sql b/lib/taskana-data/src/main/resources/sql/clear/drop-tables.sql similarity index 88% rename from lib/taskana-core/src/test/resources/sql/drop-tables.sql rename to lib/taskana-data/src/main/resources/sql/clear/drop-tables.sql index f72521dab..a52fdd75e 100644 --- a/lib/taskana-core/src/test/resources/sql/drop-tables.sql +++ b/lib/taskana-data/src/main/resources/sql/clear/drop-tables.sql @@ -7,5 +7,6 @@ DROP TABLE DISTRIBUTION_TARGETS; DROP TABLE CLASSIFICATION; DROP TABLE OBJECT_REFERENCE; DROP TABLE SCHEDULED_JOB; +DROP TABLE HISTORY_EVENTS IF EXISTS; DROP SEQUENCE SCHEDULED_JOB_SEQ; COMMIT; diff --git a/lib/taskana-data/src/main/resources/sql/sample-data/clear-db.sql b/lib/taskana-data/src/main/resources/sql/sample-data/clear-db.sql deleted file mode 100644 index beab7c25a..000000000 --- a/lib/taskana-data/src/main/resources/sql/sample-data/clear-db.sql +++ /dev/null @@ -1,11 +0,0 @@ --- the order is important! -DELETE FROM ATTACHMENT; -DELETE FROM TASK; -DELETE FROM WORKBASKET_ACCESS_LIST; -DELETE FROM WORKBASKET; -DELETE FROM DISTRIBUTION_TARGETS; -DELETE FROM CLASSIFICATION; -DELETE FROM OBJECT_REFERENCE; --- do not clean JOB table --- DELETE FROM SCHEDULED_JOB; -COMMIT; diff --git a/lib/taskana-data/src/main/resources/sql/sample-data/drop-tables.sql b/lib/taskana-data/src/main/resources/sql/sample-data/drop-tables.sql deleted file mode 100644 index d7aeafa91..000000000 --- a/lib/taskana-data/src/main/resources/sql/sample-data/drop-tables.sql +++ /dev/null @@ -1,12 +0,0 @@ -DROP TABLE TASKANA_SCHEMA_VERSION; -DROP TABLE ATTACHMENT; -DROP TABLE TASK; -DROP TABLE WORKBASKET_ACCESS_LIST; -DROP TABLE WORKBASKET; -DROP TABLE DISTRIBUTION_TARGETS; -DROP TABLE CLASSIFICATION; -DROP TABLE OBJECT_REFERENCE; -DROP TABLE SCHEDULED_JOB; -DROP TABLE HISTORY_EVENTS; -DROP SEQUENCE SCHEDULED_JOB_SEQ; -COMMIT; diff --git a/lib/taskana-data/src/test/java/pro/taskana/sampledata/SampleDataGeneratorTest.java b/lib/taskana-data/src/test/java/pro/taskana/sampledata/SampleDataGeneratorTest.java index 99fd61461..9c89a619d 100644 --- a/lib/taskana-data/src/test/java/pro/taskana/sampledata/SampleDataGeneratorTest.java +++ b/lib/taskana-data/src/test/java/pro/taskana/sampledata/SampleDataGeneratorTest.java @@ -35,7 +35,7 @@ class SampleDataGeneratorTest { void replaceRelativeTimeFunctionSameDate() { LocalDateTime now = LocalDateTime.now(); String dateFormatted = now.format(SampleDataGenerator.DATE_TIME_FORMATTER); - String sqlStringReplaced = SampleDataGenerator.replaceRelativeTimeFunction(now, + String sqlStringReplaced = SampleDataGenerator.replaceDatePlaceholder(now, "... RELATIVE_DATE(0) ..."); assertThat(sqlStringReplaced, CoreMatchers.containsString(dateFormatted)); } @@ -67,7 +67,7 @@ class SampleDataGeneratorTest { void replaceRelativeTimeFunctionPosDate() { LocalDateTime now = LocalDateTime.now(); String dateFormatted = now.plusDays(5).format(SampleDataGenerator.DATE_TIME_FORMATTER); - String sqlStringReplaced = SampleDataGenerator.replaceRelativeTimeFunction(now, + String sqlStringReplaced = SampleDataGenerator.replaceDatePlaceholder(now, "... RELATIVE_DATE(5) ..."); assertThat(sqlStringReplaced, CoreMatchers.containsString(dateFormatted)); } @@ -76,7 +76,7 @@ class SampleDataGeneratorTest { void replaceRelativeTimeFunctionNegDate() { LocalDateTime now = LocalDateTime.now(); String dateFormatted = now.plusDays(-10).format(SampleDataGenerator.DATE_TIME_FORMATTER); - String sqlStringReplaced = SampleDataGenerator.replaceRelativeTimeFunction(now, + String sqlStringReplaced = SampleDataGenerator.replaceDatePlaceholder(now, "... RELATIVE_DATE(-10) ..."); assertThat(sqlStringReplaced, CoreMatchers.containsString(dateFormatted)); }