TSK-302: removed classificationTree

This commit is contained in:
Mustapha Zorgati 2018-02-19 15:37:23 +01:00 committed by Holger Hagen
parent 9258f9cef0
commit f51174668b
7 changed files with 41 additions and 134 deletions

View File

@ -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<ClassificationSummary> getClassificationTree();
/**
* Get all ClassificationSummaries with the given key. Returns also older and domain-specific versions of the

View File

@ -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<ClassificationSummary> getClassificationTree() {
LOGGER.debug("entry to getClassificationTree()");
List<ClassificationSummary> 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<ClassificationSummary> populateChildClassifications(
List<ClassificationSummary> classificationSumamries)
throws NotAuthorizedException {
try {
taskanaEngineImpl.openConnection();
List<ClassificationSummary> children = new ArrayList<>();
for (ClassificationSummary classification : classificationSumamries) {
List<ClassificationSummary> 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 {

View File

@ -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<ClassificationSummary> classificationSummaryList = classificationService.getClassificationTree();
List<ClassificationSummary> 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);
}
}

View File

@ -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<Classification> classifications = new ArrayList<>();
doReturn(classificationQueryImplMock).when(cutSpy).createClassificationQuery();
doReturn(classificationQueryImplMock).when(classificationQueryImplMock).parentIdIn("");
doReturn(classifications).when(classificationQueryImplMock).list();
List<ClassificationSummary> 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 {

View File

@ -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<ClassificationSummary> allClassifications = classificationService.getClassificationTree();
List<ClassificationSummary> 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();

View File

@ -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<ClassificationSummary> allClassifications = classificationService.getClassificationTree();
List<ClassificationSummary> 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++;

View File

@ -29,7 +29,7 @@ public class ClassificationController {
@RequestMapping(method = RequestMethod.GET)
public ResponseEntity<List<ClassificationSummary>> getClassifications() {
try {
List<ClassificationSummary> classificationTree = classificationService.getClassificationTree();
List<ClassificationSummary> classificationTree = classificationService.createClassificationQuery().list();
return ResponseEntity.status(HttpStatus.OK).body(classificationTree);
} catch (Exception e) {
return ResponseEntity.status(HttpStatus.FORBIDDEN).build();