diff --git a/lib/taskana-cdi/src/test/java/pro/taskana/TaskanaRestTest.java b/lib/taskana-cdi/src/test/java/pro/taskana/TaskanaRestTest.java index 699446d53..b99d3d288 100644 --- a/lib/taskana-cdi/src/test/java/pro/taskana/TaskanaRestTest.java +++ b/lib/taskana-cdi/src/test/java/pro/taskana/TaskanaRestTest.java @@ -44,7 +44,7 @@ public class TaskanaRestTest { workbasket.setName("wb"); workbasket.setType(WorkbasketType.PERSONAL); taskanaEjb.getWorkbasketService().createWorkbasket(workbasket); - Classification classification = classificationService.newClassification("cdiDomain", "TEST", "t1"); + Classification classification = classificationService.newClassification("TEST", "cdiDomain", "t1"); taskanaEjb.getClassificationService().createClassification(classification); Task task = taskanaEjb.getTaskService().newTask(workbasket.getKey()); diff --git a/lib/taskana-core/src/main/java/pro/taskana/ClassificationService.java b/lib/taskana-core/src/main/java/pro/taskana/ClassificationService.java index 50ea003d2..aa3e85f76 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/ClassificationService.java +++ b/lib/taskana-core/src/main/java/pro/taskana/ClassificationService.java @@ -24,6 +24,17 @@ public interface ClassificationService { */ Classification getClassification(String key, String domain) throws ClassificationNotFoundException; + /** + * Get the Classification by id. + * + * @param id + * the id of the searched-for classifications + * @return the classification identified by id + * @throws ClassificationNotFoundException + * if no classification is found that matches the id. + */ + Classification getClassification(String id) throws ClassificationNotFoundException; + /** * Delete a classification with all child classifications. * @@ -78,13 +89,13 @@ public interface ClassificationService { * Creating a new {@link Classification} with unchangeable default values. It will be only generated and is not * persisted until CREATE-call. * - * @param domain - * the domain of the new classification * @param key * the key of the classification + * @param domain + * the domain of the new classification * @param type * the type of the new classification * @return classification to specify */ - Classification newClassification(String domain, String key, String type); + Classification newClassification(String key, String domain, String type); } 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 84b3f54fe..0bf839480 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 @@ -35,7 +35,7 @@ public class ClassificationServiceImpl implements ClassificationService { private TaskanaEngineImpl taskanaEngineImpl; ClassificationServiceImpl(TaskanaEngine taskanaEngine, ClassificationMapper classificationMapper, - TaskMapper taskMapper) { + TaskMapper taskMapper) { super(); this.taskanaEngineImpl = (TaskanaEngineImpl) taskanaEngine; this.classificationMapper = classificationMapper; @@ -194,6 +194,28 @@ public class ClassificationServiceImpl implements ClassificationService { } } + @Override + public Classification getClassification(String id) throws ClassificationNotFoundException { + if (id == null) { + throw new ClassificationNotFoundException( + "Classification for id " + id + " was not found."); + } + LOGGER.debug("entry to getClassification(id = {})", id); + Classification result = null; + try { + taskanaEngineImpl.openConnection(); + result = classificationMapper.findById(id); + if (result == null) { + LOGGER.error("Classification for id {} was not found. Throwing ClassificationNotFoundException", id); + throw new ClassificationNotFoundException("Classification for id " + id + " was not found"); + } + return result; + } finally { + taskanaEngineImpl.returnConnection(); + LOGGER.debug("exit from getClassification(). Returning result {} ", result); + } + } + @Override public Classification getClassification(String key, String domain) throws ClassificationNotFoundException { if (key == null) { @@ -208,6 +230,9 @@ public class ClassificationServiceImpl implements ClassificationService { if (result == null) { result = classificationMapper.findByKeyAndDomain(key, ""); if (result == null) { + LOGGER.error( + "Classification for key {} and domain {} was not found. Throwing ClassificationNotFoundException", + key, domain); throw new ClassificationNotFoundException("Classification for key " + key + " was not found"); } } @@ -224,7 +249,7 @@ public class ClassificationServiceImpl implements ClassificationService { } @Override - public Classification newClassification(String domain, String key, String type) { + public Classification newClassification(String key, String domain, String type) { ClassificationImpl classification = new ClassificationImpl(); classification.setKey(key); classification.setDomain(domain); diff --git a/lib/taskana-core/src/main/java/pro/taskana/impl/TaskImpl.java b/lib/taskana-core/src/main/java/pro/taskana/impl/TaskImpl.java index 66e970e0a..0ade3f887 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/impl/TaskImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/impl/TaskImpl.java @@ -31,8 +31,6 @@ public class TaskImpl implements Task { private String note; private int priority; private TaskState state; - // private String classificationKey; - // private String classificationCategory; private ClassificationSummary classificationSummary; private WorkbasketSummary workbasketSummary; private String businessProcessId; diff --git a/lib/taskana-core/src/main/java/pro/taskana/mappings/ClassificationMapper.java b/lib/taskana-core/src/main/java/pro/taskana/mappings/ClassificationMapper.java index c359e2d20..23394ce07 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/mappings/ClassificationMapper.java +++ b/lib/taskana-core/src/main/java/pro/taskana/mappings/ClassificationMapper.java @@ -45,6 +45,32 @@ public interface ClassificationMapper { @Result(property = "custom8", column = "CUSTOM_8")}) ClassificationImpl findByKeyAndDomain(@Param("key") String key, @Param("domain") String domain); + @Select("SELECT ID, KEY, PARENT_ID, CATEGORY, TYPE, DOMAIN, VALID_IN_DOMAIN, CREATED, NAME, DESCRIPTION, PRIORITY, SERVICE_LEVEL, APPLICATION_ENTRY_POINT, CUSTOM_1, CUSTOM_2, CUSTOM_3, CUSTOM_4, CUSTOM_5, CUSTOM_6, CUSTOM_7, CUSTOM_8 " + + "FROM CLASSIFICATION " + + "WHERE ID = #{id}") + @Results({@Result(property = "id", column = "ID"), + @Result(property = "key", column = "KEY"), + @Result(property = "parentId", column = "PARENT_ID"), + @Result(property = "category", column = "CATEGORY"), + @Result(property = "type", column = "TYPE"), + @Result(property = "domain", column = "DOMAIN"), + @Result(property = "isValidInDomain", column = "VALID_IN_DOMAIN"), + @Result(property = "created", column = "CREATED"), + @Result(property = "name", column = "NAME"), + @Result(property = "description", column = "DESCRIPTION"), + @Result(property = "priority", column = "PRIORITY"), + @Result(property = "serviceLevel", column = "SERVICE_LEVEL"), + @Result(property = "applicationEntryPoint", column = "APPLICATION_ENTRY_POINT"), + @Result(property = "custom1", column = "CUSTOM_1"), + @Result(property = "custom2", column = "CUSTOM_2"), + @Result(property = "custom3", column = "CUSTOM_3"), + @Result(property = "custom4", column = "CUSTOM_4"), + @Result(property = "custom5", column = "CUSTOM_5"), + @Result(property = "custom6", column = "CUSTOM_6"), + @Result(property = "custom7", column = "CUSTOM_7"), + @Result(property = "custom8", column = "CUSTOM_8")}) + ClassificationImpl findById(@Param("id") String id); + @Insert("INSERT INTO CLASSIFICATION (ID, KEY, PARENT_ID, CATEGORY, TYPE, DOMAIN, VALID_IN_DOMAIN, CREATED, NAME, DESCRIPTION, PRIORITY, SERVICE_LEVEL, APPLICATION_ENTRY_POINT, CUSTOM_1, CUSTOM_2, CUSTOM_3, CUSTOM_4, CUSTOM_5, CUSTOM_6, CUSTOM_7, CUSTOM_8) VALUES (#{classification.id}, #{classification.key}, #{classification.parentId}, #{classification.category}, #{classification.type}, #{classification.domain}, #{classification.isValidInDomain}, #{classification.created}, #{classification.name}, #{classification.description}, #{classification.priority}, #{classification.serviceLevel}, #{classification.applicationEntryPoint}, #{classification.custom1}, #{classification.custom2}, #{classification.custom3}, #{classification.custom4}, #{classification.custom5}, #{classification.custom6}, #{classification.custom7}, #{classification.custom8})") void insert(@Param("classification") ClassificationImpl classification); diff --git a/lib/taskana-core/src/test/java/acceptance/classification/GetClassificationAccTest.java b/lib/taskana-core/src/test/java/acceptance/classification/GetClassificationAccTest.java index 9f16d6be0..dc5381fec 100644 --- a/lib/taskana-core/src/test/java/acceptance/classification/GetClassificationAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/classification/GetClassificationAccTest.java @@ -30,7 +30,8 @@ public class GetClassificationAccTest extends AbstractAccTest { @Test public void testFindAllClassifications() { ClassificationService classificationService = taskanaEngine.getClassificationService(); - List classificationSummaryList = classificationService.createClassificationQuery().list(); + List classificationSummaryList = classificationService.createClassificationQuery() + .list(); Assert.assertNotNull(classificationSummaryList); } @@ -41,6 +42,22 @@ public class GetClassificationAccTest extends AbstractAccTest { Assert.assertNotNull(classification); } + @Test + public void testGetOneClassificationById() throws ClassificationNotFoundException { + ClassificationService classificationService = taskanaEngine.getClassificationService(); + Classification classification = classificationService + .getClassification("CLI:100000000000000000000000000000000011"); + Assert.assertNotNull(classification); + } + + @Test(expected = ClassificationNotFoundException.class) + public void testGetOneClassificationByIdFails() throws ClassificationNotFoundException { + ClassificationService classificationService = taskanaEngine.getClassificationService(); + Classification classification = classificationService + .getClassification("CLI:100000000470000000000000000000000011"); + Assert.fail("ClassificationNotFoundException was expected"); + } + @Test public void testGetOneClassificationForDomainAndGetClassificationFromRootDomain() throws ClassificationNotFoundException { diff --git a/lib/taskana-core/src/test/java/acceptance/classification/UpdateClassificationAccTest.java b/lib/taskana-core/src/test/java/acceptance/classification/UpdateClassificationAccTest.java index 820f0bb02..374222ac3 100644 --- a/lib/taskana-core/src/test/java/acceptance/classification/UpdateClassificationAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/classification/UpdateClassificationAccTest.java @@ -69,7 +69,7 @@ public class UpdateClassificationAccTest extends AbstractAccTest { String newName = "updated Name"; String newEntryPoint = "updated EntryPoint"; ClassificationService classificationService = taskanaEngine.getClassificationService(); - Classification classification = classificationService.newClassification("OTHER_DOMAIN", "NO REGISTERED KEY", + Classification classification = classificationService.newClassification("NO REGISTERED KEY", "OTHER_DOMAIN", "DOCUMENT"); classification.setApplicationEntryPoint(newEntryPoint); classification.setCategory("PROCESS"); diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntAutoCommitTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntAutoCommitTest.java index af3f12b9b..c9d095b59 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntAutoCommitTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntAutoCommitTest.java @@ -142,7 +142,7 @@ public class ClassificationServiceImplIntAutoCommitTest { assertThat(actualClassification.getKey(), equalTo(key)); assertThat(actualClassification.getDomain(), equalTo(domain + "_2")); assertThat(actualClassification.getId(), startsWith(ID_PREFIX_CLASSIFICATION)); - //verify that + // verify that Classification rootResults = classificationService.getClassification(key, ""); assertThat(rootResults, not(equalTo(null))); @@ -396,7 +396,7 @@ public class ClassificationServiceImplIntAutoCommitTest { } private Classification createDummyClassificationWithUniqueKey(String domain, String type) { - Classification classification = classificationService.newClassification(domain, "TEST" + counter, type); + Classification classification = classificationService.newClassification("TEST" + counter, domain, type); counter++; return classification; } diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntExplicitTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntExplicitTest.java index ad017b1b8..f0cd55934 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntExplicitTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/ClassificationServiceImplIntExplicitTest.java @@ -437,7 +437,7 @@ public class ClassificationServiceImplIntExplicitTest { } private Classification createNewClassificationWithUniqueKey(String domain, String type) { - Classification classification = classificationService.newClassification(domain, "TEST" + counter, type); + Classification classification = classificationService.newClassification("TEST" + counter, domain, type); counter++; return classification; } diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/TaskServiceImplIntAutocommitTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/TaskServiceImplIntAutocommitTest.java index 1fa1c90ae..97949959a 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/TaskServiceImplIntAutocommitTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/TaskServiceImplIntAutocommitTest.java @@ -104,7 +104,7 @@ public class TaskServiceImplIntAutocommitTest { wb.setName("workbasket"); wb.setType(WorkbasketType.GROUP); taskanaEngine.getWorkbasketService().createWorkbasket(wb); - Classification classification = classificationService.newClassification("novatec", "TEST", "t1"); + Classification classification = classificationService.newClassification("TEST", "novatec", "t1"); taskanaEngine.getClassificationService().createClassification(classification); Task task = taskServiceImpl.newTask(wb.getId()); @@ -131,7 +131,7 @@ public class TaskServiceImplIntAutocommitTest { wb.setType(WorkbasketType.GROUP); taskanaEngine.getWorkbasketService().createWorkbasket(wb); - Classification classification = classificationService.newClassification("novatec", "TEST", "t1"); + Classification classification = classificationService.newClassification("TEST", "novatec", "t1"); classification = taskanaEngine.getClassificationService() .createClassification(classification); classification = taskanaEngine.getClassificationService().getClassification( @@ -166,7 +166,7 @@ public class TaskServiceImplIntAutocommitTest { wb.setName("workbasket"); wb.setType(WorkbasketType.GROUP); te.getWorkbasketService().createWorkbasket(wb); - Classification classification = te.getClassificationService().newClassification("novatec", "TEST", "t1"); + Classification classification = te.getClassificationService().newClassification("TEST", "novatec", "t1"); te.getClassificationService().createClassification(classification); Task task = taskServiceImpl.newTask(wb.getId()); @@ -187,7 +187,7 @@ public class TaskServiceImplIntAutocommitTest { wb.setName("workbasket"); wb.setType(WorkbasketType.GROUP); taskanaEngine.getWorkbasketService().createWorkbasket(wb); - Classification classification = classificationService.newClassification("novatec", "TEST", "t1"); + Classification classification = classificationService.newClassification("TEST", "novatec", "t1"); taskanaEngine.getClassificationService().createClassification(classification); Task task = taskServiceImpl.newTask(wb.getKey(), wb.getDomain()); @@ -246,7 +246,7 @@ public class TaskServiceImplIntAutocommitTest { destinationWB = workbasketService.createWorkbasket(wb); // Classification required for Task - classification = (ClassificationImpl) classificationService.newClassification("domain", "KEY", "t1"); + classification = (ClassificationImpl) classificationService.newClassification("KEY", "domain", "t1"); classification.setCategory("Test Classification"); classification.setName("Transfert-Task Classification"); classificationService.createClassification(classification); @@ -297,8 +297,8 @@ public class TaskServiceImplIntAutocommitTest { classificationService = taskanaEngine.getClassificationService(); workbasketService = taskanaEngine.getWorkbasketService(); - ClassificationImpl classification = (ClassificationImpl) classificationService.newClassification("test-domain", - "KEY", "t1"); + ClassificationImpl classification = (ClassificationImpl) classificationService.newClassification("KEY", + "test-domain", "t1"); classification.setCategory("Test Classification"); classification.setName("Transfert-Task Classification"); classificationService.createClassification(classification); @@ -376,7 +376,7 @@ public class TaskServiceImplIntAutocommitTest { wb.setName("workbasket"); wb.setType(WorkbasketType.GROUP); taskanaEngine.getWorkbasketService().createWorkbasket(wb); - Classification classification = classificationService.newClassification("novatec", "TEST", "t1"); + Classification classification = classificationService.newClassification("TEST", "novatec", "t1"); taskanaEngine.getClassificationService().createClassification(classification); Task task = taskServiceImpl.newTask(wb.getId()); diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/TaskServiceImplIntExplicitTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/TaskServiceImplIntExplicitTest.java index 337d1daa1..a423cf51b 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/integration/TaskServiceImplIntExplicitTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/integration/TaskServiceImplIntExplicitTest.java @@ -118,7 +118,7 @@ public class TaskServiceImplIntExplicitTest { workbasket.setId("1"); // set id manually for authorization tests workbasket.setType(WorkbasketType.GROUP); - Classification classification = classificationService.newClassification("novatec", "TEST", "type1"); + Classification classification = classificationService.newClassification("TEST", "novatec", "type1"); taskanaEngineImpl.getWorkbasketService().createWorkbasket(workbasket); taskanaEngineImpl.getClassificationService().createClassification(classification); connection.commit(); @@ -189,7 +189,7 @@ public class TaskServiceImplIntExplicitTest { workbasket.setName("workbasket99"); workbasket.setType(WorkbasketType.GROUP); workbasket = workBasketServiceImpl.createWorkbasket(workbasket); - Classification classification = classificationService.newClassification("novatec", "TEST", "t1"); + Classification classification = classificationService.newClassification("TEST", "novatec", "t1"); classification = classificationServiceImpl.createClassification(classification); Task task = taskServiceImpl.newTask(workbasket.getId()); @@ -215,7 +215,7 @@ public class TaskServiceImplIntExplicitTest { generateSampleAccessItems(); - Classification classification = classificationService.newClassification("novatec", "TEST1", "t1"); + Classification classification = classificationService.newClassification("TEST1", "novatec", "t1"); classification.setCategory("MANUAL"); classification.setName("classification name"); classification.setServiceLevel("P1D"); @@ -305,8 +305,8 @@ public class TaskServiceImplIntExplicitTest { wb = workbasketService.createWorkbasket(wb); this.createWorkbasketWithSecurity(wb, CurrentUserContext.getUserid(), true, true, true, false); - Classification classification = classificationService.newClassification(wb.getDomain(), - UUID.randomUUID().toString(), "t1"); // not persisted, + Classification classification = classificationService.newClassification( + UUID.randomUUID().toString(), wb.getDomain(), "t1"); // not persisted, // not found. classification.setName("not persisted - so not found."); @@ -328,7 +328,7 @@ public class TaskServiceImplIntExplicitTest { WorkbasketImpl workbasket = (WorkbasketImpl) workbasketService.newWorkbasket("k1", "novatec"); workbasket.setName("workbasket"); - Classification classification = classificationService.newClassification("novatec", "TEST", "t1"); + Classification classification = classificationService.newClassification("TEST", "novatec", "t1"); classificationService.createClassification(classification); workbasket.setId("1"); // set id manually for authorization tests workbasket.setType(WorkbasketType.GROUP); @@ -399,7 +399,7 @@ public class TaskServiceImplIntExplicitTest { createWorkbasketWithSecurity(destinationWB, destinationWB.getOwner(), false, true, true, true); // Classification required for Task - classification = (ClassificationImpl) classificationService.newClassification("domain", "KEY", "t1"); + classification = (ClassificationImpl) classificationService.newClassification("KEY", "domain", "t1"); classification.setCategory("Test Classification"); classification.setName("Transfert-Task Classification"); classificationService.createClassification(classification); @@ -455,8 +455,8 @@ public class TaskServiceImplIntExplicitTest { classificationService = taskanaEngine.getClassificationService(); workbasketService = taskanaEngine.getWorkbasketService(); - ClassificationImpl classification = (ClassificationImpl) classificationService.newClassification("test-domain", - "KEY", "t1"); + ClassificationImpl classification = (ClassificationImpl) classificationService.newClassification( + "KEY", "test-domain", "t1"); classification.setCategory("Test Classification"); classification.setName("Transfert-Task Classification"); classificationService.createClassification(classification); @@ -532,7 +532,7 @@ public class TaskServiceImplIntExplicitTest { workbasket.setType(WorkbasketType.GROUP); taskanaEngine.getWorkbasketService().createWorkbasket(workbasket); - Classification classification = classificationService.newClassification("novatec", "TEST", "t1"); + Classification classification = classificationService.newClassification("TEST", "novatec", "t1"); taskanaEngine.getClassificationService().createClassification(classification); Task task = taskServiceImpl.newTask(workbasket.getId());