From 9f86a5ef948a79180a5e824ffbad3e5fa830becc Mon Sep 17 00:00:00 2001 From: BVier <26220150+BVier@users.noreply.github.com> Date: Thu, 1 Feb 2018 09:32:35 +0100 Subject: [PATCH] change taskForClassification-request --- .../pro/taskana/impl/ClassificationServiceImpl.java | 12 +++++++++--- .../main/java/pro/taskana/impl/TaskServiceImpl.java | 6 +++--- .../java/pro/taskana/model/mappings/TaskMapper.java | 6 ------ .../classification/DeleteClassificationAccTest.java | 10 +++++++--- .../src/test/resources/sql/classification.sql | 2 +- 5 files changed, 20 insertions(+), 16 deletions(-) diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/ClassificationServiceImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/ClassificationServiceImpl.java index 695db1eaf..a09f89e2e 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/ClassificationServiceImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/ClassificationServiceImpl.java @@ -12,6 +12,7 @@ import pro.taskana.Classification; import pro.taskana.ClassificationQuery; import pro.taskana.ClassificationService; import pro.taskana.ClassificationSummary; +import pro.taskana.TaskSummary; import pro.taskana.TaskanaEngine; import pro.taskana.exceptions.ClassificationAlreadyExistException; import pro.taskana.exceptions.ClassificationInUseException; @@ -311,9 +312,14 @@ public class ClassificationServiceImpl implements ClassificationService { } TaskServiceImpl taskService = (TaskServiceImpl) taskanaEngineImpl.getTaskService(); - int countTasks = taskService.countTasksByClassificationAndDomain(classificationKey, domain); - if (countTasks > 0) { - throw new ClassificationInUseException("There are " + countTasks + " Tasks which belong to this classification or a child classification. Please complete them and try again."); + try { + List classificationTasks = taskService.createTaskQuery().classificationKeyIn(classificationKey).domainIn(domain).list(); + if (!classificationTasks.isEmpty()) { + throw new ClassificationInUseException("There are " + classificationTasks.size() + " Tasks which belong to this classification or a child classification. Please complete them and try again."); + } + } catch (NotAuthorizedException e) { + LOGGER.error("ClassificationQuery unexpectedly returned NotauthorizedException. Throwing SystemException "); + throw new SystemException("ClassificationQuery unexpectedly returned NotauthorizedException."); } List childKeys = this.classificationMapper.getChildrenOfClassification(classificationKey, domain); diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/TaskServiceImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/TaskServiceImpl.java index 72ad7109e..61fda7ae0 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/TaskServiceImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/TaskServiceImpl.java @@ -835,9 +835,9 @@ public class TaskServiceImpl implements TaskService { } } - public int countTasksByClassificationAndDomain(String classificationKey, String domain) { - return taskMapper.countTasksByClassificationAndDomain(classificationKey, domain); - } + private void initAttachment(AttachmentImpl attachment, Task newTask) { + if (attachment.getId() == null) { + attachment.setId(IdGenerator.generateWithPrefix(ID_PREFIX_ATTACHMENT)); } if (attachment.getCreated() == null) { attachment.setCreated(Instant.now()); diff --git a/lib/taskana-core/src/main/java/pro/taskana/model/mappings/TaskMapper.java b/lib/taskana-core/src/main/java/pro/taskana/model/mappings/TaskMapper.java index 80cf47f80..0136a872f 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/model/mappings/TaskMapper.java +++ b/lib/taskana-core/src/main/java/pro/taskana/model/mappings/TaskMapper.java @@ -170,10 +170,4 @@ public interface TaskMapper { @Result(property = "custom9", column = "CUSTOM_9"), @Result(property = "custom10", column = "CUSTOM_10") }) List findTaskSummariesByWorkbasketKey(@Param("workbasketKey") String workbasketKey); - - @Select("SELECT COUNT(ID) " - + "FROM TASK " - + "WHERE CLASSIFICATION_KEY = #{classificationKey} " - + "AND DOMAIN = #{domain}") - int countTasksByClassificationAndDomain(@Param("classificationKey") String classificationKey, @Param("domain") String domain); } diff --git a/lib/taskana-core/src/test/java/acceptance/classification/DeleteClassificationAccTest.java b/lib/taskana-core/src/test/java/acceptance/classification/DeleteClassificationAccTest.java index 6bd15465a..34474069c 100644 --- a/lib/taskana-core/src/test/java/acceptance/classification/DeleteClassificationAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/classification/DeleteClassificationAccTest.java @@ -1,6 +1,7 @@ package acceptance.classification; import static org.junit.Assert.assertEquals; +import static org.junit.Assert.assertNotEquals; import static org.junit.Assert.assertNotNull; import static org.junit.Assert.assertTrue; @@ -78,8 +79,9 @@ public class DeleteClassificationAccTest extends AbstractAccTest { } catch (ClassificationInUseException e) { classificationInUse = true; } + Classification rollback = classificationService.getClassification("L11010", "DOMAIN_A"); assertTrue(classificationInUse); - classificationService.getClassification("L11010", "DOMAIN_A"); + assertEquals("DOMAIN_A", rollback.getDomain()); classificationInUse = false; try { @@ -87,9 +89,11 @@ public class DeleteClassificationAccTest extends AbstractAccTest { } catch (ClassificationInUseException e) { classificationInUse = true; } + Classification rollbackMaster = classificationService.getClassification("L11010", ""); + Classification rollbackA = classificationService.getClassification("L11010", "DOMAIN_A"); assertTrue(classificationInUse); - classificationService.getClassification("L11010", ""); - classificationService.getClassification("L11010", "DOMAIN_A"); + assertEquals(rollbackMaster.getKey(), rollbackA.getKey()); + assertNotEquals(rollbackMaster.getDomain(), rollbackA.getDomain()); } @Test(expected = ClassificationNotFoundException.class) diff --git a/lib/taskana-core/src/test/resources/sql/classification.sql b/lib/taskana-core/src/test/resources/sql/classification.sql index 75ea9fd5d..76a7bf0e4 100644 --- a/lib/taskana-core/src/test/resources/sql/classification.sql +++ b/lib/taskana-core/src/test/resources/sql/classification.sql @@ -24,7 +24,7 @@ INSERT INTO CLASSIFICATION VALUES('CLI:100000000000000000000000000000000008', 'L INSERT INTO CLASSIFICATION VALUES('CLI:100000000000000000000000000000000009', 'L140101', '', 'EXTERN', 'TASK', 'DOMAIN_A', TRUE, CURRENT_TIMESTAMP, 'Zustimmungserklärung', 'Zustimmungserklärung', 2, 'P2D', '', 'VNR', '', '', '', '', '', '', ''); INSERT INTO CLASSIFICATION VALUES('CLI:100000000000000000000000000000000010', 'T2100', '', 'MANUAL', 'TASK', 'DOMAIN_A', TRUE, CURRENT_TIMESTAMP, 'T-Vertragstermin VERA', 'T-Vertragstermin VERA', 2, 'P2D', '', 'VNR', '', '', '', '', '', '', ''); INSERT INTO CLASSIFICATION VALUES('CLI:100000000000000000000000000000000011', 'T6310', '', 'AUTOMATIC', 'TASK', 'DOMAIN_A', TRUE, CURRENT_TIMESTAMP, 'T-GUK Honorarrechnung erstellen', 'Generali Unterstützungskasse Honorar wird fällig', 2, 'P2D', '', 'VNR', '', '', '', '', '', '', ''); -INSERT INTO CLASSIFICATION VALUES('CLI:100000000000000000000000000000000013', 'DOKTYP_DEFAULT', '', 'EXTERN', 'DOCUMENT', 'DOMAIN_A', TRUE, CURRENT_TIMESTAMP, 'EP allgemein', 'EP allgemein', 99, 'P2000D', '', 'VNR', '', '', '', '', '', '', ''); +INSERT INTO CLASSIFICATION VALUES('CLI:100000000000000000000000000000000013', 'DOCTYPE_DEFAULT', '', 'EXTERN', 'DOCUMENT', 'DOMAIN_A', TRUE, CURRENT_TIMESTAMP, 'EP allgemein', 'EP allgemein', 99, 'P2000D', '', 'VNR', '', '', '', '', '', '', ''); INSERT INTO CLASSIFICATION VALUES('CLI:100000000000000000000000000000000014', 'L10000', '', 'EXTERN', 'TASK', 'DOMAIN_A', TRUE, CURRENT_TIMESTAMP, 'BUZ-Leistungsfall', 'BUZ-Leistungsfall', 1, 'P1D', '', 'VNR,RVNR,KOLVNR', '', '', '', '', '', '', ''); INSERT INTO CLASSIFICATION VALUES('CLI:100000000000000000000000000000000016', 'T2000', '', 'MANUAL', 'TASK', 'DOMAIN_A', TRUE, CURRENT_TIMESTAMP, 'T-Vertragstermin', 'T-Vertragstermin', 1, 'P1D', '', 'VNR,RVNR,KOLVNR', '', '', '', '', '', '', '');