TSK-967: Move DbCleaner to taskana-data
This commit is contained in:
parent
ab5d16d624
commit
91ccf57849
|
@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
|
|
|
@ -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);
|
|
@ -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())));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -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;
|
|
@ -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;
|
|
|
@ -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;
|
|
|
@ -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));
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue