TSK-156 Add workbasketSummary to task. Refactor loading and querying of tasks.

This commit is contained in:
BerndBreier 2018-02-01 15:43:59 +01:00 committed by Holger Hagen
parent 5419132014
commit a9ebb41a29
6 changed files with 230 additions and 263 deletions

View File

@ -409,7 +409,13 @@ public class TaskImpl implements Task {
taskSummary.setAttachmentSummaries(attSummaries);
taskSummary.setBusinessProcessId(this.businessProcessId);
taskSummary.setClaimed(claimed);
taskSummary.setClassificationSummary(classificationSummary);
if (classificationSummary != null) {
taskSummary.setClassificationSummary(classificationSummary);
} else {
ClassificationSummaryImpl aClassificationSummary = new ClassificationSummaryImpl();
aClassificationSummary.setKey(classificationKey);
taskSummary.setClassificationSummary(aClassificationSummary);
}
taskSummary.setCompleted(completed);
taskSummary.setCreated(created);
taskSummary.setCustom1(custom1);
@ -457,6 +463,14 @@ public class TaskImpl implements Task {
this.classificationSummary = classificationSummary;
}
public ClassificationSummaryImpl getClassificationSummaryImpl() {
return (ClassificationSummaryImpl) classificationSummary;
}
public void setClassificationSummaryImpl(ClassificationSummaryImpl classificationSummary) {
this.classificationSummary = classificationSummary;
}
@Override
public Attachment removeAttachment(String attachmentId) {
Attachment result = null;

View File

@ -3,6 +3,7 @@ package pro.taskana.impl;
import java.time.Duration;
import java.time.Instant;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
@ -42,7 +43,6 @@ import pro.taskana.model.ObjectReference;
import pro.taskana.model.TaskState;
import pro.taskana.model.WorkbasketAuthorization;
import pro.taskana.model.mappings.AttachmentMapper;
import pro.taskana.model.mappings.ObjectReferenceMapper;
import pro.taskana.model.mappings.TaskMapper;
import pro.taskana.security.CurrentUserContext;
@ -64,7 +64,7 @@ public class TaskServiceImpl implements TaskService {
private AttachmentMapper attachmentMapper;
public TaskServiceImpl(TaskanaEngine taskanaEngine, TaskMapper taskMapper,
ObjectReferenceMapper objectReferenceMapper, AttachmentMapper attachmentMapper) {
AttachmentMapper attachmentMapper) {
super();
this.taskanaEngine = taskanaEngine;
this.taskanaEngineImpl = (TaskanaEngineImpl) taskanaEngine;
@ -211,22 +211,27 @@ public class TaskServiceImpl implements TaskService {
resultTask = taskMapper.findById(id);
if (resultTask != null) {
List<AttachmentImpl> attachmentImpls = attachmentMapper.findAttachmentsByTaskId(resultTask.getId());
List<Attachment> attachments = addClassificationSummariesToAttachments(resultTask, attachmentImpls);
resultTask.setAttachments(attachments);
Classification classification;
try {
classification = this.classificationService.getClassification(resultTask.getClassificationKey(),
resultTask.getDomain());
} catch (ClassificationNotFoundException e) {
LOGGER.debug(
"getTask(taskId = {}) caught a ClassificationNotFoundException when attemptin to get "
+ "the classification for the task. Throwing a SystemException ",
id);
throw new SystemException(
"TaskService.getTask could not find the classification associated to " + id);
if (attachmentImpls == null) {
attachmentImpls = new ArrayList<>();
}
resultTask.setClassificationSummary(classification.asSummary());
List<ClassificationSummary> classifications;
try {
classifications = findClassificationForTaskImplAndAttachments(resultTask, attachmentImpls);
} catch (NotAuthorizedException e1) {
LOGGER.error(
"ClassificationQuery unexpectedly returned NotauthorizedException. Throwing SystemException ");
throw new SystemException("ClassificationQuery unexpectedly returned NotauthorizedException.");
}
List<Attachment> attachments = addClassificationSummariesToAttachments(resultTask, attachmentImpls,
classifications);
resultTask.setAttachments(attachments);
ClassificationSummary classification = getMatchingClassificationFromList(classifications,
resultTask.getClassificationSummary().getKey(), resultTask.getDomain());
resultTask.setClassificationSummary(classification);
return resultTask;
} else {
LOGGER.warn("Method getTaskById() didn't find task with id {}. Throwing TaskNotFoundException", id);
@ -402,7 +407,6 @@ public class TaskServiceImpl implements TaskService {
attachmentMapper.insert(attachmentImpl);
}
}
}
@Override
@ -436,62 +440,127 @@ public class TaskServiceImpl implements TaskService {
List<TaskSummary> augmentTaskSummariesByContainedSummaries(List<TaskSummaryImpl> taskSummaries)
throws NotAuthorizedException {
LOGGER.debug("entry to augmentTaskSummariesByContainedSummaries()");
List<TaskSummary> result = new ArrayList<>();
if (taskSummaries == null || taskSummaries.isEmpty()) {
return result;
}
addClassificationSummariesToTaskSummaries(taskSummaries);
Set<String> taskIdSet = taskSummaries.stream().map(TaskSummaryImpl::getTaskId).collect(Collectors.toSet());
String[] taskIdArray = taskIdSet.toArray(new String[0]);
LOGGER.debug("augmentTaskSummariesByContainedSummaries() about to query for attachments ");
List<AttachmentSummaryImpl> attachmentSummaries = attachmentMapper
.findAttachmentSummariesByTaskIds(taskIdArray);
List<ClassificationSummary> classifications = findClassificationsForTasksAndAttachments(taskSummaries,
attachmentSummaries);
addClassificationSummariesToTaskSummaries(taskSummaries, classifications);
addWorkbasketSummariesToTaskSummaries(taskSummaries);
addAttachmentSummariesToTaskSummaries(taskSummaries);
addAttachmentSummariesToTaskSummaries(taskSummaries, attachmentSummaries, classifications);
result.addAll(taskSummaries);
LOGGER.debug("exit from to augmentTaskSummariesByContainedSummaries()");
return result;
}
void addClassificationSummariesToTaskSummaries(List<TaskSummaryImpl> tasks) throws NotAuthorizedException {
private void addClassificationSummariesToTaskSummaries(List<TaskSummaryImpl> tasks,
List<ClassificationSummary> classifications) {
if (tasks == null || tasks.isEmpty()) {
return;
}
// calculate parameters for classification query: domains and keys
// use Set to avoid duplicate entries
Set<String> classificationDomainSet = new HashSet<>();
Set<String> classificationKeySet = new HashSet<>();
for (TaskSummaryImpl task : tasks) {
classificationDomainSet.add(task.getDomain());
classificationKeySet.add(task.getClassificationSummary().getKey());
}
String[] classificationDomainArray = classificationDomainSet.toArray(new String[0]);
String[] classificationKeyArray = classificationKeySet.toArray(new String[0]);
// perform classification query
List<ClassificationSummary> classifications = this.classificationService.createClassificationQuery()
.domain(classificationDomainArray)
.key(classificationKeyArray)
.list();
// assign query results to appropriate tasks.
for (TaskSummaryImpl task : tasks) {
String taskClassKey = task.getClassificationSummary().getKey();
String taskDomain = task.getDomain();
// find the appropriate classification from the query result
ClassificationSummary aClassification = classifications.stream()
.filter(x -> taskClassKey != null && taskClassKey.equals(x.getKey()) && taskDomain != null
&& taskDomain.equals(x.getDomain()))
.findFirst()
.orElse(null);
if (aClassification == null) {
LOGGER.error("Could not find a Classification for task {}.", task.getTaskId());
throw new SystemException("Could not find a Classification for task " + task.getTaskId());
}
ClassificationSummary aClassification = getMatchingClassificationFromList(classifications,
task.getClassificationSummary().getKey(),
task.getDomain());
// set the classification on the task object
task.setClassificationSummary(aClassification);
}
}
private ClassificationSummary getMatchingClassificationFromList(List<ClassificationSummary> classifications,
String taskClassKey, String taskDomain) {
ClassificationSummary aClassification = classifications.stream()
.filter(x -> taskClassKey != null && taskClassKey.equals(x.getKey()) && taskDomain != null
&& taskDomain.equals(x.getDomain()))
.findFirst()
.orElse(null);
if (aClassification == null) {
// search in "" domain
aClassification = classifications.stream()
.filter(x -> taskClassKey != null && taskClassKey.equals(x.getKey()) && "".equals(x.getDomain()))
.findFirst()
.orElse(null);
if (aClassification == null) {
LOGGER.error("Could not find a Classification for task ");
throw new SystemException("Could not find a Classification for task ");
}
}
return aClassification;
}
private List<ClassificationSummary> findClassificationsForTasksAndAttachments(
List<TaskSummaryImpl> taskSummaries, List<AttachmentSummaryImpl> attachmentSummaries)
throws NotAuthorizedException {
LOGGER.debug("entry to getClassificationsForTasksAndAttachments()");
if (taskSummaries == null || taskSummaries.isEmpty()) {
return new ArrayList<>();
}
Set<String> classificationDomainSet = taskSummaries.stream().map(TaskSummaryImpl::getDomain).collect(
Collectors.toSet());
// add "" domain in case the classification exists only there (fallback for tasks)
classificationDomainSet.add("");
Set<String> classificationKeySet = taskSummaries.stream()
.map(t -> t.getClassificationSummary().getKey())
.collect(Collectors.toSet());
if (attachmentSummaries != null && !attachmentSummaries.isEmpty()) {
Set<String> classificationKeysFromAttachments = attachmentSummaries.stream()
.map(t -> t.getClassificationSummary().getKey())
.collect(Collectors.toSet());
classificationKeySet.addAll(classificationKeysFromAttachments);
}
return queryClassificationsForTasksAndAttachments(classificationDomainSet, classificationKeySet);
}
private List<ClassificationSummary> findClassificationForTaskImplAndAttachments(TaskImpl task,
List<AttachmentImpl> attachmentImpls) throws NotAuthorizedException {
Set<String> classificationDomainSet = new HashSet<>(Arrays.asList(task.getDomain(), ""));
Set<String> classificationKeySet = new HashSet<>(Arrays.asList(task.getClassificationKey()));
if (attachmentImpls != null && !attachmentImpls.isEmpty()) {
Set<String> classificationKeysFromAttachments = attachmentImpls.stream()
.map(t -> t.getClassificationSummary().getKey())
.collect(Collectors.toSet());
classificationKeySet.addAll(classificationKeysFromAttachments);
}
return queryClassificationsForTasksAndAttachments(classificationDomainSet, classificationKeySet);
}
private List<ClassificationSummary> queryClassificationsForTasksAndAttachments(Set<String> classificationDomainSet,
Set<String> classificationKeySet) throws NotAuthorizedException {
String[] classificationDomainArray = classificationDomainSet.toArray(new String[0]);
String[] classificationKeyArray = classificationKeySet.toArray(new String[0]);
LOGGER.debug("getClassificationsForTasksAndAttachments() about to query classifications and exit");
// perform classification query
return this.classificationService.createClassificationQuery()
.domain(classificationDomainArray)
.key(classificationKeyArray)
.list();
}
private void addWorkbasketSummariesToTaskSummaries(List<TaskSummaryImpl> taskSummaries)
throws NotAuthorizedException {
LOGGER.debug("entry to addWorkbasketSummariesToTaskSummaries()");
if (taskSummaries == null || taskSummaries.isEmpty()) {
return;
}
@ -500,6 +569,7 @@ public class TaskServiceImpl implements TaskService {
Collectors.toSet());
String[] workbasketKeyArray = workbasketKeySet.toArray(new String[0]);
// perform workbasket query
LOGGER.debug("addWorkbasketSummariesToTaskSummaries() about to query workbaskets");
List<WorkbasketSummary> workbaskets = this.workbasketService.createWorkbasketQuery()
.keyIn(workbasketKeyArray)
.list();
@ -519,24 +589,20 @@ public class TaskServiceImpl implements TaskService {
// set the classification on the task object
task.setWorkbasketSummary(aWorkbasket);
}
LOGGER.debug("exit from addWorkbasketSummariesToTaskSummaries()");
}
private void addAttachmentSummariesToTaskSummaries(List<TaskSummaryImpl> taskSummaries)
throws NotAuthorizedException {
private void addAttachmentSummariesToTaskSummaries(List<TaskSummaryImpl> taskSummaries,
List<AttachmentSummaryImpl> attachmentSummaries, List<ClassificationSummary> classifications) {
if (taskSummaries == null || taskSummaries.isEmpty()) {
return;
}
Set<String> taskIdSet = taskSummaries.stream().map(TaskSummaryImpl::getTaskId).collect(Collectors.toSet());
String[] taskIdArray = taskIdSet.toArray(new String[0]);
List<AttachmentSummaryImpl> attachmentSummaries = attachmentMapper
.findAttachmentSummariesByTaskIds(taskIdArray);
// augment attachment summaries by classification summaries
// Note:
// the mapper sets for each Attachment summary the property classificationSummary.key from the
// CLASSIFICATION_KEY property in the DB
// augment attachment summaries by classification summaries
addClassificationSummariesToAttachmentSummaries(attachmentSummaries, taskSummaries);
addClassificationSummariesToAttachmentSummaries(attachmentSummaries, taskSummaries, classifications);
// assign attachment summaries to task summaries
for (TaskSummaryImpl task : taskSummaries) {
for (AttachmentSummaryImpl attachment : attachmentSummaries) {
@ -549,26 +615,12 @@ public class TaskServiceImpl implements TaskService {
}
private void addClassificationSummariesToAttachmentSummaries(List<AttachmentSummaryImpl> attachmentSummaries,
List<TaskSummaryImpl> taskSummaries) throws NotAuthorizedException {
List<TaskSummaryImpl> taskSummaries, List<ClassificationSummary> classifications) {
// prereq: in each attachmentSummary, the classificationSummary.key property is set.
if (attachmentSummaries == null || attachmentSummaries.isEmpty() || taskSummaries == null
|| taskSummaries.isEmpty()) {
return;
}
Set<String> classificationDomainSet = taskSummaries.stream().map(TaskSummaryImpl::getDomain).collect(
Collectors.toSet());
Set<String> classificationKeySet = attachmentSummaries.stream()
.map(t -> t.getClassificationSummary().getKey())
.collect(
Collectors.toSet());
String[] classificationDomainArray = classificationDomainSet.toArray(new String[0]);
String[] classificationKeyArray = classificationKeySet.toArray(new String[0]);
// perform classification query
List<ClassificationSummary> classifications = this.classificationService.createClassificationQuery()
.domain(classificationDomainArray)
.key(classificationKeyArray)
.list();
// iterate over all attachment summaries an add the appropriate classification summary to each
for (AttachmentSummaryImpl att : attachmentSummaries) {
// find the associated task to use the correct domain
@ -596,29 +648,12 @@ public class TaskServiceImpl implements TaskService {
}
private List<Attachment> addClassificationSummariesToAttachments(TaskImpl task,
List<AttachmentImpl> attachmentImpls) {
List<AttachmentImpl> attachmentImpls, List<ClassificationSummary> classifications) {
if (attachmentImpls == null || attachmentImpls.isEmpty()) {
return null;
return new ArrayList<>();
}
List<Attachment> result = new ArrayList<>();
Set<String> classificationKeySet = attachmentImpls.stream()
.map(t -> t.getClassificationSummary().getKey())
.collect(
Collectors.toSet());
String[] classificationKeyArray = classificationKeySet.toArray(new String[0]);
// perform classification query
List<ClassificationSummary> classifications;
try {
classifications = this.classificationService.createClassificationQuery()
.domain(task.getDomain())
.key(classificationKeyArray)
.list();
} catch (NotAuthorizedException e) {
LOGGER.error("ClassificationQuery unexpectedly returned NotauthorizedException. Throwing SystemException ");
throw new SystemException("ClassificationQuery unexpectedly returned NotauthorizedException.");
}
// iterate over all attachment summaries an add the appropriate classification summary to each
for (AttachmentImpl att : attachmentImpls) {
// find the associated task to use the correct domain
String domain = task.getDomain();
@ -716,6 +751,13 @@ public class TaskServiceImpl implements TaskService {
newTaskImpl.setBusinessProcessId(oldTaskImpl.getBusinessProcessId());
}
updateClassificationRelatedProperties(oldTaskImpl, newTaskImpl);
newTaskImpl.setModified(Instant.now());
}
private void updateClassificationRelatedProperties(TaskImpl oldTaskImpl, TaskImpl newTaskImpl)
throws WorkbasketNotFoundException, NotAuthorizedException, ClassificationNotFoundException {
// insert Classification specifications if Classification is given.
ClassificationSummary oldClassificationSummary = oldTaskImpl.getClassificationSummary();
ClassificationSummary newClassificationSummary = oldClassificationSummary;
@ -751,7 +793,6 @@ public class TaskServiceImpl implements TaskService {
newTaskImpl.setPriority(newClassification.getPriority());
}
}
newTaskImpl.setModified(Instant.now());
}
private void handleAttachmentsOnTaskUpdate(TaskImpl oldTaskImpl, TaskImpl newTaskImpl)

View File

@ -63,7 +63,7 @@ public class TaskanaEngineImpl implements TaskanaEngine {
public TaskService getTaskService() {
SqlSession session = this.sessionManager;
return new TaskServiceImpl(this, session.getMapper(TaskMapper.class),
session.getMapper(ObjectReferenceMapper.class), session.getMapper(AttachmentMapper.class));
session.getMapper(AttachmentMapper.class));
}
@Override

View File

@ -1,138 +0,0 @@
package pro.taskana.model;
/**
* This entity contains the most important information about a workbasket.
*
* @author bbr
*/
public class WorkbasketSummary {
private String id;
private String key;
private String name;
private String description;
private String owner;
private String domain;
private WorkbasketType type;
private String orgLevel1;
private String orgLevel2;
private String orgLevel3;
private String orgLevel4;
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getKey() {
return key;
}
public void setKey(String key) {
this.key = key;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getDescription() {
return description;
}
public void setDescription(String description) {
this.description = description;
}
public String getOwner() {
return owner;
}
public void setOwner(String owner) {
this.owner = owner;
}
public String getDomain() {
return domain;
}
public void setDomain(String domain) {
this.domain = domain;
}
public WorkbasketType getType() {
return type;
}
public void setType(WorkbasketType type) {
this.type = type;
}
public String getOrgLevel1() {
return orgLevel1;
}
public void setOrgLevel1(String orgLevel1) {
this.orgLevel1 = orgLevel1;
}
public String getOrgLevel2() {
return orgLevel2;
}
public void setOrgLevel2(String orgLevel2) {
this.orgLevel2 = orgLevel2;
}
public String getOrgLevel3() {
return orgLevel3;
}
public void setOrgLevel3(String orgLevel3) {
this.orgLevel3 = orgLevel3;
}
public String getOrgLevel4() {
return orgLevel4;
}
public void setOrgLevel4(String orgLevel4) {
this.orgLevel4 = orgLevel4;
}
@Override
public String toString() {
StringBuilder builder = new StringBuilder();
builder.append("WorkbasketSummary [id=");
builder.append(id);
builder.append(", key=");
builder.append(key);
builder.append(", name=");
builder.append(name);
builder.append(", description=");
builder.append(description);
builder.append(", owner=");
builder.append(owner);
builder.append(", domain=");
builder.append(domain);
builder.append(", type=");
builder.append(type);
builder.append(", orgLevel1=");
builder.append(orgLevel1);
builder.append(", orgLevel2=");
builder.append(orgLevel2);
builder.append(", orgLevel3=");
builder.append(orgLevel3);
builder.append(", orgLevel4=");
builder.append(orgLevel4);
builder.append("]");
return builder.toString();
}
}

View File

@ -50,6 +50,7 @@ public interface TaskMapper {
@Result(property = "workbasketSummary", column = "WORKBASKET_KEY", javaType = WorkbasketSummaryImpl.class,
one = @One(select = WORKBASKET_FINDSUMMARYBYKEY)),
@Result(property = "classificationKey", column = "CLASSIFICATION_KEY"),
@Result(property = "classificationSummaryImpl.key", column = "CLASSIFICATION_KEY"),
@Result(property = "domain", column = "DOMAIN"),
@Result(property = "businessProcessId", column = "BUSINESS_PROCESS_ID"),
@Result(property = "parentBusinessProcessId", column = "PARENT_BUSINESS_PROCESS_ID"),
@ -105,7 +106,7 @@ public interface TaskMapper {
@Result(property = "priority", column = "PRIORITY"),
@Result(property = "state", column = "STATE"),
@Result(property = "workbasketKey", column = "WORKBASKET_KEY"),
@Result(property = "classificationSummaryImpl.Key", column = "CLASSIFICATION_KEY"),
@Result(property = "classificationSummaryImpl.key", column = "CLASSIFICATION_KEY"),
@Result(property = "workbasketSummaryImpl.key", column = "WORKBASKET_KEY"),
@Result(property = "domain", column = "DOMAIN"),
@Result(property = "businessProcessId", column = "BUSINESS_PROCESS_ID"),
@ -127,7 +128,7 @@ public interface TaskMapper {
@Result(property = "custom7", column = "CUSTOM_7"),
@Result(property = "custom8", column = "CUSTOM_8"),
@Result(property = "custom9", column = "CUSTOM_9"),
@Result(property = "custom10", column = "CUSTOM_10") })
@Result(property = "custom10", column = "CUSTOM_10")})
List<TaskSummaryImpl> findTasksByWorkbasketIdAndState(@Param("workbasketKey") String workbasketKey,
@Param("taskState") TaskState taskState);
@ -168,6 +169,6 @@ public interface TaskMapper {
@Result(property = "custom7", column = "CUSTOM_7"),
@Result(property = "custom8", column = "CUSTOM_8"),
@Result(property = "custom9", column = "CUSTOM_9"),
@Result(property = "custom10", column = "CUSTOM_10") })
@Result(property = "custom10", column = "CUSTOM_10")})
List<TaskSummaryImpl> findTaskSummariesByWorkbasketKey(@Param("workbasketKey") String workbasketKey);
}

View File

@ -22,7 +22,6 @@ import java.util.List;
import org.apache.ibatis.exceptions.PersistenceException;
import org.apache.ibatis.session.SqlSession;
import org.junit.Before;
import org.junit.Ignore;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.mockito.InjectMocks;
@ -106,6 +105,9 @@ public class TaskServiceImplTest {
@Mock
private ClassificationQueryImpl classificationQueryImplMock;
@Mock
private WorkbasketQueryImpl workbasketQueryImplMock;
@Mock
private SqlSession sqlSessionMock;
@ -417,16 +419,21 @@ public class TaskServiceImplTest {
classificationServiceImplMock)
.getClassification(dummyClassification.getKey(), dummyClassification.getDomain());
List<ClassificationSummaryImpl> classificationList = Arrays
.asList((ClassificationSummaryImpl) dummyClassification.asSummary());
doReturn(classificationList).when(
classificationQueryImplMock)
.list();
// Mockito.doReturn(expectedOwner).when(currentUserContext).getUserid();
Task acturalTask = cut.claim(expectedTask.getId(), true);
verify(taskanaEngineImpl, times(2)).openConnection();
verify(taskMapperMock, times(1)).findById(expectedTask.getId());
verify(attachmentMapperMock, times(1)).findAttachmentsByTaskId(expectedTask.getId());
verify(classificationServiceImplMock, times(1)).getClassification(any(), any());
verify(classificationQueryImplMock, times(0)).domain(any());
verify(classificationQueryImplMock, times(0)).key(any());
verify(classificationQueryImplMock, times(0)).list();
verify(classificationQueryImplMock, times(1)).domain(any());
verify(classificationQueryImplMock, times(1)).key(any());
verify(classificationQueryImplMock, times(1)).list();
verify(taskMapperMock, times(1)).update(any());
verify(taskanaEngineImpl, times(2)).returnConnection();
verifyNoMoreInteractions(attachmentMapperMock, taskanaEngineConfigurationMock, taskanaEngineMock,
@ -478,19 +485,21 @@ public class TaskServiceImplTest {
doReturn(classificationQueryImplMock).when(classificationQueryImplMock).domain(any());
doReturn(classificationQueryImplMock).when(classificationQueryImplMock).key(any());
doReturn(new ArrayList<>()).when(classificationQueryImplMock).list();
doReturn(dummyClassification).when(
classificationServiceImplMock)
.getClassification(dummyClassification.getKey(), dummyClassification.getDomain());
List<ClassificationSummaryImpl> classificationList = Arrays
.asList((ClassificationSummaryImpl) dummyClassification.asSummary());
doReturn(classificationList).when(
classificationQueryImplMock)
.list();
Task actualTask = cut.completeTask(task.getId());
verify(taskanaEngineImpl, times(2)).openConnection();
verify(taskMapperMock, times(1)).findById(task.getId());
verify(attachmentMapperMock, times(1)).findAttachmentsByTaskId(task.getId());
verify(classificationServiceImplMock, times(0)).createClassificationQuery();
verify(classificationQueryImplMock, times(0)).domain(any());
verify(classificationQueryImplMock, times(0)).key(any());
verify(classificationQueryImplMock, times(0)).list();
verify(classificationServiceImplMock, times(1)).createClassificationQuery();
verify(classificationQueryImplMock, times(1)).domain(any());
verify(classificationQueryImplMock, times(1)).key(any());
verify(classificationQueryImplMock, times(1)).list();
verify(taskMapperMock, times(1)).update(any());
verify(taskanaEngineImpl, times(2)).returnConnection();
verifyNoMoreInteractions(attachmentMapperMock, taskanaEngineConfigurationMock, taskanaEngineMock,
@ -906,18 +915,20 @@ public class TaskServiceImplTest {
doReturn(classificationQueryImplMock).when(classificationQueryImplMock).key(any());
doReturn(new ArrayList<>()).when(classificationQueryImplMock).list();
doReturn(dummyClassification).when(
classificationServiceImplMock)
.getClassification(dummyClassification.getKey(), dummyClassification.getDomain());
List<ClassificationSummaryImpl> classificationList = Arrays
.asList((ClassificationSummaryImpl) dummyClassification.asSummary());
doReturn(classificationList).when(
classificationQueryImplMock)
.list();
Task actualTask = cut.getTask(expectedTask.getId());
verify(taskanaEngineImpl, times(1)).openConnection();
verify(taskMapperMock, times(1)).findById(expectedTask.getId());
verify(attachmentMapperMock, times(1)).findAttachmentsByTaskId(expectedTask.getId());
verify(classificationServiceImplMock, times(0)).createClassificationQuery();
verify(classificationQueryImplMock, times(0)).domain(any());
verify(classificationQueryImplMock, times(0)).key(any());
verify(classificationQueryImplMock, times(0)).list();
verify(classificationServiceImplMock, times(1)).createClassificationQuery();
verify(classificationQueryImplMock, times(1)).domain(any());
verify(classificationQueryImplMock, times(1)).key(any());
verify(classificationQueryImplMock, times(1)).list();
verify(taskanaEngineImpl, times(1)).returnConnection();
verifyNoMoreInteractions(attachmentMapperMock, taskanaEngineConfigurationMock, taskanaEngineMock,
taskanaEngineImpl, taskMapperMock, objectReferenceMapperMock, workbasketServiceMock, sqlSessionMock,
@ -970,25 +981,63 @@ public class TaskServiceImplTest {
assertThat(actualResultList, equalTo(expectedResultList));
}
@Ignore
@Test
public void testGetTaskSummariesByWorkbasketIdGettingResults()
throws WorkbasketNotFoundException, InvalidWorkbasketException, NotAuthorizedException {
String workbasketKey = "1";
List<TaskSummaryImpl> expectedResultList = Arrays.asList(new TaskSummaryImpl(), new TaskSummaryImpl());
WorkbasketSummaryImpl wbs = new WorkbasketSummaryImpl();
wbs.setDomain("domain");
wbs.setKey("key");
ClassificationSummaryImpl cl = new ClassificationSummaryImpl();
cl.setDomain("domain");
cl.setKey("clKey");
TaskSummaryImpl t1 = new TaskSummaryImpl();
t1.setWorkbasketSummary(wbs);
t1.setDomain("domain");
t1.setClassificationSummary(cl);
t1.setTaskId("007");
TaskSummaryImpl t2 = new TaskSummaryImpl();
t2.setWorkbasketSummary(wbs);
t2.setDomain("domain");
t2.setClassificationSummary(cl);
t2.setTaskId("008");
List<TaskSummaryImpl> expectedResultList = Arrays.asList(t1, t2);
List<ClassificationSummaryImpl> expectedClassifications = Arrays.asList(cl);
List<WorkbasketSummaryImpl> expectedWorkbaskets = Arrays.asList(wbs);
doNothing().when(taskanaEngineImpl).openConnection();
doNothing().when(taskanaEngineImpl).returnConnection();
doReturn(new WorkbasketImpl()).when(workbasketServiceMock).getWorkbasketByKey(any());
doReturn(expectedResultList).when(taskMapperMock).findTaskSummariesByWorkbasketKey(workbasketKey);
doReturn(classificationQueryImplMock).when(classificationServiceImplMock).createClassificationQuery();
doReturn(classificationQueryImplMock).when(classificationQueryImplMock).key(any());
doReturn(classificationQueryImplMock).when(classificationQueryImplMock).domain(any());
doReturn(workbasketQueryImplMock).when(workbasketServiceMock).createWorkbasketQuery();
doReturn(workbasketQueryImplMock).when(workbasketQueryImplMock).keyIn(any());
doReturn(expectedWorkbaskets).when(workbasketQueryImplMock).list();
doReturn(expectedClassifications).when(classificationQueryImplMock).list();
List<TaskSummary> actualResultList = cut.getTaskSummariesByWorkbasketKey(workbasketKey);
verify(taskanaEngineImpl, times(1)).openConnection();
verify(taskMapperMock, times(1)).findTaskSummariesByWorkbasketKey(workbasketKey);
verify(workbasketServiceMock, times(1)).getWorkbasketByKey(workbasketKey);
verify(classificationServiceImplMock, times(1)).createClassificationQuery();
verify(classificationQueryImplMock, times(1)).domain(any());
verify(classificationQueryImplMock, times(1)).key(any());
verify(classificationQueryImplMock, times(1)).list();
verify(workbasketServiceMock, times(1)).createWorkbasketQuery();
verify(workbasketQueryImplMock, times(1)).keyIn(any());
verify(workbasketQueryImplMock, times(1)).list();
verify(taskanaEngineImpl, times(1)).returnConnection();
verify(attachmentMapperMock, times(1)).findAttachmentSummariesByTaskIds(any());
verifyNoMoreInteractions(attachmentMapperMock, taskanaEngineConfigurationMock, taskanaEngineMock,
taskanaEngineImpl, taskMapperMock, objectReferenceMapperMock, workbasketServiceMock, sqlSessionMock,
classificationQueryImplMock);
taskanaEngineImpl, taskMapperMock, objectReferenceMapperMock, workbasketServiceMock,
workbasketQueryImplMock,
sqlSessionMock, classificationQueryImplMock);
assertThat(actualResultList, equalTo(expectedResultList));
assertThat(actualResultList.size(), equalTo(expectedResultList.size()));
}