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 d331016c6..fe2eb8c97 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/ClassificationService.java +++ b/lib/taskana-core/src/main/java/pro/taskana/ClassificationService.java @@ -12,12 +12,6 @@ import pro.taskana.exceptions.NotAuthorizedException; */ public interface ClassificationService { - /** - * Get all available Classification summaries as a tree. - * - * @return The List of all Classification summaries - */ - List getClassificationTree(); /** * Get all ClassificationSummaries with the given key. Returns also older and domain-specific versions of the 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 c151f0a22..c95a57dbb 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 @@ -37,58 +37,13 @@ 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; this.taskMapper = taskMapper; } - @Override - public List getClassificationTree() { - LOGGER.debug("entry to getClassificationTree()"); - List rootClassificationSumamries = null; - try { - taskanaEngineImpl.openConnection(); - rootClassificationSumamries = this.createClassificationQuery() - .parentIdIn("") - .list(); - rootClassificationSumamries = this.populateChildClassifications(rootClassificationSumamries); - return rootClassificationSumamries; - } catch (NotAuthorizedException ex) { - LOGGER.debug("getClassificationTree() caught NotAuthorizedException. Throwing SystemException"); - throw new SystemException( - "ClassificationService.getClassificationTree caught unexpected NotAuthorizedException"); - } finally { - taskanaEngineImpl.returnConnection(); - if (LOGGER.isDebugEnabled()) { - int numberOfResultObjects = rootClassificationSumamries == null ? 0 - : rootClassificationSumamries.size(); - LOGGER.debug("exit from getClassificationTree(). Returning {} resulting Objects: {} ", - numberOfResultObjects, LoggerUtils.listToString(rootClassificationSumamries)); - } - } - } - - private List populateChildClassifications( - List classificationSumamries) - throws NotAuthorizedException { - try { - taskanaEngineImpl.openConnection(); - List children = new ArrayList<>(); - for (ClassificationSummary classification : classificationSumamries) { - List childClassifications = this.createClassificationQuery() - .parentIdIn(classification.getId()) - .list(); - children.addAll(populateChildClassifications(childClassifications)); - } - classificationSumamries.addAll(children); - return classificationSumamries; - } finally { - taskanaEngineImpl.returnConnection(); - } - } - @Override public Classification createClassification(Classification classification) throws ClassificationAlreadyExistException { 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 1d19662b7..9f16d6be0 100644 --- a/lib/taskana-core/src/test/java/acceptance/classification/GetClassificationAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/classification/GetClassificationAccTest.java @@ -1,6 +1,5 @@ package acceptance.classification; -import java.sql.SQLException; import java.util.List; import org.h2.store.fs.FileUtils; @@ -13,8 +12,6 @@ import pro.taskana.Classification; import pro.taskana.ClassificationService; import pro.taskana.ClassificationSummary; import pro.taskana.exceptions.ClassificationNotFoundException; -import pro.taskana.exceptions.InvalidArgumentException; -import pro.taskana.exceptions.NotAuthorizedException; /** * Acceptance test for all "get classification" scenarios. @@ -25,16 +22,20 @@ public class GetClassificationAccTest extends AbstractAccTest { super(); } + @AfterClass + public static void cleanUpClass() { + FileUtils.deleteRecursive("~/data", true); + } + @Test - public void testFindAllClassifications() - throws SQLException, ClassificationNotFoundException, NotAuthorizedException, InvalidArgumentException { + public void testFindAllClassifications() { ClassificationService classificationService = taskanaEngine.getClassificationService(); - List classificationSummaryList = classificationService.getClassificationTree(); + List classificationSummaryList = classificationService.createClassificationQuery().list(); Assert.assertNotNull(classificationSummaryList); } @Test - public void testGetOneClassificationForDomain() throws SQLException, ClassificationNotFoundException { + public void testGetOneClassificationForDomain() throws ClassificationNotFoundException { ClassificationService classificationService = taskanaEngine.getClassificationService(); Classification classification = classificationService.getClassification("T6310", "DOMAIN_A"); Assert.assertNotNull(classification); @@ -42,7 +43,7 @@ public class GetClassificationAccTest extends AbstractAccTest { @Test public void testGetOneClassificationForDomainAndGetClassificationFromRootDomain() - throws SQLException, ClassificationNotFoundException { + throws ClassificationNotFoundException { ClassificationService classificationService = taskanaEngine.getClassificationService(); Classification classification = classificationService.getClassification("L10000", "DOMAIN_B"); Assert.assertNotNull(classification); @@ -51,16 +52,11 @@ public class GetClassificationAccTest extends AbstractAccTest { } @Test - public void testGetOneClassificationForRootDomain() throws SQLException, ClassificationNotFoundException { + public void testGetOneClassificationForRootDomain() throws ClassificationNotFoundException { ClassificationService classificationService = taskanaEngine.getClassificationService(); Classification classification = classificationService.getClassification("L10000", ""); Assert.assertNotNull(classification); Assert.assertEquals("", classification.getDomain()); Assert.assertEquals(999L, classification.getPriority()); } - - @AfterClass - public static void cleanUpClass() { - FileUtils.deleteRecursive("~/data", true); - } } diff --git a/lib/taskana-core/src/test/java/pro/taskana/impl/ClassificationServiceImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/impl/ClassificationServiceImplTest.java index 700c89a57..c045847b8 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/impl/ClassificationServiceImplTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/impl/ClassificationServiceImplTest.java @@ -13,7 +13,6 @@ import static org.mockito.Mockito.verifyNoMoreInteractions; import java.time.Instant; import java.time.LocalDate; -import java.util.ArrayList; import java.util.Arrays; import java.util.List; @@ -29,7 +28,6 @@ import pro.taskana.Classification; import pro.taskana.ClassificationSummary; import pro.taskana.exceptions.ClassificationAlreadyExistException; import pro.taskana.exceptions.ClassificationNotFoundException; -import pro.taskana.exceptions.InvalidArgumentException; import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.mappings.ClassificationMapper; @@ -62,24 +60,6 @@ public class ClassificationServiceImplTest { doNothing().when(taskanaEngineImplMock).returnConnection(); } - @Test - public void testGetClassificationTree() throws NotAuthorizedException, InvalidArgumentException { - List classifications = new ArrayList<>(); - - doReturn(classificationQueryImplMock).when(cutSpy).createClassificationQuery(); - doReturn(classificationQueryImplMock).when(classificationQueryImplMock).parentIdIn(""); - doReturn(classifications).when(classificationQueryImplMock).list(); - - List actaulResults = cutSpy.getClassificationTree(); - - verify(taskanaEngineImplMock, times(2)).openConnection(); - verify(cutSpy, times(1)).createClassificationQuery(); - verify(classificationQueryImplMock, times(1)).parentIdIn(""); - verify(classificationQueryImplMock, times(1)).list(); - verify(taskanaEngineImplMock, times(2)).returnConnection(); - assertThat(actaulResults, equalTo(classifications)); - } - @Test(expected = ClassificationAlreadyExistException.class) public void testCreateClassificationAlreadyExisting() throws ClassificationAlreadyExistException, ClassificationNotFoundException { 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 09e61b5c5..ff6207f83 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 @@ -48,14 +48,13 @@ import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; */ public class ClassificationServiceImplIntAutoCommitTest { + private static final String ID_PREFIX_CLASSIFICATION = "CLI"; static int counter = 0; - private DataSource dataSource; private ClassificationService classificationService; private TaskanaEngineConfiguration taskanaEngineConfiguration; private TaskanaEngine taskanaEngine; private TaskanaEngineImpl taskanaEngineImpl; - private static final String ID_PREFIX_CLASSIFICATION = "CLI"; @BeforeClass public static void resetDb() throws SQLException { @@ -64,6 +63,11 @@ public class ClassificationServiceImplIntAutoCommitTest { cleaner.clearDb(ds, true); } + @AfterClass + public static void cleanUpClass() { + FileUtils.deleteRecursive("~/data", true); + } + @Before public void setup() throws FileNotFoundException, SQLException, LoginException { dataSource = TaskanaEngineConfigurationTest.getDataSource(); @@ -154,9 +158,7 @@ public class ClassificationServiceImplIntAutoCommitTest { } @Test - public void testFindAllClassifications() - throws NotAuthorizedException, ClassificationAlreadyExistException, ClassificationNotFoundException, - InvalidArgumentException { + public void testFindAllClassifications() throws ClassificationAlreadyExistException { Classification classification0 = this.createDummyClassificationWithUniqueKey("", "type1"); classificationService.createClassification(classification0); Classification classification1 = this.createDummyClassificationWithUniqueKey("", "type1"); @@ -165,7 +167,7 @@ public class ClassificationServiceImplIntAutoCommitTest { classification2.setParentId(classification0.getId()); classificationService.createClassification(classification2); - Assert.assertEquals(2 + 1, classificationService.getClassificationTree().size()); + Assert.assertEquals(2 + 1, classificationService.createClassificationQuery().list().size()); } @Test @@ -215,14 +217,12 @@ public class ClassificationServiceImplIntAutoCommitTest { .list(); Assert.assertEquals(1, list.size()); - List allClassifications = classificationService.getClassificationTree(); + List allClassifications = classificationService.createClassificationQuery().list(); Assert.assertEquals(1, allClassifications.size()); } @Test - public void testFindWithClassificationMapperDomainAndCategory() - throws NotAuthorizedException, ClassificationAlreadyExistException, ClassificationNotFoundException, - InvalidArgumentException { + public void testFindWithClassificationMapperDomainAndCategory() throws ClassificationAlreadyExistException { Classification classification1 = this.createDummyClassificationWithUniqueKey("domain1", "type1"); classification1.setCategory("category1"); classificationService.createClassification(classification1); @@ -243,9 +243,7 @@ public class ClassificationServiceImplIntAutoCommitTest { } @Test - public void testFindWithClassificationMapperCustomAndCategory() - throws NotAuthorizedException, ClassificationAlreadyExistException, ClassificationNotFoundException, - InvalidArgumentException { + public void testFindWithClassificationMapperCustomAndCategory() throws ClassificationAlreadyExistException { Classification classification1 = this.createDummyClassificationWithUniqueKey("", "type1"); classification1.setDescription("DESC1"); classification1.setCategory("category1"); @@ -282,8 +280,7 @@ public class ClassificationServiceImplIntAutoCommitTest { @Test public void testFindWithClassificationMapperPriorityTypeAndParent() - throws NotAuthorizedException, ClassificationAlreadyExistException, ClassificationNotFoundException, - NumberFormatException, InvalidArgumentException { + throws ClassificationAlreadyExistException, NumberFormatException { Classification classification = this.createDummyClassificationWithUniqueKey("", "type1"); classification.setPriority(Integer.decode("5")); classificationService.createClassification(classification); @@ -317,8 +314,7 @@ public class ClassificationServiceImplIntAutoCommitTest { @Test public void testFindWithClassificationMapperServiceLevelNameAndDescription() - throws NotAuthorizedException, ClassificationAlreadyExistException, ClassificationNotFoundException, - InvalidArgumentException { + throws ClassificationAlreadyExistException { int all = 0; Classification classification = this.createDummyClassificationWithUniqueKey("", "type1"); classification.setServiceLevel("P1D"); @@ -356,8 +352,7 @@ public class ClassificationServiceImplIntAutoCommitTest { @Test public void testDefaultSettingsWithClassificationMapper() - throws NotAuthorizedException, ClassificationAlreadyExistException, ClassificationNotFoundException, - InvalidArgumentException { + throws NotAuthorizedException, ClassificationAlreadyExistException, ClassificationNotFoundException { Classification classification = this.createDummyClassificationWithUniqueKey("", "type1"); classification = classificationService.createClassification(classification); @@ -393,11 +388,6 @@ public class ClassificationServiceImplIntAutoCommitTest { Assert.assertEquals(2, list.size()); } - @AfterClass - public static void cleanUpClass() { - FileUtils.deleteRecursive("~/data", true); - } - private TimeInterval today() { Instant begin = LocalDateTime.of(LocalDate.now(), LocalTime.MIN).atZone(ZoneId.systemDefault()).toInstant(); Instant end = LocalDateTime.of(LocalDate.now(), LocalTime.MAX).atZone(ZoneId.systemDefault()).toInstant(); 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 2175c423d..c7b6aef2e 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 @@ -6,7 +6,6 @@ import static org.hamcrest.core.StringStartsWith.startsWith; import static org.junit.Assert.assertThat; import static org.junit.Assert.fail; -import java.io.FileNotFoundException; import java.sql.Connection; import java.sql.SQLException; import java.time.Instant; @@ -16,7 +15,6 @@ import java.time.LocalTime; import java.time.ZoneId; import java.util.List; -import javax.security.auth.login.LoginException; import javax.sql.DataSource; import org.h2.store.fs.FileUtils; @@ -51,13 +49,13 @@ import pro.taskana.impl.configuration.TaskanaEngineConfigurationTest; public class ClassificationServiceImplIntExplicitTest { + private static final String ID_PREFIX_CLASSIFICATION = "CLI"; static int counter = 0; private DataSource dataSource; private ClassificationService classificationService; private TaskanaEngineConfiguration taskanaEngineConfiguration; private TaskanaEngine taskanaEngine; private TaskanaEngineImpl taskanaEngineImpl; - private static final String ID_PREFIX_CLASSIFICATION = "CLI"; @BeforeClass public static void resetDb() throws SQLException { @@ -66,8 +64,13 @@ public class ClassificationServiceImplIntExplicitTest { cleaner.clearDb(ds, true); } + @AfterClass + public static void cleanUpClass() { + FileUtils.deleteRecursive("~/data", true); + } + @Before - public void setup() throws FileNotFoundException, SQLException, LoginException { + public void setup() throws SQLException { dataSource = TaskanaEngineConfigurationTest.getDataSource(); taskanaEngineConfiguration = new TaskanaEngineConfiguration(dataSource, false); taskanaEngine = taskanaEngineConfiguration.buildTaskanaEngine(); @@ -165,9 +168,7 @@ public class ClassificationServiceImplIntExplicitTest { } @Test - public void testFindAllClassifications() - throws NotAuthorizedException, SQLException, ClassificationAlreadyExistException, - ClassificationNotFoundException { + public void testFindAllClassifications() throws SQLException, ClassificationAlreadyExistException { Connection connection = dataSource.getConnection(); taskanaEngineImpl.setConnection(connection); Classification classification0 = this.createNewClassificationWithUniqueKey("", "t1"); @@ -178,7 +179,7 @@ public class ClassificationServiceImplIntExplicitTest { classification2.setParentId(classification0.getId()); classificationService.createClassification(classification2); - Assert.assertEquals(2 + 1, classificationService.getClassificationTree().size()); + Assert.assertEquals(2 + 1, classificationService.createClassificationQuery().list().size()); connection.commit(); } @@ -204,8 +205,7 @@ public class ClassificationServiceImplIntExplicitTest { @Test public void testInsertAndClassificationQuery() - throws NotAuthorizedException, SQLException, ClassificationAlreadyExistException, - ClassificationNotFoundException { + throws SQLException, ClassificationAlreadyExistException { Connection connection = dataSource.getConnection(); taskanaEngineImpl.setConnection(connection); Classification classification = this.createNewClassificationWithUniqueKey("", "t1"); @@ -219,7 +219,7 @@ public class ClassificationServiceImplIntExplicitTest { @Test public void testUpdateAndClassificationQuery() throws NotAuthorizedException, SQLException, - ClassificationAlreadyExistException, ClassificationNotFoundException, InvalidArgumentException { + ClassificationAlreadyExistException, ClassificationNotFoundException { Connection connection = dataSource.getConnection(); taskanaEngineImpl.setConnection(connection); Classification classification = this.createNewClassificationWithUniqueKey("", "t1"); @@ -241,15 +241,14 @@ public class ClassificationServiceImplIntExplicitTest { .list(); Assert.assertEquals(1, list.size()); - List allClassifications = classificationService.getClassificationTree(); + List allClassifications = classificationService.createClassificationQuery().list(); Assert.assertEquals(1, allClassifications.size()); connection.commit(); } @Test public void testFindWithClassificationMapperDomainAndCategory() - throws NotAuthorizedException, SQLException, ClassificationAlreadyExistException, - ClassificationNotFoundException { + throws SQLException, ClassificationAlreadyExistException { Connection connection = dataSource.getConnection(); taskanaEngineImpl.setConnection(connection); Classification classification1 = this.createNewClassificationWithUniqueKey("domain1", "t1"); @@ -275,8 +274,7 @@ public class ClassificationServiceImplIntExplicitTest { @Test public void testFindWithClassificationMapperCustomAndCategory() - throws NotAuthorizedException, SQLException, ClassificationAlreadyExistException, - ClassificationNotFoundException { + throws SQLException, ClassificationAlreadyExistException { Connection connection = dataSource.getConnection(); taskanaEngineImpl.setConnection(connection); Classification classification1 = this.createNewClassificationWithUniqueKey("", "t1"); @@ -316,8 +314,7 @@ public class ClassificationServiceImplIntExplicitTest { @Test public void testFindWithClassificationMapperPriorityTypeAndParent() - throws NotAuthorizedException, SQLException, ClassificationAlreadyExistException, - ClassificationNotFoundException { + throws SQLException, ClassificationAlreadyExistException { Connection connection = dataSource.getConnection(); taskanaEngineImpl.setConnection(connection); Classification classification = this.createNewClassificationWithUniqueKey("", "type1"); @@ -439,11 +436,6 @@ public class ClassificationServiceImplIntExplicitTest { taskanaEngineImpl.setConnection(null); } - @AfterClass - public static void cleanUpClass() { - FileUtils.deleteRecursive("~/data", true); - } - private Classification createNewClassificationWithUniqueKey(String domain, String type) { Classification classification = classificationService.newClassification(domain, "TEST" + counter, type); counter++; diff --git a/rest/src/main/java/pro/taskana/rest/ClassificationController.java b/rest/src/main/java/pro/taskana/rest/ClassificationController.java index 47eb2f8c9..b8b00203d 100644 --- a/rest/src/main/java/pro/taskana/rest/ClassificationController.java +++ b/rest/src/main/java/pro/taskana/rest/ClassificationController.java @@ -29,7 +29,7 @@ public class ClassificationController { @RequestMapping(method = RequestMethod.GET) public ResponseEntity> getClassifications() { try { - List classificationTree = classificationService.getClassificationTree(); + List classificationTree = classificationService.createClassificationQuery().list(); return ResponseEntity.status(HttpStatus.OK).body(classificationTree); } catch (Exception e) { return ResponseEntity.status(HttpStatus.FORBIDDEN).build();