From 592a6c7a5dcc9e852ee2931b2d3e234849762019 Mon Sep 17 00:00:00 2001 From: MM1277 Date: Tue, 26 Mar 2024 11:36:09 +0100 Subject: [PATCH] Closes #2542 - Flag that counts the comments of a task has been added --- .../taskcomment/create/CreateTaskCommentAccTest.java | 5 ++++- .../taskcomment/delete/DeleteTaskCommentAccTest.java | 2 ++ .../taskcomment/update/UpdateTaskCommentAccTest.java | 2 ++ .../taskana/task/internal/TaskCommentServiceImpl.java | 10 ++++------ .../taskana/task/internal/models/TaskSummaryImpl.java | 8 -------- 5 files changed, 12 insertions(+), 15 deletions(-) diff --git a/lib/taskana-core-test/src/test/java/acceptance/taskcomment/create/CreateTaskCommentAccTest.java b/lib/taskana-core-test/src/test/java/acceptance/taskcomment/create/CreateTaskCommentAccTest.java index 1e524fa765..f379b0ab81 100644 --- a/lib/taskana-core-test/src/test/java/acceptance/taskcomment/create/CreateTaskCommentAccTest.java +++ b/lib/taskana-core-test/src/test/java/acceptance/taskcomment/create/CreateTaskCommentAccTest.java @@ -96,7 +96,7 @@ void should_CreateTaskComment_For_TaskThatAlreadyHasComments() throws Exception @WithAccessId(user = "user-1-2") @Test - void should_FailToCreateTaskComment_When_UserHasNoWorkbasketPermission() { + void should_FailToCreateTaskComment_When_UserHasNoWorkbasketPermission() throws Exception { TaskComment taskCommentToCreate = taskService.newTaskComment(taskWithComments.getId()); taskCommentToCreate.setTextField("Some text"); @@ -108,6 +108,7 @@ void should_FailToCreateTaskComment_When_UserHasNoWorkbasketPermission() { assertThat(e.getWorkbasketId()).isEqualTo(defaultWorkbasket.getId()); assertThat(e.getRequiredPermissions()) .containsExactly(WorkbasketPermission.READ, WorkbasketPermission.READTASKS); + assertThat(taskService.getTask(taskWithComments.getId()).getNumberOfComments()).isEqualTo(2); } @WithAccessId(user = "user-1-1") @@ -121,6 +122,7 @@ void should_CreateTaskComment_When_CopyingAnotherComment() throws Exception { taskService.getTaskComments(taskWithComments.getId()); assertThat(taskCommentsAfterInsert) .containsExactlyInAnyOrder(comment1, comment2, taskCommentToCreate); + assertThat(taskService.getTask(taskWithComments.getId()).getNumberOfComments()).isEqualTo(3); } @WithAccessId(user = "user-1-1") @@ -139,5 +141,6 @@ void should_FailToCreateTaskComment_When_TaskIdIsNullOrNonExisting() throws Exce call = () -> taskService.createTaskComment(newTaskCommentForTaskIdNull); e = catchThrowableOfType(call, TaskNotFoundException.class); assertThat(e.getTaskId()).isNull(); + assertThat(taskService.getTask(taskWithComments.getId()).getNumberOfComments()).isEqualTo(2); } } diff --git a/lib/taskana-core-test/src/test/java/acceptance/taskcomment/delete/DeleteTaskCommentAccTest.java b/lib/taskana-core-test/src/test/java/acceptance/taskcomment/delete/DeleteTaskCommentAccTest.java index c5c090344b..73710beda1 100644 --- a/lib/taskana-core-test/src/test/java/acceptance/taskcomment/delete/DeleteTaskCommentAccTest.java +++ b/lib/taskana-core-test/src/test/java/acceptance/taskcomment/delete/DeleteTaskCommentAccTest.java @@ -132,6 +132,7 @@ void should_FailToDeleteTaskComment_When_UserHasNoAuthorization() throws Excepti List taskCommentsAfterDeletionWithAdmin = taskService.getTaskComments(task1.getId()); assertThat(taskCommentsAfterDeletionWithAdmin).hasSize(0); + assertThat(taskService.getTask(task1.getId()).getNumberOfComments()).isZero(); } @WithAccessId(user = "admin") @@ -149,6 +150,7 @@ void should_DeleteTaskComment_When_UserIsInAdministrativeRole() throws Exception List taskCommentsAfterDeletion = taskService.getTaskComments(task1.getId()); assertThat(taskCommentsAfterDeletion).hasSize(0); + assertThat(taskService.getTask(task1.getId()).getNumberOfComments()).isZero(); } @WithAccessId(user = "user-1-1") diff --git a/lib/taskana-core-test/src/test/java/acceptance/taskcomment/update/UpdateTaskCommentAccTest.java b/lib/taskana-core-test/src/test/java/acceptance/taskcomment/update/UpdateTaskCommentAccTest.java index e59d3386f9..9c4cacb171 100644 --- a/lib/taskana-core-test/src/test/java/acceptance/taskcomment/update/UpdateTaskCommentAccTest.java +++ b/lib/taskana-core-test/src/test/java/acceptance/taskcomment/update/UpdateTaskCommentAccTest.java @@ -110,6 +110,7 @@ void should_FailToUpdateTaskComment_When_ChangingCreator() throws Exception { ThrowingCallable updateTaskCommentCall = () -> taskService.updateTaskComment(taskComment); assertThatThrownBy(updateTaskCommentCall) .isInstanceOf(NotAuthorizedOnTaskCommentException.class); + assertThat(taskService.getTask(task.getId()).getNumberOfComments()).isOne(); } @WithAccessId(user = "user-1-1") @@ -131,6 +132,7 @@ void should_FailToUpdateTaskComment_When_TaskCommentWasModifiedConcurrently() th assertThatThrownBy(() -> taskService.updateTaskComment(concurrentTaskCommentToUpdate)) .isInstanceOf(ConcurrencyException.class); + assertThat(taskService.getTask(task.getId()).getNumberOfComments()).isOne(); } private TaskBuilder createDefaultTask() { diff --git a/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskCommentServiceImpl.java b/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskCommentServiceImpl.java index 3a695392cd..0e62ac84b0 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskCommentServiceImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/task/internal/TaskCommentServiceImpl.java @@ -13,6 +13,7 @@ import pro.taskana.task.api.exceptions.NotAuthorizedOnTaskCommentException; import pro.taskana.task.api.exceptions.TaskCommentNotFoundException; import pro.taskana.task.api.exceptions.TaskNotFoundException; +import pro.taskana.task.api.models.Task; import pro.taskana.task.api.models.TaskComment; import pro.taskana.task.internal.models.TaskCommentImpl; import pro.taskana.task.internal.models.TaskImpl; @@ -114,9 +115,7 @@ TaskComment createTaskComment(TaskComment taskCommentToCreate) taskCommentMapper.insert(taskCommentImplToCreate); - TaskImpl task = (TaskImpl) taskService.getTask(taskCommentImplToCreate.getTaskId()); - taskMapper.incrementNumberOfComments(task.getId(), Instant.now()); - task.incrementNumberOfComments(); + taskMapper.incrementNumberOfComments(taskCommentImplToCreate.getTaskId(), Instant.now()); } finally { taskanaEngine.returnConnection(); @@ -144,11 +143,10 @@ void deleteTaskComment(String taskCommentId) || taskanaEngine.getEngine().isUserInRole(TaskanaRole.ADMIN) || taskanaEngine.getEngine().isUserInRole(TaskanaRole.TASK_ADMIN)) { - TaskImpl task = - (TaskImpl) taskService.getTask(taskCommentMapper.findById(taskCommentId).getTaskId()); + Task task = + taskService.getTask(taskCommentMapper.findById(taskCommentId).getTaskId()); taskCommentMapper.delete(taskCommentId); taskMapper.decrementNumberOfComments(task.getId(), Instant.now()); - task.decrementNumberOfComments(); if (LOGGER.isDebugEnabled()) { LOGGER.debug("taskComment {} deleted", taskCommentToDelete.getId()); diff --git a/lib/taskana-core/src/main/java/pro/taskana/task/internal/models/TaskSummaryImpl.java b/lib/taskana-core/src/main/java/pro/taskana/task/internal/models/TaskSummaryImpl.java index e60f1a84dd..367168c307 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/task/internal/models/TaskSummaryImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/task/internal/models/TaskSummaryImpl.java @@ -296,14 +296,6 @@ public void setNumberOfComments(int numberOfComments) { this.numberOfComments = numberOfComments; } - public void incrementNumberOfComments() { - this.numberOfComments++; - } - - public void decrementNumberOfComments() { - this.numberOfComments--; - } - @Override public ClassificationSummary getClassificationSummary() { return classificationSummary;