TSK-1360: replaced domains with workbasketKey for TaskStatusReport
This commit is contained in:
parent
588f34b468
commit
afad58132d
|
@ -7,12 +7,12 @@ import pro.taskana.task.api.TaskState;
|
|||
*/
|
||||
public class TaskQueryItem implements QueryItem {
|
||||
|
||||
private String domain;
|
||||
private String workbasketKey;
|
||||
private TaskState state;
|
||||
private int count;
|
||||
|
||||
public void setDomain(String domain) {
|
||||
this.domain = domain;
|
||||
public void setWorkbasketKey(String workbasketKey) {
|
||||
this.workbasketKey = workbasketKey;
|
||||
}
|
||||
|
||||
public void setCount(int count) {
|
||||
|
@ -29,7 +29,7 @@ public class TaskQueryItem implements QueryItem {
|
|||
|
||||
@Override
|
||||
public String getKey() {
|
||||
return domain;
|
||||
return workbasketKey;
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -41,7 +41,7 @@ public class TaskQueryItem implements QueryItem {
|
|||
public String toString() {
|
||||
return "TaskQueryItem ["
|
||||
+ "domain= "
|
||||
+ this.domain
|
||||
+ this.workbasketKey
|
||||
+ ", state= "
|
||||
+ this.state.name()
|
||||
+ ", count= "
|
||||
|
|
|
@ -341,7 +341,7 @@ public interface MonitorMapper {
|
|||
|
||||
@Select(
|
||||
"<script>"
|
||||
+ "SELECT DOMAIN, STATE, COUNT(STATE) as COUNT "
|
||||
+ "SELECT WORKBASKET_KEY, STATE, COUNT(STATE) as COUNT "
|
||||
+ "FROM TASK "
|
||||
+ "<where>"
|
||||
+ "<if test='domains != null'>"
|
||||
|
@ -354,10 +354,10 @@ public interface MonitorMapper {
|
|||
+ "AND WORKBASKET_ID IN (<foreach collection='workbasketIds' item='workbasketId' separator=','>#{workbasketId}</foreach>) "
|
||||
+ "</if>"
|
||||
+ "</where>"
|
||||
+ "GROUP BY DOMAIN, STATE"
|
||||
+ "GROUP BY WORKBASKET_KEY, STATE"
|
||||
+ "</script>")
|
||||
@Results({
|
||||
@Result(column = "DOMAIN", property = "domain"),
|
||||
@Result(column = "WORKBASKET_KEY", property = "workbasketKey"),
|
||||
@Result(column = "STATE", property = "state"),
|
||||
@Result(column = "COUNT", property = "count"),
|
||||
})
|
||||
|
|
|
@ -1,6 +1,8 @@
|
|||
package pro.taskana.monitor.internal.reports;
|
||||
|
||||
import java.util.List;
|
||||
import java.util.Map;
|
||||
import java.util.stream.Collectors;
|
||||
import org.slf4j.Logger;
|
||||
import org.slf4j.LoggerFactory;
|
||||
|
||||
|
@ -12,6 +14,8 @@ 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;
|
||||
import pro.taskana.workbasket.api.WorkbasketService;
|
||||
import pro.taskana.workbasket.api.models.WorkbasketSummary;
|
||||
|
||||
/** The implementation of TaskStatusReportBuilder. */
|
||||
public class TaskStatusReportBuilderImpl implements TaskStatusReport.Builder {
|
||||
|
@ -19,6 +23,7 @@ public class TaskStatusReportBuilderImpl implements TaskStatusReport.Builder {
|
|||
private static final Logger LOGGER = LoggerFactory.getLogger(TaskStatusReportBuilderImpl.class);
|
||||
private final InternalTaskanaEngine taskanaEngine;
|
||||
private final MonitorMapper monitorMapper;
|
||||
private final WorkbasketService workbasketService;
|
||||
private List<String> domains;
|
||||
private List<TaskState> states;
|
||||
private List<String> workbasketIds;
|
||||
|
@ -27,6 +32,7 @@ public class TaskStatusReportBuilderImpl implements TaskStatusReport.Builder {
|
|||
InternalTaskanaEngine taskanaEngine, MonitorMapper monitorMapper) {
|
||||
this.taskanaEngine = taskanaEngine;
|
||||
this.monitorMapper = monitorMapper;
|
||||
this.workbasketService = taskanaEngine.getEngine().getWorkbasketService();
|
||||
}
|
||||
|
||||
@Override
|
||||
|
@ -39,6 +45,19 @@ public class TaskStatusReportBuilderImpl implements TaskStatusReport.Builder {
|
|||
this.monitorMapper.getTasksCountByState(this.domains, this.states, this.workbasketIds);
|
||||
TaskStatusReport report = new TaskStatusReport(this.states);
|
||||
report.addItems(tasks);
|
||||
Map<String, String> displayMap =
|
||||
taskanaEngine.runAsAdmin(
|
||||
() ->
|
||||
workbasketService
|
||||
.createWorkbasketQuery()
|
||||
.keyIn(report.getRows().keySet().toArray(new String[0]))
|
||||
.domainIn(domains != null ? domains.toArray(new String[0]) : null)
|
||||
.list()
|
||||
.stream()
|
||||
.collect(
|
||||
Collectors.toMap(
|
||||
WorkbasketSummary::getKey, WorkbasketSummary::getName, (a, b) -> a)));
|
||||
report.augmentDisplayNames(displayMap);
|
||||
return report;
|
||||
} finally {
|
||||
this.taskanaEngine.returnConnection();
|
||||
|
|
|
@ -63,9 +63,9 @@ class ProvideTaskStatusReportAccTest extends AbstractReportAccTest {
|
|||
TaskStatusReport report = MONITOR_SERVICE.createTaskStatusReportBuilder().buildReport();
|
||||
|
||||
assertThat(report.getRows()).hasSize(3);
|
||||
assertThat(report.getRow("DOMAIN_A").getDisplayName()).isEqualTo("DOMAIN_A");
|
||||
assertThat(report.getRow("DOMAIN_B").getDisplayName()).isEqualTo("DOMAIN_B");
|
||||
assertThat(report.getRow("DOMAIN_C").getDisplayName()).isEqualTo("DOMAIN_C");
|
||||
assertThat(report.getRow("USER-1-1").getDisplayName()).isEqualTo("PPK User 1 KSC 1");
|
||||
assertThat(report.getRow("USER-1-2").getDisplayName()).isEqualTo("PPK User 1 KSC 2");
|
||||
assertThat(report.getRow("USER-1-3").getDisplayName()).isEqualTo("PPK User 1 KSC 3");
|
||||
}
|
||||
|
||||
@WithAccessId(user = "monitor")
|
||||
|
@ -76,17 +76,17 @@ class ProvideTaskStatusReportAccTest extends AbstractReportAccTest {
|
|||
assertThat(report).isNotNull();
|
||||
assertThat(report.rowSize()).isEqualTo(3);
|
||||
|
||||
Row<TaskQueryItem> row1 = report.getRow("DOMAIN_A");
|
||||
assertThat(row1.getCells()).isEqualTo(new int[] {22, 4, 0, 0, 0});
|
||||
assertThat(row1.getTotalValue()).isEqualTo(26);
|
||||
Row<TaskQueryItem> row1 = report.getRow("USER-1-1");
|
||||
assertThat(row1.getCells()).isEqualTo(new int[] {18, 2, 0, 0, 0});
|
||||
assertThat(row1.getTotalValue()).isEqualTo(20);
|
||||
|
||||
Row<TaskQueryItem> row2 = report.getRow("DOMAIN_B");
|
||||
assertThat(row2.getCells()).isEqualTo(new int[] {9, 3, 0, 0, 0});
|
||||
assertThat(row2.getTotalValue()).isEqualTo(12);
|
||||
Row<TaskQueryItem> row2 = report.getRow("USER-1-2");
|
||||
assertThat(row2.getCells()).isEqualTo(new int[] {19, 1, 0, 0, 0});
|
||||
assertThat(row2.getTotalValue()).isEqualTo(20);
|
||||
|
||||
Row<TaskQueryItem> row3 = report.getRow("DOMAIN_C");
|
||||
assertThat(row3.getCells()).isEqualTo(new int[] {10, 2, 0, 0, 0});
|
||||
assertThat(row3.getTotalValue()).isEqualTo(12);
|
||||
Row<TaskQueryItem> row3 = report.getRow("USER-1-3");
|
||||
assertThat(row3.getCells()).isEqualTo(new int[] {4, 6, 0, 0, 0});
|
||||
assertThat(row3.getTotalValue()).isEqualTo(10);
|
||||
|
||||
Row<TaskQueryItem> sumRow = report.getSumRow();
|
||||
assertThat(sumRow.getCells()).isEqualTo(new int[] {41, 9, 0, 0, 0});
|
||||
|
@ -103,15 +103,19 @@ class ProvideTaskStatusReportAccTest extends AbstractReportAccTest {
|
|||
.buildReport();
|
||||
|
||||
assertThat(report).isNotNull();
|
||||
assertThat(report.rowSize()).isEqualTo(2);
|
||||
assertThat(report.rowSize()).isEqualTo(3);
|
||||
|
||||
Row<TaskQueryItem> row1 = report.getRow("DOMAIN_A");
|
||||
assertThat(row1.getCells()).isEqualTo(new int[] {22, 4, 0, 0, 0});
|
||||
assertThat(row1.getTotalValue()).isEqualTo(26);
|
||||
Row<TaskQueryItem> row1 = report.getRow("USER-1-1");
|
||||
assertThat(row1.getCells()).isEqualTo(new int[] {15, 2, 0, 0, 0});
|
||||
assertThat(row1.getTotalValue()).isEqualTo(17);
|
||||
|
||||
Row<TaskQueryItem> row2 = report.getRow("DOMAIN_C");
|
||||
assertThat(row2.getCells()).isEqualTo(new int[] {10, 2, 0, 0, 0});
|
||||
assertThat(row2.getTotalValue()).isEqualTo(12);
|
||||
Row<TaskQueryItem> row2 = report.getRow("USER-1-2");
|
||||
assertThat(row2.getCells()).isEqualTo(new int[] {14, 1, 0, 0, 0});
|
||||
assertThat(row2.getTotalValue()).isEqualTo(15);
|
||||
|
||||
Row<TaskQueryItem> row3 = report.getRow("USER-1-3");
|
||||
assertThat(row3.getCells()).isEqualTo(new int[] {3, 3, 0, 0, 0});
|
||||
assertThat(row3.getTotalValue()).isEqualTo(6);
|
||||
|
||||
Row<TaskQueryItem> sumRow = report.getSumRow();
|
||||
assertThat(sumRow.getCells()).isEqualTo(new int[] {32, 6, 0, 0, 0});
|
||||
|
@ -130,17 +134,17 @@ class ProvideTaskStatusReportAccTest extends AbstractReportAccTest {
|
|||
assertThat(report).isNotNull();
|
||||
assertThat(report.rowSize()).isEqualTo(3);
|
||||
|
||||
Row<TaskQueryItem> row1 = report.getRow("DOMAIN_A");
|
||||
assertThat(row1.getCells()).isEqualTo(new int[] {22});
|
||||
assertThat(row1.getTotalValue()).isEqualTo(22);
|
||||
Row<TaskQueryItem> row1 = report.getRow("USER-1-1");
|
||||
assertThat(row1.getCells()).isEqualTo(new int[] {18});
|
||||
assertThat(row1.getTotalValue()).isEqualTo(18);
|
||||
|
||||
Row<TaskQueryItem> row2 = report.getRow("DOMAIN_B");
|
||||
assertThat(row2.getCells()).isEqualTo(new int[] {9});
|
||||
assertThat(row2.getTotalValue()).isEqualTo(9);
|
||||
Row<TaskQueryItem> row2 = report.getRow("USER-1-2");
|
||||
assertThat(row2.getCells()).isEqualTo(new int[] {19});
|
||||
assertThat(row2.getTotalValue()).isEqualTo(19);
|
||||
|
||||
Row<TaskQueryItem> row3 = report.getRow("DOMAIN_C");
|
||||
assertThat(row3.getCells()).isEqualTo(new int[] {10});
|
||||
assertThat(row3.getTotalValue()).isEqualTo(10);
|
||||
Row<TaskQueryItem> row3 = report.getRow("USER-1-3");
|
||||
assertThat(row3.getCells()).isEqualTo(new int[] {4});
|
||||
assertThat(row3.getTotalValue()).isEqualTo(4);
|
||||
|
||||
Row<TaskQueryItem> sumRow = report.getSumRow();
|
||||
assertThat(sumRow.getCells()).isEqualTo(new int[] {41});
|
||||
|
@ -183,19 +187,11 @@ class ProvideTaskStatusReportAccTest extends AbstractReportAccTest {
|
|||
.buildReport();
|
||||
|
||||
assertThat(report).isNotNull();
|
||||
assertThat(report.rowSize()).isEqualTo(3);
|
||||
assertThat(report.rowSize()).isEqualTo(1);
|
||||
|
||||
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> row1 = report.getRow("USER-1-3");
|
||||
assertThat(row1.getCells()).isEqualTo(new int[] {4, 6, 0, 0, 0});
|
||||
assertThat(row1.getTotalValue()).isEqualTo(10);
|
||||
|
||||
Row<TaskQueryItem> sumRow = report.getSumRow();
|
||||
assertThat(sumRow.getCells()).isEqualTo(new int[] {4, 6, 0, 0, 0});
|
||||
|
|
|
@ -1,6 +1,7 @@
|
|||
package pro.taskana.monitor.internal;
|
||||
|
||||
import static org.assertj.core.api.Assertions.assertThat;
|
||||
import static org.mockito.ArgumentMatchers.any;
|
||||
import static org.mockito.ArgumentMatchers.eq;
|
||||
import static org.mockito.Mockito.inOrder;
|
||||
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
||||
|
@ -23,6 +24,7 @@ import pro.taskana.common.internal.InternalTaskanaEngine;
|
|||
import pro.taskana.monitor.api.reports.TaskStatusReport;
|
||||
import pro.taskana.monitor.api.reports.item.TaskQueryItem;
|
||||
import pro.taskana.task.api.TaskState;
|
||||
import pro.taskana.workbasket.api.WorkbasketService;
|
||||
|
||||
/** Unit Test for TaskStatusReportBuilderImpl. */
|
||||
@ExtendWith(MockitoExtension.class)
|
||||
|
@ -36,9 +38,18 @@ class TaskStatusReportBuilderImplTest {
|
|||
|
||||
@Mock private MonitorMapper monitorMapperMock;
|
||||
|
||||
@Mock private WorkbasketService workbasketService;
|
||||
|
||||
private Object[] mocks;
|
||||
|
||||
@BeforeEach
|
||||
void setup() {
|
||||
when(internalTaskanaEngineMock.getEngine()).thenReturn(taskanaEngineMock);
|
||||
when(taskanaEngineMock.getWorkbasketService()).thenReturn(workbasketService);
|
||||
mocks =
|
||||
new Object[] {
|
||||
internalTaskanaEngineMock, taskanaEngineMock, monitorMapperMock, workbasketService
|
||||
};
|
||||
}
|
||||
|
||||
@Test
|
||||
|
@ -47,32 +58,34 @@ class TaskStatusReportBuilderImplTest {
|
|||
TaskQueryItem queryItem1 = new TaskQueryItem();
|
||||
queryItem1.setCount(50);
|
||||
queryItem1.setState(TaskState.READY);
|
||||
queryItem1.setDomain("DOMAIN_X");
|
||||
queryItem1.setWorkbasketKey("KEY_1");
|
||||
TaskQueryItem queryItem2 = new TaskQueryItem();
|
||||
queryItem2.setCount(30);
|
||||
queryItem2.setState(TaskState.COMPLETED);
|
||||
queryItem2.setDomain("DOMAIN_X");
|
||||
queryItem2.setWorkbasketKey("KEY_1");
|
||||
List<TaskQueryItem> queryItems = Arrays.asList(queryItem1, queryItem2);
|
||||
when(monitorMapperMock.getTasksCountByState(null, null, null)).thenReturn(queryItems);
|
||||
when(internalTaskanaEngineMock.runAsAdmin(any())).thenReturn(Collections.emptyMap());
|
||||
|
||||
// when
|
||||
final TaskStatusReport report = cut.createTaskStatusReportBuilder().buildReport();
|
||||
|
||||
// then
|
||||
InOrder inOrder = inOrder(taskanaEngineMock, internalTaskanaEngineMock, monitorMapperMock);
|
||||
InOrder inOrder = inOrder(mocks);
|
||||
inOrder.verify(internalTaskanaEngineMock).getEngine();
|
||||
inOrder.verify(taskanaEngineMock).checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
|
||||
inOrder.verify(internalTaskanaEngineMock).openConnection();
|
||||
inOrder.verify(monitorMapperMock).getTasksCountByState(eq(null), eq(null), eq(null));
|
||||
inOrder.verify(internalTaskanaEngineMock).runAsAdmin(any());
|
||||
inOrder.verify(internalTaskanaEngineMock).returnConnection();
|
||||
inOrder.verifyNoMoreInteractions();
|
||||
verifyNoMoreInteractions(taskanaEngineMock, internalTaskanaEngineMock, monitorMapperMock);
|
||||
verifyNoMoreInteractions(mocks);
|
||||
|
||||
assertThat(report).isNotNull();
|
||||
assertThat(report.rowSize()).isEqualTo(1);
|
||||
assertThat(report.getRow("DOMAIN_X").getCells()).isEqualTo(new int[] {50, 0, 30, 0, 0});
|
||||
assertThat(report.getRow("KEY_1").getCells()).isEqualTo(new int[] {50, 0, 30, 0, 0});
|
||||
assertThat(report.getSumRow().getCells()).isEqualTo(new int[] {50, 0, 30, 0, 0});
|
||||
assertThat(report.getRow("DOMAIN_X").getTotalValue()).isEqualTo(80);
|
||||
assertThat(report.getRow("KEY_1").getTotalValue()).isEqualTo(80);
|
||||
assertThat(report.getSumRow().getTotalValue()).isEqualTo(80);
|
||||
}
|
||||
|
||||
|
@ -82,36 +95,38 @@ class TaskStatusReportBuilderImplTest {
|
|||
TaskQueryItem queryItem1 = new TaskQueryItem();
|
||||
queryItem1.setCount(50);
|
||||
queryItem1.setState(TaskState.READY);
|
||||
queryItem1.setDomain("DOMAIN_X");
|
||||
queryItem1.setWorkbasketKey("KEY_1");
|
||||
TaskQueryItem queryItem2 = new TaskQueryItem();
|
||||
queryItem2.setCount(30);
|
||||
queryItem2.setState(TaskState.COMPLETED);
|
||||
queryItem2.setDomain("DOMAIN_X");
|
||||
queryItem2.setWorkbasketKey("KEY_1");
|
||||
List<TaskQueryItem> queryItems = Arrays.asList(queryItem1, queryItem2);
|
||||
when(monitorMapperMock.getTasksCountByState(eq(null), eq(Collections.emptyList()), eq(null)))
|
||||
.thenReturn(queryItems);
|
||||
when(internalTaskanaEngineMock.runAsAdmin(any())).thenReturn(Collections.emptyMap());
|
||||
|
||||
// when
|
||||
final TaskStatusReport report =
|
||||
cut.createTaskStatusReportBuilder().stateIn(Collections.emptyList()).buildReport();
|
||||
|
||||
// then
|
||||
InOrder inOrder = inOrder(taskanaEngineMock, monitorMapperMock, internalTaskanaEngineMock);
|
||||
InOrder inOrder = inOrder(mocks);
|
||||
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()), eq(null));
|
||||
inOrder.verify(internalTaskanaEngineMock).runAsAdmin(any());
|
||||
inOrder.verify(internalTaskanaEngineMock).returnConnection();
|
||||
inOrder.verifyNoMoreInteractions();
|
||||
verifyNoMoreInteractions(taskanaEngineMock, monitorMapperMock, internalTaskanaEngineMock);
|
||||
verifyNoMoreInteractions(mocks);
|
||||
|
||||
assertThat(report).isNotNull();
|
||||
assertThat(report.rowSize()).isEqualTo(1);
|
||||
assertThat(report.getRow("DOMAIN_X").getCells()).isEqualTo(new int[0]);
|
||||
assertThat(report.getRow("KEY_1").getCells()).isEqualTo(new int[0]);
|
||||
assertThat(report.getSumRow().getCells()).isEqualTo(new int[0]);
|
||||
assertThat(report.getRow("DOMAIN_X").getTotalValue()).isEqualTo(80);
|
||||
assertThat(report.getRow("KEY_1").getTotalValue()).isEqualTo(80);
|
||||
assertThat(report.getSumRow().getTotalValue()).isEqualTo(80);
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue