From 814a8a6b6315244273ed8daf8396d837c381067f Mon Sep 17 00:00:00 2001 From: Joerg Heffner <56156750+gitgoodjhe@users.noreply.github.com> Date: Tue, 11 Aug 2020 15:47:26 +0200 Subject: [PATCH] TSK-1335: Added create for WorkbasketHistoryEvents in historyLogger & review findings --- history/pom.xml | 4 +- history/taskana-loghistory-provider/pom.xml | 4 +- .../impl/LogfileHistoryServiceImpl.java | 17 ++- .../impl/LogfileHistoryServiceImplTest.java | 40 +++++-- .../taskana-simplehistory-provider/pom.xml | 4 +- .../impl/WorkbasketHistoryQueryImpl.java | 44 ++++---- .../WorkbasketHistoryEventMapper.java | 12 +-- .../workbasket/WorkbasketHistoryQuery.java | 8 +- .../WorkbasketHistoryQueryColumnName.java | 4 +- .../WorkbasketHistoryQueryMapper.java | 30 +++--- .../test/java/acceptance/AbstractAccTest.java | 26 ++++- ...eHistoryEventOnTaskCancelClaimAccTest.java | 2 +- ...HistoryEventOnTaskCancellationAccTest.java | 4 +- .../CreateHistoryEventOnTaskClaimAccTest.java | 2 +- ...teHistoryEventOnTaskCompletionAccTest.java | 2 +- ...eateHistoryEventOnTaskCreationAccTest.java | 2 +- ...eHistoryEventOnTaskTerminationAccTest.java | 4 +- ...eateHistoryEventOnTaskTransferAccTest.java | 2 +- ...CreateHistoryEventOnTaskUpdateAccTest.java | 2 +- .../task/GetTaskHistoryEventAccTest.java | 3 +- ...OnWorkbasketAccessItemCreationAccTest.java | 8 +- ...OnWorkbasketAccessItemDeletionAccTest.java | 7 +- ...nWorkbasketAccessItemsDeletionAccTest.java | 9 +- ...ventOnWorkbasketAccessItemsSetAccTest.java | 8 +- ...storyEventOnWorkbasketCreationAccTest.java | 8 +- ...storyEventOnWorkbasketDeletionAccTest.java | 8 +- ...kbasketDistributionTargetAddedAccTest.java | 8 +- ...asketDistributionTargetRemovedAccTest.java | 8 +- ...rkbasketDistributionTargetsSetAccTest.java | 11 +- ...tOnWorkbasketMarkedForDeletionAccTest.java | 9 +- ...HistoryEventOnWorkbasketUpdateAccTest.java | 11 +- .../query/QueryTaskHistoryAccTest.java | 14 ++- .../query/QueryWorkbasketHistoryAccTest.java | 16 +-- .../impl/SimpleHistoryServiceImplTest.java | 8 +- .../impl/WorkbasketHistoryQueryImplTest.java | 6 +- .../pom.xml | 4 +- .../taskana-simplehistory-rest-spring/pom.xml | 4 +- .../rest/sampledata/SampleDataGenerator.java | 4 +- .../sql.sample-data/history-event.sql | 47 -------- .../sql.sample-data/task-history-event.sql | 47 ++++++++ .../api/events/task/TaskCancelledEvent.java | 2 +- .../events/task/TaskClaimCancelledEvent.java | 2 +- .../api/events/task/TaskClaimedEvent.java | 2 +- .../api/events/task/TaskCompletedEvent.java | 4 +- .../api/events/task/TaskCreatedEvent.java | 2 +- .../api/events/task/TaskHistoryEvent.java | 101 +++++++----------- .../api/events/task/TaskHistoryEventType.java | 16 +-- .../api/events/task/TaskTerminatedEvent.java | 2 +- .../api/events/task/TaskTransferredEvent.java | 2 +- .../api/events/task/TaskUpdatedEvent.java | 2 +- .../WorkbasketAccessItemCreatedEvent.java | 2 +- .../WorkbasketAccessItemDeletedEvent.java | 2 +- ...sketAccessItemDeletedForAccessIdEvent.java | 2 +- .../WorkbasketAccessItemUpdatedEvent.java | 2 +- .../WorkbasketAccessItemsUpdatedEvent.java | 2 +- .../workbasket/WorkbasketCreatedEvent.java | 2 +- .../workbasket/WorkbasketDeletedEvent.java | 2 +- ...orkbasketDistributionTargetAddedEvent.java | 2 +- ...kbasketDistributionTargetRemovedEvent.java | 2 +- ...basketDistributionTargetsUpdatedEvent.java | 2 +- .../workbasket/WorkbasketHistoryEvent.java | 66 +++++++++--- .../WorkbasketHistoryEventType.java | 24 ++--- .../WorkbasketMarkedForDeletionEvent.java | 2 +- .../workbasket/WorkbasketUpdatedEvent.java | 2 +- .../resources/sql/db2/taskana-schema-db2.sql | 22 ++-- ...skana_schema_update_3.0.0_to_4.0.0_db2.sql | 23 ++++ .../resources/sql/h2/taskana-schema-h2.sql | 22 ++-- ...askana_schema_update_3.0.0_to_4.0.0_h2.sql | 23 ++++ .../sql/postgres/taskana-schema-postgres.sql | 24 ++--- ..._schema_update_3.0.0_to_4.0.0_postgres.sql | 25 ++++- .../src/test/java/pro/taskana/PojoTest.java | 5 +- .../sampledata/SampleDataProvider.java | 6 +- .../sql/sample-data/history-event.sql | 92 ++++++++-------- .../resources/sql/test-data/history-event.sql | 33 ------ .../sql/test-data/task-history-event.sql | 17 +++ .../test-data/workbasket-history-event.sql | 13 +++ 76 files changed, 613 insertions(+), 402 deletions(-) delete mode 100644 history/taskana-simplehistory-rest-spring/src/main/resources/sql.sample-data/history-event.sql create mode 100644 history/taskana-simplehistory-rest-spring/src/main/resources/sql.sample-data/task-history-event.sql delete mode 100644 lib/taskana-data/src/main/resources/sql/test-data/history-event.sql create mode 100644 lib/taskana-data/src/main/resources/sql/test-data/task-history-event.sql create mode 100644 lib/taskana-data/src/main/resources/sql/test-data/workbasket-history-event.sql diff --git a/history/pom.xml b/history/pom.xml index 9780f3d62..e4b71c0d7 100644 --- a/history/pom.xml +++ b/history/pom.xml @@ -1,8 +1,8 @@ 4.0.0 - pro.taskana.history - taskana-history-parent + pro.taskana.simplehistory + taskana-simplehistory-parent pom ${project.groupId}:${project.artifactId} diff --git a/history/taskana-loghistory-provider/pom.xml b/history/taskana-loghistory-provider/pom.xml index d9afac40c..17cb7e8de 100644 --- a/history/taskana-loghistory-provider/pom.xml +++ b/history/taskana-loghistory-provider/pom.xml @@ -4,8 +4,8 @@ xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd"> - pro.taskana.history - taskana-history-parent + pro.taskana.simplehistory + taskana-simplehistory-parent 3.2.1-SNAPSHOT ../pom.xml diff --git a/history/taskana-loghistory-provider/src/main/java/pro/taskana/loghistory/impl/LogfileHistoryServiceImpl.java b/history/taskana-loghistory-provider/src/main/java/pro/taskana/loghistory/impl/LogfileHistoryServiceImpl.java index a1a68611e..edb0aa29b 100644 --- a/history/taskana-loghistory-provider/src/main/java/pro/taskana/loghistory/impl/LogfileHistoryServiceImpl.java +++ b/history/taskana-loghistory-provider/src/main/java/pro/taskana/loghistory/impl/LogfileHistoryServiceImpl.java @@ -18,7 +18,8 @@ import pro.taskana.TaskanaEngineConfiguration; import pro.taskana.common.api.TaskanaEngine; import pro.taskana.common.api.exceptions.SystemException; import pro.taskana.spi.history.api.TaskanaHistory; -import pro.taskana.spi.history.api.events.TaskanaHistoryEvent; +import pro.taskana.spi.history.api.events.task.TaskHistoryEvent; +import pro.taskana.spi.history.api.events.workbasket.WorkbasketHistoryEvent; public class LogfileHistoryServiceImpl implements TaskanaHistory { @@ -49,7 +50,19 @@ public class LogfileHistoryServiceImpl implements TaskanaHistory { } @Override - public void create(TaskanaHistoryEvent event) { + public void create(TaskHistoryEvent event) { + + try { + if (historyLogger.isInfoEnabled()) { + historyLogger.info(objectMapper.writeValueAsString(event)); + } + } catch (JsonProcessingException e) { + throw new SystemException("Caught exception while serializing history event to JSON ", e); + } + } + + @Override + public void create(WorkbasketHistoryEvent event) { try { if (historyLogger.isInfoEnabled()) { diff --git a/history/taskana-loghistory-provider/src/test/java/pro/taskana/loghistory/impl/LogfileHistoryServiceImplTest.java b/history/taskana-loghistory-provider/src/test/java/pro/taskana/loghistory/impl/LogfileHistoryServiceImplTest.java index 4a15ac84c..b5c22f03e 100644 --- a/history/taskana-loghistory-provider/src/test/java/pro/taskana/loghistory/impl/LogfileHistoryServiceImplTest.java +++ b/history/taskana-loghistory-provider/src/test/java/pro/taskana/loghistory/impl/LogfileHistoryServiceImplTest.java @@ -5,7 +5,7 @@ import static org.assertj.core.api.Assertions.assertThat; import com.fasterxml.jackson.databind.ObjectMapper; import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule; import java.time.Instant; -import org.junit.jupiter.api.AfterAll; +import org.junit.jupiter.api.AfterEach; import org.junit.jupiter.api.BeforeAll; import org.junit.jupiter.api.Test; import org.mockito.Mock; @@ -13,7 +13,8 @@ import uk.org.lidalia.slf4jtest.TestLogger; import uk.org.lidalia.slf4jtest.TestLoggerFactory; import pro.taskana.common.api.TaskanaEngine; -import pro.taskana.spi.history.api.events.TaskanaHistoryEvent; +import pro.taskana.spi.history.api.events.task.TaskHistoryEvent; +import pro.taskana.spi.history.api.events.workbasket.WorkbasketHistoryEvent; class LogfileHistoryServiceImplTest { @@ -22,8 +23,8 @@ class LogfileHistoryServiceImplTest { TestLogger logger = TestLoggerFactory.getTestLogger("AUDIT"); @Mock TaskanaEngine taskanaEngine; - @AfterAll - public static void clearLoggers() { + @AfterEach + public void clearLoggers() { TestLoggerFactory.clear(); } @@ -33,10 +34,10 @@ class LogfileHistoryServiceImplTest { } @Test - void should_LogEventAsJson_When_CreateIsCalled() throws Exception { + void should_LogTaskEventAsJson_When_CreateIsCalled() throws Exception { logfileHistoryServiceImpl.initialize(taskanaEngine); - TaskanaHistoryEvent eventToBeLogged = new TaskanaHistoryEvent(); + TaskHistoryEvent eventToBeLogged = new TaskHistoryEvent(); eventToBeLogged.setId("someId"); eventToBeLogged.setUserId("someUser"); eventToBeLogged.setEventType("TASK_CREATED"); @@ -54,8 +55,31 @@ class LogfileHistoryServiceImplTest { String logMessage = logger.getLoggingEvents().asList().get(0).getMessage(); - TaskanaHistoryEvent deserializedEventFromLogMessage = - objectMapper.readValue(logMessage, TaskanaHistoryEvent.class); + TaskHistoryEvent deserializedEventFromLogMessage = + objectMapper.readValue(logMessage, TaskHistoryEvent.class); + + assertThat(eventToBeLogged).isEqualTo(deserializedEventFromLogMessage); + } + + @Test + void should_LogWorkbasketEventAsJson_When_CreateIsCalled() throws Exception { + + logfileHistoryServiceImpl.initialize(taskanaEngine); + WorkbasketHistoryEvent eventToBeLogged = new WorkbasketHistoryEvent(); + eventToBeLogged.setId("someId"); + eventToBeLogged.setUserId("someUser"); + eventToBeLogged.setEventType("TASK_CREATED"); + eventToBeLogged.setDomain("DOMAIN_A"); + eventToBeLogged.setCreated(Instant.now()); + eventToBeLogged.setKey("someWorkbasketKey"); + eventToBeLogged.setDetails("someDetails"); + + logfileHistoryServiceImpl.create(eventToBeLogged); + + String logMessage = logger.getLoggingEvents().asList().get(0).getMessage(); + + WorkbasketHistoryEvent deserializedEventFromLogMessage = + objectMapper.readValue(logMessage, WorkbasketHistoryEvent.class); assertThat(eventToBeLogged).isEqualTo(deserializedEventFromLogMessage); } diff --git a/history/taskana-simplehistory-provider/pom.xml b/history/taskana-simplehistory-provider/pom.xml index 25d3bfa3a..676ef1e3b 100644 --- a/history/taskana-simplehistory-provider/pom.xml +++ b/history/taskana-simplehistory-provider/pom.xml @@ -9,8 +9,8 @@ The taskana history events plugin to include in your project. - pro.taskana.history - taskana-history-parent + pro.taskana.simplehistory + taskana-simplehistory-parent 3.2.1-SNAPSHOT ../pom.xml diff --git a/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/WorkbasketHistoryQueryImpl.java b/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/WorkbasketHistoryQueryImpl.java index 27e70070a..2e3bc5fa7 100644 --- a/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/WorkbasketHistoryQueryImpl.java +++ b/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/WorkbasketHistoryQueryImpl.java @@ -40,8 +40,8 @@ public class WorkbasketHistoryQueryImpl implements WorkbasketHistoryQuery { private TimeInterval[] createdIn; private String[] userIdIn; private String[] domainIn; - private String[] workbasketKeyIn; - private String[] workbasketTypeIn; + private String[] keyIn; + private String[] typeIn; private String[] ownerIn; private String[] custom1In; private String[] custom2In; @@ -56,8 +56,8 @@ public class WorkbasketHistoryQueryImpl implements WorkbasketHistoryQuery { private String[] eventTypeLike; private String[] userIdLike; private String[] domainLike; - private String[] workbasketKeyLike; - private String[] workbasketTypeLike; + private String[] keyLike; + private String[] typeLike; private String[] ownerLike; private String[] custom1Like; private String[] custom2Like; @@ -98,12 +98,12 @@ public class WorkbasketHistoryQueryImpl implements WorkbasketHistoryQuery { return domainIn; } - public String[] getWorkbasketKeyIn() { - return workbasketKeyIn; + public String[] getKeyIn() { + return keyIn; } - public String[] getWorkbasketTypeIn() { - return workbasketTypeIn; + public String[] getTypeIn() { + return typeIn; } public String[] getOwnerIn() { @@ -158,12 +158,12 @@ public class WorkbasketHistoryQueryImpl implements WorkbasketHistoryQuery { return domainLike; } - public String[] getWorkbasketKeyLike() { - return workbasketKeyLike; + public String[] getKeyLike() { + return keyLike; } - public String[] getWorkbasketTypeLike() { - return workbasketTypeLike; + public String[] getTypeLike() { + return typeLike; } public String[] getOwnerLike() { @@ -239,14 +239,14 @@ public class WorkbasketHistoryQueryImpl implements WorkbasketHistoryQuery { } @Override - public WorkbasketHistoryQuery workbasketKeyIn(String... workbasketKey) { - this.workbasketKeyIn = toUpperCopy(workbasketKey); + public WorkbasketHistoryQuery keyIn(String... workbasketKey) { + this.keyIn = toUpperCopy(workbasketKey); return this; } @Override - public WorkbasketHistoryQuery workbasketTypeIn(String... workbasketType) { - this.workbasketTypeIn = toUpperCopy(workbasketType); + public WorkbasketHistoryQuery typeIn(String... workbasketType) { + this.typeIn = toUpperCopy(workbasketType); return this; } @@ -330,13 +330,13 @@ public class WorkbasketHistoryQueryImpl implements WorkbasketHistoryQuery { @Override public WorkbasketHistoryQuery workbasketKeyLike(String... workbasketKey) { - this.workbasketKeyLike = toUpperCopy(workbasketKey); + this.keyLike = toUpperCopy(workbasketKey); return this; } @Override public WorkbasketHistoryQuery workbasketTypeLike(String... workbasketType) { - this.workbasketTypeLike = toUpperCopy(workbasketType); + this.typeLike = toUpperCopy(workbasketType); return this; } @@ -420,13 +420,13 @@ public class WorkbasketHistoryQueryImpl implements WorkbasketHistoryQuery { } @Override - public WorkbasketHistoryQuery orderByWorkbasketKey(SortDirection sortDirection) { - return addOrderCriteria("WORKBASKET_KEY", sortDirection); + public WorkbasketHistoryQuery orderByKey(SortDirection sortDirection) { + return addOrderCriteria("KEY", sortDirection); } @Override - public WorkbasketHistoryQuery orderByWorkbasketType(SortDirection sortDirection) { - return addOrderCriteria("WORKBASKET_TYPE", sortDirection); + public WorkbasketHistoryQuery orderByType(SortDirection sortDirection) { + return addOrderCriteria("TYPE", sortDirection); } @Override diff --git a/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/workbasket/WorkbasketHistoryEventMapper.java b/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/workbasket/WorkbasketHistoryEventMapper.java index 0d7ed5669..c28fedc5d 100644 --- a/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/workbasket/WorkbasketHistoryEventMapper.java +++ b/history/taskana-simplehistory-provider/src/main/java/pro/taskana/simplehistory/impl/workbasket/WorkbasketHistoryEventMapper.java @@ -14,13 +14,13 @@ public interface WorkbasketHistoryEventMapper { @Insert( "