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
|
* @return the Builder
|
||||||
*/
|
*/
|
||||||
Builder domainIn(List<String> domains);
|
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'>"
|
+ "<if test='states != null'>"
|
||||||
+ "AND STATE IN (<foreach collection='states' item='state' separator=','>#{state}</foreach>) "
|
+ "AND STATE IN (<foreach collection='states' item='state' separator=','>#{state}</foreach>) "
|
||||||
+ "</if>"
|
+ "</if>"
|
||||||
|
+ "<if test='workbasketIds != null'>"
|
||||||
|
+ "AND WORKBASKET_ID IN (<foreach collection='workbasketIds' item='workbasketId' separator=','>#{workbasketId}</foreach>) "
|
||||||
|
+ "</if>"
|
||||||
+ "</where>"
|
+ "</where>"
|
||||||
+ "GROUP BY DOMAIN, STATE"
|
+ "GROUP BY DOMAIN, STATE"
|
||||||
+ "</script>")
|
+ "</script>")
|
||||||
|
|
@ -359,7 +362,9 @@ public interface MonitorMapper {
|
||||||
@Result(column = "COUNT", property = "count"),
|
@Result(column = "COUNT", property = "count"),
|
||||||
})
|
})
|
||||||
List<TaskQueryItem> getTasksCountByState(
|
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(
|
@Select(
|
||||||
"<script>"
|
"<script>"
|
||||||
|
|
|
||||||
|
|
@ -8,6 +8,7 @@ import pro.taskana.common.api.TaskanaRole;
|
||||||
import pro.taskana.common.api.exceptions.NotAuthorizedException;
|
import pro.taskana.common.api.exceptions.NotAuthorizedException;
|
||||||
import pro.taskana.common.internal.InternalTaskanaEngine;
|
import pro.taskana.common.internal.InternalTaskanaEngine;
|
||||||
import pro.taskana.monitor.api.reports.TaskStatusReport;
|
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.api.reports.item.TaskQueryItem;
|
||||||
import pro.taskana.monitor.internal.MonitorMapper;
|
import pro.taskana.monitor.internal.MonitorMapper;
|
||||||
import pro.taskana.task.api.TaskState;
|
import pro.taskana.task.api.TaskState;
|
||||||
|
|
@ -20,6 +21,7 @@ public class TaskStatusReportBuilderImpl implements TaskStatusReport.Builder {
|
||||||
private final MonitorMapper monitorMapper;
|
private final MonitorMapper monitorMapper;
|
||||||
private List<String> domains;
|
private List<String> domains;
|
||||||
private List<TaskState> states;
|
private List<TaskState> states;
|
||||||
|
private List<String> workbasketIds;
|
||||||
|
|
||||||
public TaskStatusReportBuilderImpl(
|
public TaskStatusReportBuilderImpl(
|
||||||
InternalTaskanaEngine taskanaEngine, MonitorMapper monitorMapper) {
|
InternalTaskanaEngine taskanaEngine, MonitorMapper monitorMapper) {
|
||||||
|
|
@ -34,7 +36,7 @@ public class TaskStatusReportBuilderImpl implements TaskStatusReport.Builder {
|
||||||
try {
|
try {
|
||||||
this.taskanaEngine.openConnection();
|
this.taskanaEngine.openConnection();
|
||||||
List<TaskQueryItem> tasks =
|
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);
|
TaskStatusReport report = new TaskStatusReport(this.states);
|
||||||
report.addItems(tasks);
|
report.addItems(tasks);
|
||||||
return report;
|
return report;
|
||||||
|
|
@ -55,4 +57,10 @@ public class TaskStatusReportBuilderImpl implements TaskStatusReport.Builder {
|
||||||
this.domains = domains;
|
this.domains = domains;
|
||||||
return this;
|
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[3]).isEqualTo(2); // number of cancelled tasks
|
||||||
assertThat(summaryNumbers[4]).isEqualTo(3); // number of terminated 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.setState(TaskState.COMPLETED);
|
||||||
queryItem2.setDomain("DOMAIN_X");
|
queryItem2.setDomain("DOMAIN_X");
|
||||||
List<TaskQueryItem> queryItems = Arrays.asList(queryItem1, queryItem2);
|
List<TaskQueryItem> queryItems = Arrays.asList(queryItem1, queryItem2);
|
||||||
when(monitorMapperMock.getTasksCountByState(null, null)).thenReturn(queryItems);
|
when(monitorMapperMock.getTasksCountByState(null, null, null)).thenReturn(queryItems);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
final TaskStatusReport report = cut.createTaskStatusReportBuilder().buildReport();
|
final TaskStatusReport report = cut.createTaskStatusReportBuilder().buildReport();
|
||||||
|
|
@ -63,7 +63,7 @@ class TaskStatusReportBuilderImplTest {
|
||||||
inOrder.verify(internalTaskanaEngineMock).getEngine();
|
inOrder.verify(internalTaskanaEngineMock).getEngine();
|
||||||
inOrder.verify(taskanaEngineMock).checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
|
inOrder.verify(taskanaEngineMock).checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
|
||||||
inOrder.verify(internalTaskanaEngineMock).openConnection();
|
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.verify(internalTaskanaEngineMock).returnConnection();
|
||||||
inOrder.verifyNoMoreInteractions();
|
inOrder.verifyNoMoreInteractions();
|
||||||
verifyNoMoreInteractions(taskanaEngineMock, internalTaskanaEngineMock, monitorMapperMock);
|
verifyNoMoreInteractions(taskanaEngineMock, internalTaskanaEngineMock, monitorMapperMock);
|
||||||
|
|
@ -88,7 +88,7 @@ class TaskStatusReportBuilderImplTest {
|
||||||
queryItem2.setState(TaskState.COMPLETED);
|
queryItem2.setState(TaskState.COMPLETED);
|
||||||
queryItem2.setDomain("DOMAIN_X");
|
queryItem2.setDomain("DOMAIN_X");
|
||||||
List<TaskQueryItem> queryItems = Arrays.asList(queryItem1, queryItem2);
|
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);
|
.thenReturn(queryItems);
|
||||||
|
|
||||||
// when
|
// when
|
||||||
|
|
@ -100,7 +100,9 @@ class TaskStatusReportBuilderImplTest {
|
||||||
inOrder.verify(internalTaskanaEngineMock).getEngine();
|
inOrder.verify(internalTaskanaEngineMock).getEngine();
|
||||||
inOrder.verify(taskanaEngineMock).checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
|
inOrder.verify(taskanaEngineMock).checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
|
||||||
inOrder.verify(internalTaskanaEngineMock).openConnection();
|
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.verify(internalTaskanaEngineMock).returnConnection();
|
||||||
inOrder.verifyNoMoreInteractions();
|
inOrder.verifyNoMoreInteractions();
|
||||||
verifyNoMoreInteractions(taskanaEngineMock, monitorMapperMock, internalTaskanaEngineMock);
|
verifyNoMoreInteractions(taskanaEngineMock, monitorMapperMock, internalTaskanaEngineMock);
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue