TSK-967: Move DbCleaner to taskana-data

This commit is contained in:
Benjamin Eckstein 2019-12-05 21:18:26 +01:00 committed by Mustapha Zorgati
parent ab5d16d624
commit 91ccf57849
16 changed files with 34 additions and 53 deletions

View File

@ -24,7 +24,7 @@ import pro.taskana.TimeInterval;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.configuration.TaskanaEngineConfiguration;
import pro.taskana.database.TestDataGenerator; import pro.taskana.database.TestDataGenerator;
import pro.taskana.exceptions.ClassificationNotFoundException; import pro.taskana.exceptions.ClassificationNotFoundException;
import pro.taskana.impl.configuration.DBCleaner; import pro.taskana.sampledata.DBCleaner;
import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest;
/** /**

View File

@ -11,7 +11,7 @@ import org.junit.jupiter.api.BeforeAll;
import pro.taskana.TaskanaEngine; import pro.taskana.TaskanaEngine;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.configuration.TaskanaEngineConfiguration;
import pro.taskana.database.TestDataGenerator; import pro.taskana.database.TestDataGenerator;
import pro.taskana.impl.configuration.DBCleaner; import pro.taskana.sampledata.DBCleaner;
import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest;
/** /**

View File

@ -31,7 +31,7 @@ import pro.taskana.exceptions.DomainNotFoundException;
import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.impl.TaskanaEngineImpl; import pro.taskana.impl.TaskanaEngineImpl;
import pro.taskana.impl.configuration.DBCleaner; import pro.taskana.sampledata.DBCleaner;
import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest;
/** /**

View File

@ -38,7 +38,7 @@ import pro.taskana.exceptions.InvalidArgumentException;
import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.impl.ClassificationImpl; import pro.taskana.impl.ClassificationImpl;
import pro.taskana.impl.TaskanaEngineImpl; import pro.taskana.impl.TaskanaEngineImpl;
import pro.taskana.impl.configuration.DBCleaner; import pro.taskana.sampledata.DBCleaner;
import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest;
/** /**

View File

@ -48,7 +48,7 @@ import pro.taskana.impl.TaskImpl;
import pro.taskana.impl.TaskServiceImpl; import pro.taskana.impl.TaskServiceImpl;
import pro.taskana.impl.TaskanaEngineImpl; import pro.taskana.impl.TaskanaEngineImpl;
import pro.taskana.impl.WorkbasketImpl; 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.configuration.TaskanaEngineConfigurationTest;
import pro.taskana.impl.util.IdGenerator; import pro.taskana.impl.util.IdGenerator;
import pro.taskana.security.CurrentUserContext; import pro.taskana.security.CurrentUserContext;

View File

@ -54,7 +54,7 @@ import pro.taskana.impl.TaskServiceImpl;
import pro.taskana.impl.TaskanaEngineImpl; import pro.taskana.impl.TaskanaEngineImpl;
import pro.taskana.impl.WorkbasketImpl; import pro.taskana.impl.WorkbasketImpl;
import pro.taskana.impl.WorkbasketSummaryImpl; 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.configuration.TaskanaEngineConfigurationTest;
import pro.taskana.impl.util.IdGenerator; import pro.taskana.impl.util.IdGenerator;
import pro.taskana.security.CurrentUserContext; import pro.taskana.security.CurrentUserContext;

View File

@ -37,7 +37,7 @@ import pro.taskana.exceptions.WorkbasketAlreadyExistException;
import pro.taskana.exceptions.WorkbasketNotFoundException; import pro.taskana.exceptions.WorkbasketNotFoundException;
import pro.taskana.impl.TaskanaEngineProxyForTest; import pro.taskana.impl.TaskanaEngineProxyForTest;
import pro.taskana.impl.WorkbasketImpl; 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.configuration.TaskanaEngineConfigurationTest;
import pro.taskana.impl.util.IdGenerator; import pro.taskana.impl.util.IdGenerator;
import pro.taskana.mappings.WorkbasketMapper; import pro.taskana.mappings.WorkbasketMapper;

View File

@ -31,7 +31,7 @@ import pro.taskana.exceptions.WorkbasketAlreadyExistException;
import pro.taskana.exceptions.WorkbasketNotFoundException; import pro.taskana.exceptions.WorkbasketNotFoundException;
import pro.taskana.impl.TaskanaEngineImpl; import pro.taskana.impl.TaskanaEngineImpl;
import pro.taskana.impl.WorkbasketImpl; 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.configuration.TaskanaEngineConfigurationTest;
import pro.taskana.impl.util.IdGenerator; import pro.taskana.impl.util.IdGenerator;
import pro.taskana.security.JAASRunner; import pro.taskana.security.JAASRunner;

View File

@ -1,4 +1,4 @@
package pro.taskana.impl.configuration; package pro.taskana.sampledata;
import java.io.InputStreamReader; import java.io.InputStreamReader;
import java.io.PrintWriter; import java.io.PrintWriter;
@ -17,8 +17,8 @@ import org.slf4j.LoggerFactory;
public class DBCleaner { public class DBCleaner {
private static final Logger LOGGER = LoggerFactory.getLogger(DBCleaner.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/clear-db.sql";
private static final String DB_DROP_TABLES_SCRIPT = "/sql/drop-tables.sql"; private static final String DB_DROP_TABLES_SCRIPT = "/sql/clear/drop-tables.sql";
private StringWriter outWriter = new StringWriter(); private StringWriter outWriter = new StringWriter();
private PrintWriter logWriter = new PrintWriter(outWriter); private PrintWriter logWriter = new PrintWriter(outWriter);

View File

@ -29,19 +29,18 @@ public class SampleDataGenerator {
private static final Logger LOGGER = LoggerFactory.getLogger(SampleDataGenerator.class); 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 TASK = "/sql/sample-data/task.sql";
private static final String CLEAR_HISTORY_EVENTS = SQL_SAMPLE_DATA + "/clear-history-events.sql"; private static final String WORKBASKET = "/sql/sample-data/workbasket.sql";
private static final String TASK = SQL_SAMPLE_DATA + "/task.sql"; private static final String DISTRIBUTION_TARGETS = "/sql/sample-data/distribution-targets.sql";
private static final String WORKBASKET = SQL_SAMPLE_DATA + "/workbasket.sql"; private static final String WORKBASKET_ACCESS_LIST = "/sql/sample-data/workbasket-access-list.sql";
private static final String DISTRIBUTION_TARGETS = SQL_SAMPLE_DATA + "/distribution-targets.sql"; private static final String CLASSIFICATION = "/sql/sample-data/classification.sql";
private static final String WORKBASKET_ACCESS_LIST = SQL_SAMPLE_DATA + "/workbasket-access-list.sql"; private static final String OBJECT_REFERENCE = "/sql/sample-data/object-reference.sql";
private static final String CLASSIFICATION = SQL_SAMPLE_DATA + "/classification.sql"; private static final String ATTACHMENT = "/sql/sample-data/attachment.sql";
private static final String OBJECT_REFERENCE = SQL_SAMPLE_DATA + "/object-reference.sql"; private static final String HISTORY_EVENT = "/sql/sample-data/history-event.sql";
private static final String ATTACHMENT = SQL_SAMPLE_DATA + "/attachment.sql"; private static final String CHECK_HISTORY_EVENT_EXIST = "/sql/sample-data/check-history-event-exist.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 String RELATIVE_DATE_REGEX = "RELATIVE_DATE\\((-?\\d+)\\)";
static final Pattern RELATIVE_DATE_PATTERN = Pattern.compile(RELATIVE_DATE_REGEX); 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. * sql statement which may contain the above declared custom function.
* @return sql statement with the given function resolved, if the 'sql' parameter contained any. * @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); Matcher m = RELATIVE_DATE_PATTERN.matcher(sql);
StringBuffer sb = new StringBuffer(sql.length()); StringBuffer sb = new StringBuffer(sql.length());
while (m.find()) { while (m.find()) {
long days = Long.parseLong(m.group(1)); long daysToShift = Long.parseLong(m.group(1));
String daysAsStringDate = "'" + now.plusDays(days).format(DATE_TIME_FORMATTER) + "'"; String daysAsStringDate = formatToSqlDate(now, daysToShift);
m.appendReplacement(sb, daysAsStringDate); m.appendReplacement(sb, daysAsStringDate);
} }
m.appendTail(sb); m.appendTail(sb);
return sb.toString(); 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) { private StringReader selectSchemaScript(String dbProductName, String schemaName) {
return new StringReader(isPostgreSQL(dbProductName) return new StringReader(isPostgreSQL(dbProductName)
? "SET search_path TO " + schemaName + ";" ? "SET search_path TO " + schemaName + ";"
@ -153,7 +156,7 @@ public class SampleDataGenerator {
} }
private static String parseAndReplace(LocalDateTime now, String script) { private static String parseAndReplace(LocalDateTime now, String script) {
return replaceRelativeTimeFunction(now, return replaceDatePlaceholder(now,
getScriptBufferedStream(script).lines().collect(Collectors.joining(System.lineSeparator()))); getScriptBufferedStream(script).lines().collect(Collectors.joining(System.lineSeparator())));
} }

View File

@ -7,5 +7,6 @@ DROP TABLE DISTRIBUTION_TARGETS;
DROP TABLE CLASSIFICATION; DROP TABLE CLASSIFICATION;
DROP TABLE OBJECT_REFERENCE; DROP TABLE OBJECT_REFERENCE;
DROP TABLE SCHEDULED_JOB; DROP TABLE SCHEDULED_JOB;
DROP TABLE HISTORY_EVENTS IF EXISTS;
DROP SEQUENCE SCHEDULED_JOB_SEQ; DROP SEQUENCE SCHEDULED_JOB_SEQ;
COMMIT; COMMIT;

View File

@ -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;

View File

@ -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;

View File

@ -35,7 +35,7 @@ class SampleDataGeneratorTest {
void replaceRelativeTimeFunctionSameDate() { void replaceRelativeTimeFunctionSameDate() {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
String dateFormatted = now.format(SampleDataGenerator.DATE_TIME_FORMATTER); String dateFormatted = now.format(SampleDataGenerator.DATE_TIME_FORMATTER);
String sqlStringReplaced = SampleDataGenerator.replaceRelativeTimeFunction(now, String sqlStringReplaced = SampleDataGenerator.replaceDatePlaceholder(now,
"... RELATIVE_DATE(0) ..."); "... RELATIVE_DATE(0) ...");
assertThat(sqlStringReplaced, CoreMatchers.containsString(dateFormatted)); assertThat(sqlStringReplaced, CoreMatchers.containsString(dateFormatted));
} }
@ -67,7 +67,7 @@ class SampleDataGeneratorTest {
void replaceRelativeTimeFunctionPosDate() { void replaceRelativeTimeFunctionPosDate() {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
String dateFormatted = now.plusDays(5).format(SampleDataGenerator.DATE_TIME_FORMATTER); String dateFormatted = now.plusDays(5).format(SampleDataGenerator.DATE_TIME_FORMATTER);
String sqlStringReplaced = SampleDataGenerator.replaceRelativeTimeFunction(now, String sqlStringReplaced = SampleDataGenerator.replaceDatePlaceholder(now,
"... RELATIVE_DATE(5) ..."); "... RELATIVE_DATE(5) ...");
assertThat(sqlStringReplaced, CoreMatchers.containsString(dateFormatted)); assertThat(sqlStringReplaced, CoreMatchers.containsString(dateFormatted));
} }
@ -76,7 +76,7 @@ class SampleDataGeneratorTest {
void replaceRelativeTimeFunctionNegDate() { void replaceRelativeTimeFunctionNegDate() {
LocalDateTime now = LocalDateTime.now(); LocalDateTime now = LocalDateTime.now();
String dateFormatted = now.plusDays(-10).format(SampleDataGenerator.DATE_TIME_FORMATTER); String dateFormatted = now.plusDays(-10).format(SampleDataGenerator.DATE_TIME_FORMATTER);
String sqlStringReplaced = SampleDataGenerator.replaceRelativeTimeFunction(now, String sqlStringReplaced = SampleDataGenerator.replaceDatePlaceholder(now,
"... RELATIVE_DATE(-10) ..."); "... RELATIVE_DATE(-10) ...");
assertThat(sqlStringReplaced, CoreMatchers.containsString(dateFormatted)); assertThat(sqlStringReplaced, CoreMatchers.containsString(dateFormatted));
} }