TSK-1359: added workbasketIds filter for TaskStatusReport
This commit is contained in:
parent
41973183bc
commit
588f34b468
|
@ -48,5 +48,14 @@ public class TaskStatusReport extends Report<TaskQueryItem, TaskStatusColumnHead
|
|||
* @return the Builder
|
||||
*/
|
||||
Builder domainIn(List<String> domains);
|
||||
|
||||
/**
|
||||
* Adds a list of workbasketIds to the builder. The created report contains only tasks from a
|
||||
* workbakset in this list
|
||||
*
|
||||
* @param workbasketIds a list of workbasketIds
|
||||
* @return the Builder
|
||||
*/
|
||||
Builder workbasketIdsIn(List<String> workbasketIds);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -350,6 +350,9 @@ public interface MonitorMapper {
|
|||
+ "<if test='states != null'>"
|
||||
+ "AND STATE IN (<foreach collection='states' item='state' separator=','>#{state}</foreach>) "
|
||||
+ "</if>"
|
||||
+ "<if test='workbasketIds != null'>"
|
||||
+ "AND WORKBASKET_ID IN (<foreach collection='workbasketIds' item='workbasketId' separator=','>#{workbasketId}</foreach>) "
|
||||
+ "</if>"
|
||||
+ "</where>"
|
||||
+ "GROUP BY DOMAIN, STATE"
|
||||
+ "</script>")
|
||||
|
@ -359,7 +362,9 @@ public interface MonitorMapper {
|
|||
@Result(column = "COUNT", property = "count"),
|
||||
})
|
||||
List<TaskQueryItem> getTasksCountByState(
|
||||
@Param("domains") List<String> domains, @Param("states") List<TaskState> states);
|
||||
@Param("domains") List<String> domains,
|
||||
@Param("states") List<TaskState> states,
|
||||
@Param("workbasketIds") List<String> workbasketIds);
|
||||
|
||||
@Select(
|
||||
"<script>"
|
||||
|
|
|
@ -8,6 +8,7 @@ import pro.taskana.common.api.TaskanaRole;
|
|||
import pro.taskana.common.api.exceptions.NotAuthorizedException;
|
||||
import pro.taskana.common.internal.InternalTaskanaEngine;
|
||||
import pro.taskana.monitor.api.reports.TaskStatusReport;
|
||||
import pro.taskana.monitor.api.reports.TaskStatusReport.Builder;
|
||||
import pro.taskana.monitor.api.reports.item.TaskQueryItem;
|
||||
import pro.taskana.monitor.internal.MonitorMapper;
|
||||
import pro.taskana.task.api.TaskState;
|
||||
|
@ -20,6 +21,7 @@ public class TaskStatusReportBuilderImpl implements TaskStatusReport.Builder {
|
|||
private final MonitorMapper monitorMapper;
|
||||
private List<String> domains;
|
||||
private List<TaskState> states;
|
||||
private List<String> workbasketIds;
|
||||
|
||||
public TaskStatusReportBuilderImpl(
|
||||
InternalTaskanaEngine taskanaEngine, MonitorMapper monitorMapper) {
|
||||
|
@ -34,7 +36,7 @@ public class TaskStatusReportBuilderImpl implements TaskStatusReport.Builder {
|
|||
try {
|
||||
this.taskanaEngine.openConnection();
|
||||
List<TaskQueryItem> tasks =
|
||||
this.monitorMapper.getTasksCountByState(this.domains, this.states);
|
||||
this.monitorMapper.getTasksCountByState(this.domains, this.states, this.workbasketIds);
|
||||
TaskStatusReport report = new TaskStatusReport(this.states);
|
||||
report.addItems(tasks);
|
||||
return report;
|
||||
|
@ -55,4 +57,10 @@ public class TaskStatusReportBuilderImpl implements TaskStatusReport.Builder {
|
|||
this.domains = domains;
|
||||
return this;
|
||||
}
|
||||
|
||||
@Override
|
||||
public Builder workbasketIdsIn(List<String> workbasketIds) {
|
||||
this.workbasketIds = workbasketIds;
|
||||
return this;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -172,4 +172,33 @@ class ProvideTaskStatusReportAccTest extends AbstractReportAccTest {
|
|||
assertThat(summaryNumbers[3]).isEqualTo(2); // number of cancelled tasks
|
||||
assertThat(summaryNumbers[4]).isEqualTo(3); // number of terminated tasks
|
||||
}
|
||||
|
||||
@WithAccessId(user = "monitor")
|
||||
@Test
|
||||
void should_FilterTasksByWorkbasket_When_BuilderIsFilteredWithWorkbasketIds() throws Exception {
|
||||
TaskStatusReport report =
|
||||
MONITOR_SERVICE
|
||||
.createTaskStatusReportBuilder()
|
||||
.workbasketIdsIn(Collections.singletonList("WBI:000000000000000000000000000000000003"))
|
||||
.buildReport();
|
||||
|
||||
assertThat(report).isNotNull();
|
||||
assertThat(report.rowSize()).isEqualTo(3);
|
||||
|
||||
Row<TaskQueryItem> row1 = report.getRow("DOMAIN_A");
|
||||
assertThat(row1.getCells()).isEqualTo(new int[] {2, 2, 0, 0, 0});
|
||||
assertThat(row1.getTotalValue()).isEqualTo(4);
|
||||
|
||||
Row<TaskQueryItem> row2 = report.getRow("DOMAIN_B");
|
||||
assertThat(row2.getCells()).isEqualTo(new int[] {1, 3, 0, 0, 0});
|
||||
assertThat(row2.getTotalValue()).isEqualTo(4);
|
||||
|
||||
Row<TaskQueryItem> row3 = report.getRow("DOMAIN_C");
|
||||
assertThat(row3.getCells()).isEqualTo(new int[] {1, 1, 0, 0, 0});
|
||||
assertThat(row3.getTotalValue()).isEqualTo(2);
|
||||
|
||||
Row<TaskQueryItem> sumRow = report.getSumRow();
|
||||
assertThat(sumRow.getCells()).isEqualTo(new int[] {4, 6, 0, 0, 0});
|
||||
assertThat(sumRow.getTotalValue()).isEqualTo(10);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -53,7 +53,7 @@ class TaskStatusReportBuilderImplTest {
|
|||
queryItem2.setState(TaskState.COMPLETED);
|
||||
queryItem2.setDomain("DOMAIN_X");
|
||||
List<TaskQueryItem> queryItems = Arrays.asList(queryItem1, queryItem2);
|
||||
when(monitorMapperMock.getTasksCountByState(null, null)).thenReturn(queryItems);
|
||||
when(monitorMapperMock.getTasksCountByState(null, null, null)).thenReturn(queryItems);
|
||||
|
||||
// when
|
||||
final TaskStatusReport report = cut.createTaskStatusReportBuilder().buildReport();
|
||||
|
@ -63,7 +63,7 @@ class TaskStatusReportBuilderImplTest {
|
|||
inOrder.verify(internalTaskanaEngineMock).getEngine();
|
||||
inOrder.verify(taskanaEngineMock).checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
|
||||
inOrder.verify(internalTaskanaEngineMock).openConnection();
|
||||
inOrder.verify(monitorMapperMock).getTasksCountByState(eq(null), eq(null));
|
||||
inOrder.verify(monitorMapperMock).getTasksCountByState(eq(null), eq(null), eq(null));
|
||||
inOrder.verify(internalTaskanaEngineMock).returnConnection();
|
||||
inOrder.verifyNoMoreInteractions();
|
||||
verifyNoMoreInteractions(taskanaEngineMock, internalTaskanaEngineMock, monitorMapperMock);
|
||||
|
@ -88,7 +88,7 @@ class TaskStatusReportBuilderImplTest {
|
|||
queryItem2.setState(TaskState.COMPLETED);
|
||||
queryItem2.setDomain("DOMAIN_X");
|
||||
List<TaskQueryItem> queryItems = Arrays.asList(queryItem1, queryItem2);
|
||||
when(monitorMapperMock.getTasksCountByState(eq(null), eq(Collections.emptyList())))
|
||||
when(monitorMapperMock.getTasksCountByState(eq(null), eq(Collections.emptyList()), eq(null)))
|
||||
.thenReturn(queryItems);
|
||||
|
||||
// when
|
||||
|
@ -100,7 +100,9 @@ class TaskStatusReportBuilderImplTest {
|
|||
inOrder.verify(internalTaskanaEngineMock).getEngine();
|
||||
inOrder.verify(taskanaEngineMock).checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
|
||||
inOrder.verify(internalTaskanaEngineMock).openConnection();
|
||||
inOrder.verify(monitorMapperMock).getTasksCountByState(eq(null), eq(Collections.emptyList()));
|
||||
inOrder
|
||||
.verify(monitorMapperMock)
|
||||
.getTasksCountByState(eq(null), eq(Collections.emptyList()), eq(null));
|
||||
inOrder.verify(internalTaskanaEngineMock).returnConnection();
|
||||
inOrder.verifyNoMoreInteractions();
|
||||
verifyNoMoreInteractions(taskanaEngineMock, monitorMapperMock, internalTaskanaEngineMock);
|
||||
|
|
Loading…
Reference in New Issue