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.database.TestDataGenerator;
import pro.taskana.exceptions.ClassificationNotFoundException;
import pro.taskana.impl.configuration.DBCleaner;
import pro.taskana.sampledata.DBCleaner;
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.configuration.TaskanaEngineConfiguration;
import pro.taskana.database.TestDataGenerator;
import pro.taskana.impl.configuration.DBCleaner;
import pro.taskana.sampledata.DBCleaner;
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.NotAuthorizedException;
import pro.taskana.impl.TaskanaEngineImpl;
import pro.taskana.impl.configuration.DBCleaner;
import pro.taskana.sampledata.DBCleaner;
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.impl.ClassificationImpl;
import pro.taskana.impl.TaskanaEngineImpl;
import pro.taskana.impl.configuration.DBCleaner;
import pro.taskana.sampledata.DBCleaner;
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.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;

View File

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

View File

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

View File

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

View File

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

View File

@ -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())));
}

View File

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

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() {
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));
}