TSK-285: Adjust acceptance tests for the monitoring

- All tests now have the same structure
- Each test prints the report in the debug mode
- Change workbasket id/classification id to key in the reports
This commit is contained in:
Konstantin Kläger 2018-02-22 14:57:34 +01:00 committed by Holger Hagen
parent 869e4fb325
commit ecf3f1d317
7 changed files with 924 additions and 242 deletions

View File

@ -18,19 +18,19 @@ import pro.taskana.impl.TaskState;
public interface TaskMonitorMapper {
@Select("<script>"
+ "<if test=\"_databaseId == 'db2'\">SELECT WORKBASKET_ID, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP)) as AGE_IN_DAYS, COUNT(*) as NUMBER_OF_TASKS</if> "
+ "<if test=\"_databaseId == 'h2'\">SELECT WORKBASKET_ID, DATEDIFF('DAY', CURRENT_TIMESTAMP, DUE) as AGE_IN_DAYS, COUNT(*) as NUMBER_OF_TASKS</if> "
+ "<if test=\"_databaseId == 'db2'\">SELECT WORKBASKET_KEY, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP)) as AGE_IN_DAYS, COUNT(*) as NUMBER_OF_TASKS</if> "
+ "<if test=\"_databaseId == 'h2'\">SELECT WORKBASKET_KEY, DATEDIFF('DAY', CURRENT_TIMESTAMP, DUE) as AGE_IN_DAYS, COUNT(*) as NUMBER_OF_TASKS</if> "
+ "FROM TASK "
+ "WHERE WORKBASKET_ID IN (<foreach collection='workbasketIds' item='workbasketId' separator=','>#{workbasketId}</foreach>) "
+ "AND STATE IN (<foreach collection='states' item='state' separator=','>#{state}</foreach>) "
+ "AND CLASSIFICATION_CATEGORY IN (<foreach collection='categories' item='category' separator=','>#{category}</foreach>) "
+ "AND DOMAIN IN (<foreach collection='domains' item='domain' separator=','>#{domain}</foreach>) "
+ "AND DUE IS NOT NULL "
+ "<if test=\"_databaseId == 'db2'\">GROUP BY WORKBASKET_ID, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP))</if> "
+ "<if test=\"_databaseId == 'h2'\">GROUP BY WORKBASKET_ID, DATEDIFF('DAY', CURRENT_TIMESTAMP, DUE)</if> "
+ "<if test=\"_databaseId == 'db2'\">GROUP BY WORKBASKET_KEY, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP))</if> "
+ "<if test=\"_databaseId == 'h2'\">GROUP BY WORKBASKET_KEY, DATEDIFF('DAY', CURRENT_TIMESTAMP, DUE)</if> "
+ "</script>")
@Results({
@Result(column = "WORKBASKET_ID", property = "key"),
@Result(column = "WORKBASKET_KEY", property = "key"),
@Result(column = "AGE_IN_DAYS", property = "ageInDays"),
@Result(column = "NUMBER_OF_TASKS", property = "numberOfTasks") })
List<MonitorQueryItem> getTaskCountOfWorkbasketsByWorkbasketsAndStates(
@ -62,19 +62,19 @@ public interface TaskMonitorMapper {
@Param("domains") List<String> domains);
@Select("<script>"
+ "<if test=\"_databaseId == 'db2'\">SELECT CLASSIFICATION_ID, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP)) as AGE_IN_DAYS, COUNT(*) as NUMBER_OF_TASKS</if> "
+ "<if test=\"_databaseId == 'h2'\">SELECT CLASSIFICATION_ID, DATEDIFF('DAY', CURRENT_TIMESTAMP, DUE) as AGE_IN_DAYS, COUNT(*) as NUMBER_OF_TASKS</if> "
+ "<if test=\"_databaseId == 'db2'\">SELECT CLASSIFICATION_KEY, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP)) as AGE_IN_DAYS, COUNT(*) as NUMBER_OF_TASKS</if> "
+ "<if test=\"_databaseId == 'h2'\">SELECT CLASSIFICATION_KEY, DATEDIFF('DAY', CURRENT_TIMESTAMP, DUE) as AGE_IN_DAYS, COUNT(*) as NUMBER_OF_TASKS</if> "
+ "FROM TASK "
+ "WHERE WORKBASKET_ID IN (<foreach collection='workbasketIds' item='workbasketId' separator=','>#{workbasketId}</foreach>) "
+ "AND STATE IN (<foreach collection='states' item='state' separator=','>#{state}</foreach>) "
+ "AND CLASSIFICATION_CATEGORY IN (<foreach collection='categories' item='category' separator=','>#{category}</foreach>) "
+ "AND DOMAIN IN (<foreach collection='domains' item='domain' separator=','>#{domain}</foreach>) "
+ "AND DUE IS NOT NULL "
+ "<if test=\"_databaseId == 'db2'\">GROUP BY CLASSIFICATION_ID, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP))</if> "
+ "<if test=\"_databaseId == 'h2'\">GROUP BY CLASSIFICATION_ID, DATEDIFF('DAY', CURRENT_TIMESTAMP, DUE)</if> "
+ "<if test=\"_databaseId == 'db2'\">GROUP BY CLASSIFICATION_KEY, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP))</if> "
+ "<if test=\"_databaseId == 'h2'\">GROUP BY CLASSIFICATION_KEY, DATEDIFF('DAY', CURRENT_TIMESTAMP, DUE)</if> "
+ "</script>")
@Results({
@Result(column = "CLASSIFICATION_ID", property = "key"),
@Result(column = "CLASSIFICATION_KEY", property = "key"),
@Result(column = "AGE_IN_DAYS", property = "ageInDays"),
@Result(column = "NUMBER_OF_TASKS", property = "numberOfTasks") })
List<MonitorQueryItem> getTaskCountOfClassificationsByWorkbasketsAndStates(
@ -84,20 +84,20 @@ public interface TaskMonitorMapper {
@Param("domains") List<String> domains);
@Select("<script>"
+ "<if test=\"_databaseId == 'db2'\">SELECT T.CLASSIFICATION_ID as TASK_CLASSIFICATION_ID, A.CLASSIFICATION_ID as ATTACHMENT_CLASSIFICATION_ID, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP)) as AGE_IN_DAYS, COUNT(*) as NUMBER_OF_TASKS</if> "
+ "<if test=\"_databaseId == 'h2'\">SELECT T.CLASSIFICATION_ID as TASK_CLASSIFICATION_ID, A.CLASSIFICATION_ID as ATTACHMENT_CLASSIFICATION_ID, DATEDIFF('DAY', CURRENT_TIMESTAMP, DUE) as AGE_IN_DAYS, COUNT(*) as NUMBER_OF_TASKS</if> "
+ "<if test=\"_databaseId == 'db2'\">SELECT T.CLASSIFICATION_KEY as TASK_CLASSIFICATION_KEY, A.CLASSIFICATION_KEY as ATTACHMENT_CLASSIFICATION_KEY, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP)) as AGE_IN_DAYS, COUNT(*) as NUMBER_OF_TASKS</if> "
+ "<if test=\"_databaseId == 'h2'\">SELECT T.CLASSIFICATION_KEY as TASK_CLASSIFICATION_KEY, A.CLASSIFICATION_KEY as ATTACHMENT_CLASSIFICATION_KEY, DATEDIFF('DAY', CURRENT_TIMESTAMP, DUE) as AGE_IN_DAYS, COUNT(*) as NUMBER_OF_TASKS</if> "
+ "FROM TASK AS T LEFT JOIN ATTACHMENT AS A ON T.ID = A.TASK_ID "
+ "WHERE T.WORKBASKET_ID IN (<foreach collection='workbasketIds' item='workbasketId' separator=','>#{workbasketId}</foreach>) "
+ "AND STATE IN (<foreach collection='states' item='state' separator=','>#{state}</foreach>) "
+ "AND CLASSIFICATION_CATEGORY IN (<foreach collection='categories' item='category' separator=','>#{category}</foreach>) "
+ "AND DOMAIN IN (<foreach collection='domains' item='domain' separator=','>#{domain}</foreach>) "
+ "AND DUE IS NOT NULL "
+ "<if test=\"_databaseId == 'db2'\">GROUP BY T.CLASSIFICATION_ID, A.CLASSIFICATION_ID, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP))</if> "
+ "<if test=\"_databaseId == 'h2'\">GROUP BY T.CLASSIFICATION_ID, A.CLASSIFICATION_ID, DATEDIFF('DAY', CURRENT_TIMESTAMP, DUE)</if> "
+ "<if test=\"_databaseId == 'db2'\">GROUP BY T.CLASSIFICATION_KEY, A.CLASSIFICATION_KEY, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP))</if> "
+ "<if test=\"_databaseId == 'h2'\">GROUP BY T.CLASSIFICATION_KEY, A.CLASSIFICATION_KEY, DATEDIFF('DAY', CURRENT_TIMESTAMP, DUE)</if> "
+ "</script>")
@Results({
@Result(column = "TASK_CLASSIFICATION_ID", property = "key"),
@Result(column = "ATTACHMENT_CLASSIFICATION_ID", property = "attachmentKey"),
@Result(column = "TASK_CLASSIFICATION_KEY", property = "key"),
@Result(column = "ATTACHMENT_CLASSIFICATION_KEY", property = "attachmentKey"),
@Result(column = "AGE_IN_DAYS", property = "ageInDays"),
@Result(column = "NUMBER_OF_TASKS", property = "numberOfTasks") })
List<DetailedMonitorQueryItem> getTaskCountOfDetailedClassificationsByWorkbasketsAndStates(

View File

@ -15,6 +15,8 @@ import org.h2.store.fs.FileUtils;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import pro.taskana.TaskMonitorService;
import pro.taskana.TaskanaEngine;
@ -36,6 +38,7 @@ public class ProvideCategoryReportAccTest {
protected static TaskanaEngineConfiguration taskanaEngineConfiguration;
protected static TaskanaEngine taskanaEngine;
private static final Logger LOGGER = LoggerFactory.getLogger(ProvideCategoryReportAccTest.class);
@BeforeClass
public static void setupTest() throws Exception {
@ -57,7 +60,6 @@ public class ProvideCategoryReportAccTest {
@Test
public void testGetTotalNumbersOfTasksOfCategoryReport() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
@ -66,6 +68,10 @@ public class ProvideCategoryReportAccTest {
List<String> domains = Arrays.asList("DOMAIN_A", "DOMAIN_B", "DOMAIN_C");
Report report = taskMonitorService.getCategoryReport(workbasketIds, states, categories, domains);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report));
}
assertNotNull(report);
assertEquals(33, report.getReportLines().get(categories.get(0)).getTotalNumberOfTasks());
assertEquals(7, report.getReportLines().get(categories.get(1)).getTotalNumberOfTasks());
@ -78,7 +84,6 @@ public class ProvideCategoryReportAccTest {
@Test
public void testGetCategoryReportWithReportLineItemDefinitions() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
@ -90,6 +95,10 @@ public class ProvideCategoryReportAccTest {
Report report = taskMonitorService.getCategoryReport(workbasketIds, states, categories, domains,
reportLineItemDefinitions);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report, reportLineItemDefinitions));
}
int sumLineCount = report.getSumLine().getLineItems().get(0).getNumberOfTasks()
+ report.getSumLine().getLineItems().get(1).getNumberOfTasks()
+ report.getSumLine().getLineItems().get(2).getNumberOfTasks()
@ -120,8 +129,85 @@ public class ProvideCategoryReportAccTest {
}
@Test
public void testEachItemOfCategoryReportWithCategoryFilter() {
public void testEachItemOfCategoryReport() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL");
List<String> domains = Arrays.asList("DOMAIN_A", "DOMAIN_B", "DOMAIN_C");
List<ReportLineItemDefinition> reportLineItemDefinitions = getShortListOfReportLineItemDefinitions();
Report report = taskMonitorService.getCategoryReport(workbasketIds, states, categories, domains,
reportLineItemDefinitions);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report, reportLineItemDefinitions));
}
List<ReportLineItem> line1 = report.getReportLines().get("EXTERN").getLineItems();
assertEquals(15, line1.get(0).getNumberOfTasks());
assertEquals(8, line1.get(1).getNumberOfTasks());
assertEquals(2, line1.get(2).getNumberOfTasks());
assertEquals(6, line1.get(3).getNumberOfTasks());
assertEquals(2, line1.get(4).getNumberOfTasks());
List<ReportLineItem> line2 = report.getReportLines().get("AUTOMATIC").getLineItems();
assertEquals(2, line2.get(0).getNumberOfTasks());
assertEquals(1, line2.get(1).getNumberOfTasks());
assertEquals(0, line2.get(2).getNumberOfTasks());
assertEquals(1, line2.get(3).getNumberOfTasks());
assertEquals(3, line2.get(4).getNumberOfTasks());
List<ReportLineItem> line3 = report.getReportLines().get("MANUAL").getLineItems();
assertEquals(2, line3.get(0).getNumberOfTasks());
assertEquals(2, line3.get(1).getNumberOfTasks());
assertEquals(2, line3.get(2).getNumberOfTasks());
assertEquals(0, line3.get(3).getNumberOfTasks());
assertEquals(4, line3.get(4).getNumberOfTasks());
}
@Test
public void testEachItemOfCategoryReportNotInWorkingDays() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL");
List<String> domains = Arrays.asList("DOMAIN_A", "DOMAIN_B", "DOMAIN_C");
List<ReportLineItemDefinition> reportLineItemDefinitions = getShortListOfReportLineItemDefinitions();
Report report = taskMonitorService.getCategoryReport(workbasketIds, states, categories, domains,
reportLineItemDefinitions, false);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report, reportLineItemDefinitions));
}
List<ReportLineItem> line1 = report.getReportLines().get("EXTERN").getLineItems();
assertEquals(23, line1.get(0).getNumberOfTasks());
assertEquals(0, line1.get(1).getNumberOfTasks());
assertEquals(2, line1.get(2).getNumberOfTasks());
assertEquals(0, line1.get(3).getNumberOfTasks());
assertEquals(8, line1.get(4).getNumberOfTasks());
List<ReportLineItem> line2 = report.getReportLines().get("AUTOMATIC").getLineItems();
assertEquals(3, line2.get(0).getNumberOfTasks());
assertEquals(0, line2.get(1).getNumberOfTasks());
assertEquals(0, line2.get(2).getNumberOfTasks());
assertEquals(0, line2.get(3).getNumberOfTasks());
assertEquals(4, line2.get(4).getNumberOfTasks());
List<ReportLineItem> line3 = report.getReportLines().get("MANUAL").getLineItems();
assertEquals(4, line3.get(0).getNumberOfTasks());
assertEquals(0, line3.get(1).getNumberOfTasks());
assertEquals(2, line3.get(2).getNumberOfTasks());
assertEquals(0, line3.get(3).getNumberOfTasks());
assertEquals(4, line3.get(4).getNumberOfTasks());
}
@Test
public void testEachItemOfCategoryReportWithCategoryFilter() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
@ -133,6 +219,10 @@ public class ProvideCategoryReportAccTest {
Report report = taskMonitorService.getCategoryReport(workbasketIds, states, categories, domains,
reportLineItemDefinitions);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report, reportLineItemDefinitions));
}
List<ReportLineItem> line1 = report.getReportLines().get("AUTOMATIC").getLineItems();
assertEquals(2, line1.get(0).getNumberOfTasks());
assertEquals(1, line1.get(1).getNumberOfTasks());
@ -152,7 +242,6 @@ public class ProvideCategoryReportAccTest {
@Test
public void testEachItemOfCategoryReportWithDomainFilter() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
@ -164,6 +253,10 @@ public class ProvideCategoryReportAccTest {
Report report = taskMonitorService.getCategoryReport(workbasketIds, states, categories, domains,
reportLineItemDefinitions);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report, reportLineItemDefinitions));
}
List<ReportLineItem> line1 = report.getReportLines().get("EXTERN").getLineItems();
assertEquals(8, line1.get(0).getNumberOfTasks());
assertEquals(4, line1.get(1).getNumberOfTasks());
@ -218,6 +311,75 @@ public class ProvideCategoryReportAccTest {
return reportLineItemDefinitions;
}
private String reportToString(Report report) {
return reportToString(report, null);
}
private String reportToString(Report report, List<ReportLineItemDefinition> reportLineItemDefinitions) {
String formatColumWidth = "| %-7s ";
String formatFirstColumn = "| %-36s %-4s ";
String formatFirstColumnFirstLine = "| %-29s %12s ";
String formatFirstColumnSumLine = "| %-36s %-5s";
int reportWidth = reportLineItemDefinitions == null ? 46 : reportLineItemDefinitions.size() * 10 + 46;
StringBuilder builder = new StringBuilder();
builder.append("\n");
for (int i = 0; i < reportWidth; i++) {
builder.append("-");
}
builder.append("\n");
builder.append(String.format(formatFirstColumnFirstLine, "Categories", "Total"));
if (reportLineItemDefinitions != null) {
for (ReportLineItemDefinition def : reportLineItemDefinitions) {
if (def.getLowerAgeLimit() == Integer.MIN_VALUE) {
builder.append(String.format(formatColumWidth, "< " + def.getUpperAgeLimit()));
} else if (def.getUpperAgeLimit() == Integer.MAX_VALUE) {
builder.append(String.format(formatColumWidth, "> " + def.getLowerAgeLimit()));
} else if (def.getLowerAgeLimit() == def.getUpperAgeLimit()) {
if (def.getLowerAgeLimit() == 0) {
builder.append(String.format(formatColumWidth, "today"));
} else {
builder.append(String.format(formatColumWidth, def.getLowerAgeLimit()));
}
} else {
builder.append(
String.format(formatColumWidth, def.getLowerAgeLimit() + ".." + def.getUpperAgeLimit()));
}
}
}
builder.append("|\n");
for (int i = 0; i < reportWidth; i++) {
builder.append("-");
}
builder.append("\n");
for (String rl : report.getReportLines().keySet()) {
builder
.append(String.format(formatFirstColumn, rl, report.getReportLines().get(rl).getTotalNumberOfTasks()));
if (reportLineItemDefinitions != null) {
for (ReportLineItem reportLineItem : report.getReportLines().get(rl).getLineItems()) {
builder.append(String.format(formatColumWidth, reportLineItem.getNumberOfTasks()));
}
}
builder.append("|\n");
for (int i = 0; i < reportWidth; i++) {
builder.append("-");
}
builder.append("\n");
}
builder.append(String.format(formatFirstColumnSumLine, "Total", report.getSumLine().getTotalNumberOfTasks()));
for (ReportLineItem sumLine : report.getSumLine().getLineItems()) {
builder.append(String.format(formatColumWidth, sumLine.getNumberOfTasks()));
}
builder.append("|\n");
for (int i = 0; i < reportWidth; i++) {
builder.append("-");
}
builder.append("\n");
return builder.toString();
}
@AfterClass
public static void cleanUpClass() {
FileUtils.deleteRecursive("~/data", true);

View File

@ -15,6 +15,8 @@ import org.h2.store.fs.FileUtils;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import pro.taskana.TaskMonitorService;
import pro.taskana.TaskanaEngine;
@ -36,6 +38,7 @@ public class ProvideClassificationReportAccTest {
protected static TaskanaEngineConfiguration taskanaEngineConfiguration;
protected static TaskanaEngine taskanaEngine;
private static final Logger LOGGER = LoggerFactory.getLogger(ProvideClassificationReportAccTest.class);
@BeforeClass
public static void setupTest() throws Exception {
@ -57,7 +60,6 @@ public class ProvideClassificationReportAccTest {
@Test
public void testGetTotalNumbersOfTasksOfClassificationReport() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
@ -67,28 +69,26 @@ public class ProvideClassificationReportAccTest {
Report report = taskMonitorService.getClassificationReport(workbasketIds, states, categories, domains);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report));
}
assertNotNull(report);
assertEquals(10,
report.getReportLines().get("CLI:000000000000000000000000000000000001").getTotalNumberOfTasks());
assertEquals(10,
report.getReportLines().get("CLI:000000000000000000000000000000000002").getTotalNumberOfTasks());
assertEquals(7,
report.getReportLines().get("CLI:000000000000000000000000000000000003").getTotalNumberOfTasks());
assertEquals(10,
report.getReportLines().get("CLI:000000000000000000000000000000000004").getTotalNumberOfTasks());
assertEquals(13,
report.getReportLines().get("CLI:000000000000000000000000000000000005").getTotalNumberOfTasks());
assertEquals(0, report.getReportLines().get("CLI:000000000000000000000000000000000001").getLineItems().size());
assertEquals(0, report.getReportLines().get("CLI:000000000000000000000000000000000002").getLineItems().size());
assertEquals(0, report.getReportLines().get("CLI:000000000000000000000000000000000003").getLineItems().size());
assertEquals(0, report.getReportLines().get("CLI:000000000000000000000000000000000004").getLineItems().size());
assertEquals(0, report.getReportLines().get("CLI:000000000000000000000000000000000005").getLineItems().size());
assertEquals(10, report.getReportLines().get("L10000").getTotalNumberOfTasks());
assertEquals(10, report.getReportLines().get("L20000").getTotalNumberOfTasks());
assertEquals(7, report.getReportLines().get("L30000").getTotalNumberOfTasks());
assertEquals(10, report.getReportLines().get("L40000").getTotalNumberOfTasks());
assertEquals(13, report.getReportLines().get("L50000").getTotalNumberOfTasks());
assertEquals(0, report.getReportLines().get("L10000").getLineItems().size());
assertEquals(0, report.getReportLines().get("L20000").getLineItems().size());
assertEquals(0, report.getReportLines().get("L30000").getLineItems().size());
assertEquals(0, report.getReportLines().get("L40000").getLineItems().size());
assertEquals(0, report.getReportLines().get("L50000").getLineItems().size());
assertEquals(50, report.getSumLine().getTotalNumberOfTasks());
}
@Test
public void testGetClassificationReportWithReportLineItemDefinitions() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
@ -100,6 +100,10 @@ public class ProvideClassificationReportAccTest {
Report report = taskMonitorService.getClassificationReport(workbasketIds, states, categories, domains,
reportLineItemDefinitions);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report, reportLineItemDefinitions));
}
int sumLineCount = report.getSumLine().getLineItems().get(0).getNumberOfTasks()
+ report.getSumLine().getLineItems().get(1).getNumberOfTasks()
+ report.getSumLine().getLineItems().get(2).getNumberOfTasks()
@ -112,16 +116,11 @@ public class ProvideClassificationReportAccTest {
assertNotNull(report);
assertEquals(10,
report.getReportLines().get("CLI:000000000000000000000000000000000001").getTotalNumberOfTasks());
assertEquals(10,
report.getReportLines().get("CLI:000000000000000000000000000000000002").getTotalNumberOfTasks());
assertEquals(7,
report.getReportLines().get("CLI:000000000000000000000000000000000003").getTotalNumberOfTasks());
assertEquals(10,
report.getReportLines().get("CLI:000000000000000000000000000000000004").getTotalNumberOfTasks());
assertEquals(13,
report.getReportLines().get("CLI:000000000000000000000000000000000005").getTotalNumberOfTasks());
assertEquals(10, report.getReportLines().get("L10000").getTotalNumberOfTasks());
assertEquals(10, report.getReportLines().get("L20000").getTotalNumberOfTasks());
assertEquals(7, report.getReportLines().get("L30000").getTotalNumberOfTasks());
assertEquals(10, report.getReportLines().get("L40000").getTotalNumberOfTasks());
assertEquals(13, report.getReportLines().get("L50000").getTotalNumberOfTasks());
assertEquals(10, report.getSumLine().getLineItems().get(0).getNumberOfTasks());
assertEquals(9, report.getSumLine().getLineItems().get(1).getNumberOfTasks());
@ -138,7 +137,6 @@ public class ProvideClassificationReportAccTest {
@Test
public void testEachItemOfClassificationReport() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
@ -150,45 +148,39 @@ public class ProvideClassificationReportAccTest {
Report report = taskMonitorService.getClassificationReport(workbasketIds, states, categories, domains,
reportLineItemDefinitions);
List<ReportLineItem> line1 = report.getReportLines()
.get("CLI:000000000000000000000000000000000001")
.getLineItems();
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report, reportLineItemDefinitions));
}
List<ReportLineItem> line1 = report.getReportLines().get("L10000").getLineItems();
assertEquals(7, line1.get(0).getNumberOfTasks());
assertEquals(2, line1.get(1).getNumberOfTasks());
assertEquals(1, line1.get(2).getNumberOfTasks());
assertEquals(0, line1.get(3).getNumberOfTasks());
assertEquals(0, line1.get(4).getNumberOfTasks());
List<ReportLineItem> line2 = report.getReportLines()
.get("CLI:000000000000000000000000000000000002")
.getLineItems();
List<ReportLineItem> line2 = report.getReportLines().get("L20000").getLineItems();
assertEquals(5, line2.get(0).getNumberOfTasks());
assertEquals(3, line2.get(1).getNumberOfTasks());
assertEquals(1, line2.get(2).getNumberOfTasks());
assertEquals(1, line2.get(3).getNumberOfTasks());
assertEquals(0, line2.get(4).getNumberOfTasks());
List<ReportLineItem> line3 = report.getReportLines()
.get("CLI:000000000000000000000000000000000003")
.getLineItems();
List<ReportLineItem> line3 = report.getReportLines().get("L30000").getLineItems();
assertEquals(2, line3.get(0).getNumberOfTasks());
assertEquals(1, line3.get(1).getNumberOfTasks());
assertEquals(0, line3.get(2).getNumberOfTasks());
assertEquals(1, line3.get(3).getNumberOfTasks());
assertEquals(3, line3.get(4).getNumberOfTasks());
List<ReportLineItem> line4 = report.getReportLines()
.get("CLI:000000000000000000000000000000000004")
.getLineItems();
List<ReportLineItem> line4 = report.getReportLines().get("L40000").getLineItems();
assertEquals(2, line4.get(0).getNumberOfTasks());
assertEquals(2, line4.get(1).getNumberOfTasks());
assertEquals(2, line4.get(2).getNumberOfTasks());
assertEquals(0, line4.get(3).getNumberOfTasks());
assertEquals(4, line4.get(4).getNumberOfTasks());
List<ReportLineItem> line5 = report.getReportLines()
.get("CLI:000000000000000000000000000000000005")
.getLineItems();
List<ReportLineItem> line5 = report.getReportLines().get("L50000").getLineItems();
assertEquals(3, line5.get(0).getNumberOfTasks());
assertEquals(3, line5.get(1).getNumberOfTasks());
assertEquals(0, line5.get(2).getNumberOfTasks());
@ -197,8 +189,60 @@ public class ProvideClassificationReportAccTest {
}
@Test
public void testEachItemOfClassificationReportWithCategoryFilter() {
public void testEachItemOfClassificationReportNotInWorkingDays() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL");
List<String> domains = Arrays.asList("DOMAIN_A", "DOMAIN_B", "DOMAIN_C");
List<ReportLineItemDefinition> reportLineItemDefinitions = getShortListOfReportLineItemDefinitions();
Report report = taskMonitorService.getClassificationReport(workbasketIds, states, categories, domains,
reportLineItemDefinitions, false);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report, reportLineItemDefinitions));
}
List<ReportLineItem> line1 = report.getReportLines().get("L10000").getLineItems();
assertEquals(9, line1.get(0).getNumberOfTasks());
assertEquals(0, line1.get(1).getNumberOfTasks());
assertEquals(1, line1.get(2).getNumberOfTasks());
assertEquals(0, line1.get(3).getNumberOfTasks());
assertEquals(0, line1.get(4).getNumberOfTasks());
List<ReportLineItem> line2 = report.getReportLines().get("L20000").getLineItems();
assertEquals(8, line2.get(0).getNumberOfTasks());
assertEquals(0, line2.get(1).getNumberOfTasks());
assertEquals(1, line2.get(2).getNumberOfTasks());
assertEquals(0, line2.get(3).getNumberOfTasks());
assertEquals(1, line2.get(4).getNumberOfTasks());
List<ReportLineItem> line3 = report.getReportLines().get("L30000").getLineItems();
assertEquals(3, line3.get(0).getNumberOfTasks());
assertEquals(0, line3.get(1).getNumberOfTasks());
assertEquals(0, line3.get(2).getNumberOfTasks());
assertEquals(0, line3.get(3).getNumberOfTasks());
assertEquals(4, line3.get(4).getNumberOfTasks());
List<ReportLineItem> line4 = report.getReportLines().get("L40000").getLineItems();
assertEquals(4, line4.get(0).getNumberOfTasks());
assertEquals(0, line4.get(1).getNumberOfTasks());
assertEquals(2, line4.get(2).getNumberOfTasks());
assertEquals(0, line4.get(3).getNumberOfTasks());
assertEquals(4, line4.get(4).getNumberOfTasks());
List<ReportLineItem> line5 = report.getReportLines().get("L50000").getLineItems();
assertEquals(6, line5.get(0).getNumberOfTasks());
assertEquals(0, line5.get(1).getNumberOfTasks());
assertEquals(0, line5.get(2).getNumberOfTasks());
assertEquals(0, line5.get(3).getNumberOfTasks());
assertEquals(7, line5.get(4).getNumberOfTasks());
}
@Test
public void testEachItemOfClassificationReportWithCategoryFilter() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
@ -210,18 +254,18 @@ public class ProvideClassificationReportAccTest {
Report report = taskMonitorService.getClassificationReport(workbasketIds, states, categories, domains,
reportLineItemDefinitions);
List<ReportLineItem> line1 = report.getReportLines()
.get("CLI:000000000000000000000000000000000003")
.getLineItems();
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report, reportLineItemDefinitions));
}
List<ReportLineItem> line1 = report.getReportLines().get("L30000").getLineItems();
assertEquals(2, line1.get(0).getNumberOfTasks());
assertEquals(1, line1.get(1).getNumberOfTasks());
assertEquals(0, line1.get(2).getNumberOfTasks());
assertEquals(1, line1.get(3).getNumberOfTasks());
assertEquals(3, line1.get(4).getNumberOfTasks());
List<ReportLineItem> line2 = report.getReportLines()
.get("CLI:000000000000000000000000000000000004")
.getLineItems();
List<ReportLineItem> line2 = report.getReportLines().get("L40000").getLineItems();
assertEquals(2, line2.get(0).getNumberOfTasks());
assertEquals(2, line2.get(1).getNumberOfTasks());
assertEquals(2, line2.get(2).getNumberOfTasks());
@ -233,7 +277,6 @@ public class ProvideClassificationReportAccTest {
@Test
public void testEachItemOfClassificationReportWithDomainFilter() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
@ -245,45 +288,39 @@ public class ProvideClassificationReportAccTest {
Report report = taskMonitorService.getClassificationReport(workbasketIds, states, categories, domains,
reportLineItemDefinitions);
List<ReportLineItem> line1 = report.getReportLines()
.get("CLI:000000000000000000000000000000000001")
.getLineItems();
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report, reportLineItemDefinitions));
}
List<ReportLineItem> line1 = report.getReportLines().get("L10000").getLineItems();
assertEquals(5, line1.get(0).getNumberOfTasks());
assertEquals(2, line1.get(1).getNumberOfTasks());
assertEquals(1, line1.get(2).getNumberOfTasks());
assertEquals(0, line1.get(3).getNumberOfTasks());
assertEquals(0, line1.get(4).getNumberOfTasks());
List<ReportLineItem> line2 = report.getReportLines()
.get("CLI:000000000000000000000000000000000002")
.getLineItems();
List<ReportLineItem> line2 = report.getReportLines().get("L20000").getLineItems();
assertEquals(3, line2.get(0).getNumberOfTasks());
assertEquals(1, line2.get(1).getNumberOfTasks());
assertEquals(1, line2.get(2).getNumberOfTasks());
assertEquals(1, line2.get(3).getNumberOfTasks());
assertEquals(0, line2.get(4).getNumberOfTasks());
List<ReportLineItem> line3 = report.getReportLines()
.get("CLI:000000000000000000000000000000000003")
.getLineItems();
List<ReportLineItem> line3 = report.getReportLines().get("L30000").getLineItems();
assertEquals(1, line3.get(0).getNumberOfTasks());
assertEquals(0, line3.get(1).getNumberOfTasks());
assertEquals(0, line3.get(2).getNumberOfTasks());
assertEquals(1, line3.get(3).getNumberOfTasks());
assertEquals(1, line3.get(4).getNumberOfTasks());
List<ReportLineItem> line4 = report.getReportLines()
.get("CLI:000000000000000000000000000000000004")
.getLineItems();
List<ReportLineItem> line4 = report.getReportLines().get("L40000").getLineItems();
assertEquals(2, line4.get(0).getNumberOfTasks());
assertEquals(0, line4.get(1).getNumberOfTasks());
assertEquals(0, line4.get(2).getNumberOfTasks());
assertEquals(0, line4.get(3).getNumberOfTasks());
assertEquals(3, line4.get(4).getNumberOfTasks());
List<ReportLineItem> line5 = report.getReportLines()
.get("CLI:000000000000000000000000000000000005")
.getLineItems();
List<ReportLineItem> line5 = report.getReportLines().get("L50000").getLineItems();
assertEquals(0, line5.get(0).getNumberOfTasks());
assertEquals(1, line5.get(1).getNumberOfTasks());
assertEquals(0, line5.get(2).getNumberOfTasks());
@ -323,6 +360,75 @@ public class ProvideClassificationReportAccTest {
return reportLineItemDefinitions;
}
private String reportToString(Report report) {
return reportToString(report, null);
}
private String reportToString(Report report, List<ReportLineItemDefinition> reportLineItemDefinitions) {
String formatColumWidth = "| %-7s ";
String formatFirstColumn = "| %-36s %-4s ";
String formatFirstColumnFirstLine = "| %-29s %12s ";
String formatFirstColumnSumLine = "| %-36s %-5s";
int reportWidth = reportLineItemDefinitions == null ? 46 : reportLineItemDefinitions.size() * 10 + 46;
StringBuilder builder = new StringBuilder();
builder.append("\n");
for (int i = 0; i < reportWidth; i++) {
builder.append("-");
}
builder.append("\n");
builder.append(String.format(formatFirstColumnFirstLine, "Classifications", "Total"));
if (reportLineItemDefinitions != null) {
for (ReportLineItemDefinition def : reportLineItemDefinitions) {
if (def.getLowerAgeLimit() == Integer.MIN_VALUE) {
builder.append(String.format(formatColumWidth, "< " + def.getUpperAgeLimit()));
} else if (def.getUpperAgeLimit() == Integer.MAX_VALUE) {
builder.append(String.format(formatColumWidth, "> " + def.getLowerAgeLimit()));
} else if (def.getLowerAgeLimit() == def.getUpperAgeLimit()) {
if (def.getLowerAgeLimit() == 0) {
builder.append(String.format(formatColumWidth, "today"));
} else {
builder.append(String.format(formatColumWidth, def.getLowerAgeLimit()));
}
} else {
builder.append(
String.format(formatColumWidth, def.getLowerAgeLimit() + ".." + def.getUpperAgeLimit()));
}
}
}
builder.append("|\n");
for (int i = 0; i < reportWidth; i++) {
builder.append("-");
}
builder.append("\n");
for (String rl : report.getReportLines().keySet()) {
builder
.append(String.format(formatFirstColumn, rl, report.getReportLines().get(rl).getTotalNumberOfTasks()));
if (reportLineItemDefinitions != null) {
for (ReportLineItem reportLineItem : report.getReportLines().get(rl).getLineItems()) {
builder.append(String.format(formatColumWidth, reportLineItem.getNumberOfTasks()));
}
}
builder.append("|\n");
for (int i = 0; i < reportWidth; i++) {
builder.append("-");
}
builder.append("\n");
}
builder.append(String.format(formatFirstColumnSumLine, "Total", report.getSumLine().getTotalNumberOfTasks()));
for (ReportLineItem sumLine : report.getSumLine().getLineItems()) {
builder.append(String.format(formatColumWidth, sumLine.getNumberOfTasks()));
}
builder.append("|\n");
for (int i = 0; i < reportWidth; i++) {
builder.append("-");
}
builder.append("\n");
return builder.toString();
}
@AfterClass
public static void cleanUpClass() {
FileUtils.deleteRecursive("~/data", true);

View File

@ -15,6 +15,8 @@ import org.h2.store.fs.FileUtils;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import pro.taskana.TaskMonitorService;
import pro.taskana.TaskanaEngine;
@ -37,6 +39,7 @@ public class ProvideCustomFieldValueReportAccTest {
protected static TaskanaEngineConfiguration taskanaEngineConfiguration;
protected static TaskanaEngine taskanaEngine;
private static final Logger LOGGER = LoggerFactory.getLogger(ProvideCustomFieldValueReportAccTest.class);
@BeforeClass
public static void setupTest() throws Exception {
@ -58,7 +61,6 @@ public class ProvideCustomFieldValueReportAccTest {
@Test
public void testGetTotalNumbersOfTasksOfCustomFieldValueReportForCustom1() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
@ -74,6 +76,10 @@ public class ProvideCustomFieldValueReportAccTest {
Report report = taskMonitorService.getCustomFieldValueReport(workbasketIds, states, categories, domains,
customField);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report));
}
assertNotNull(report);
assertEquals(25, report.getReportLines().get(customFieldValue1).getTotalNumberOfTasks());
assertEquals(10, report.getReportLines().get(customFieldValue2).getTotalNumberOfTasks());
@ -87,7 +93,6 @@ public class ProvideCustomFieldValueReportAccTest {
@Test
public void testGetTotalNumbersOfTasksOfCustomFieldValueReportForCustom2() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
@ -101,6 +106,11 @@ public class ProvideCustomFieldValueReportAccTest {
Report report = taskMonitorService.getCustomFieldValueReport(workbasketIds, states, categories, domains,
customField);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report));
}
assertNotNull(report);
assertEquals(21, report.getReportLines().get(customFieldValue1).getTotalNumberOfTasks());
assertEquals(29, report.getReportLines().get(customFieldValue2).getTotalNumberOfTasks());
@ -114,7 +124,6 @@ public class ProvideCustomFieldValueReportAccTest {
@Test
public void testGetCustomFieldValueReportWithReportLineItemDefinitions() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
@ -131,6 +140,10 @@ public class ProvideCustomFieldValueReportAccTest {
Report report = taskMonitorService.getCustomFieldValueReport(workbasketIds, states, categories, domains,
customField, reportLineItemDefinitions);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report, reportLineItemDefinitions));
}
assertNotNull(report);
assertEquals(25, report.getReportLines().get(customFieldValue1).getTotalNumberOfTasks());
@ -151,48 +164,8 @@ public class ProvideCustomFieldValueReportAccTest {
assertEquals(50, report.getSumLine().getTotalNumberOfTasks());
}
@Test
public void testGetCustomFieldValueReportWithReportLineItemDefinitionsNotInWorkingDays() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL");
List<String> domains = Arrays.asList("DOMAIN_A", "DOMAIN_B", "DOMAIN_C");
List<ReportLineItemDefinition> reportLineItemDefinitions = getListOfReportLineItemDefinitions();
CustomField customField = CustomField.CUSTOM_1;
String customFieldValue1 = "Geschaeftsstelle A";
String customFieldValue2 = "Geschaeftsstelle B";
String customFieldValue3 = "Geschaeftsstelle C";
Report report = taskMonitorService.getCustomFieldValueReport(workbasketIds, states, categories, domains,
customField, reportLineItemDefinitions, false);
assertNotNull(report);
assertEquals(25, report.getReportLines().get(customFieldValue1).getTotalNumberOfTasks());
assertEquals(10, report.getReportLines().get(customFieldValue2).getTotalNumberOfTasks());
assertEquals(15, report.getReportLines().get(customFieldValue3).getTotalNumberOfTasks());
assertEquals(19, report.getSumLine().getLineItems().get(0).getNumberOfTasks());
assertEquals(11, report.getSumLine().getLineItems().get(1).getNumberOfTasks());
assertEquals(0, report.getSumLine().getLineItems().get(2).getNumberOfTasks());
assertEquals(0, report.getSumLine().getLineItems().get(3).getNumberOfTasks());
assertEquals(4, report.getSumLine().getLineItems().get(4).getNumberOfTasks());
assertEquals(0, report.getSumLine().getLineItems().get(5).getNumberOfTasks());
assertEquals(0, report.getSumLine().getLineItems().get(6).getNumberOfTasks());
assertEquals(7, report.getSumLine().getLineItems().get(7).getNumberOfTasks());
assertEquals(9, report.getSumLine().getLineItems().get(8).getNumberOfTasks());
assertEquals(3, report.getReportLines().size());
assertEquals(50, report.getSumLine().getTotalNumberOfTasks());
}
@Test
public void testEachItemOfCustomFieldValueReport() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
@ -209,6 +182,10 @@ public class ProvideCustomFieldValueReportAccTest {
Report report = taskMonitorService.getCustomFieldValueReport(workbasketIds, states, categories, domains,
customField, reportLineItemDefinitions);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report, reportLineItemDefinitions));
}
List<ReportLineItem> line1 = report.getReportLines().get(customFieldValue1).getLineItems();
assertEquals(11, line1.get(0).getNumberOfTasks());
assertEquals(4, line1.get(1).getNumberOfTasks());
@ -232,8 +209,51 @@ public class ProvideCustomFieldValueReportAccTest {
}
@Test
public void testEachItemOfCustomFieldValueReportWithCategoryFilter() {
public void testEachItemOfCustomFieldValueReportNotInWorkingDays() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL");
List<String> domains = Arrays.asList("DOMAIN_A", "DOMAIN_B", "DOMAIN_C");
List<ReportLineItemDefinition> reportLineItemDefinitions = getShortListOfReportLineItemDefinitions();
CustomField customField = CustomField.CUSTOM_1;
String customFieldValue1 = "Geschaeftsstelle A";
String customFieldValue2 = "Geschaeftsstelle B";
String customFieldValue3 = "Geschaeftsstelle C";
Report report = taskMonitorService.getCustomFieldValueReport(workbasketIds, states, categories, domains,
customField, reportLineItemDefinitions, false);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report, reportLineItemDefinitions));
}
List<ReportLineItem> line1 = report.getReportLines().get(customFieldValue1).getLineItems();
assertEquals(15, line1.get(0).getNumberOfTasks());
assertEquals(0, line1.get(1).getNumberOfTasks());
assertEquals(3, line1.get(2).getNumberOfTasks());
assertEquals(0, line1.get(3).getNumberOfTasks());
assertEquals(7, line1.get(4).getNumberOfTasks());
List<ReportLineItem> line2 = report.getReportLines().get(customFieldValue2).getLineItems();
assertEquals(8, line2.get(0).getNumberOfTasks());
assertEquals(0, line2.get(1).getNumberOfTasks());
assertEquals(0, line2.get(2).getNumberOfTasks());
assertEquals(0, line2.get(3).getNumberOfTasks());
assertEquals(2, line2.get(4).getNumberOfTasks());
List<ReportLineItem> line3 = report.getReportLines().get(customFieldValue3).getLineItems();
assertEquals(7, line3.get(0).getNumberOfTasks());
assertEquals(0, line3.get(1).getNumberOfTasks());
assertEquals(1, line3.get(2).getNumberOfTasks());
assertEquals(0, line3.get(3).getNumberOfTasks());
assertEquals(7, line3.get(4).getNumberOfTasks());
}
@Test
public void testEachItemOfCustomFieldValueReportWithCategoryFilter() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
@ -250,6 +270,10 @@ public class ProvideCustomFieldValueReportAccTest {
Report report = taskMonitorService.getCustomFieldValueReport(workbasketIds, states, categories, domains,
customField, reportLineItemDefinitions);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report, reportLineItemDefinitions));
}
List<ReportLineItem> line1 = report.getReportLines().get(customFieldValue1).getLineItems();
assertEquals(2, line1.get(0).getNumberOfTasks());
assertEquals(1, line1.get(1).getNumberOfTasks());
@ -274,7 +298,6 @@ public class ProvideCustomFieldValueReportAccTest {
@Test
public void testEachItemOfCustomFieldValueReportWithDomainFilter() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
@ -291,6 +314,10 @@ public class ProvideCustomFieldValueReportAccTest {
Report report = taskMonitorService.getCustomFieldValueReport(workbasketIds, states, categories, domains,
customField, reportLineItemDefinitions);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report, reportLineItemDefinitions));
}
List<ReportLineItem> line1 = report.getReportLines().get(customFieldValue1).getLineItems();
assertEquals(8, line1.get(0).getNumberOfTasks());
assertEquals(1, line1.get(1).getNumberOfTasks());
@ -345,6 +372,75 @@ public class ProvideCustomFieldValueReportAccTest {
return reportLineItemDefinitions;
}
private String reportToString(Report report) {
return reportToString(report, null);
}
private String reportToString(Report report, List<ReportLineItemDefinition> reportLineItemDefinitions) {
String formatColumWidth = "| %-7s ";
String formatFirstColumn = "| %-36s %-4s ";
String formatFirstColumnFirstLine = "| %-29s %12s ";
String formatFirstColumnSumLine = "| %-36s %-5s";
int reportWidth = reportLineItemDefinitions == null ? 46 : reportLineItemDefinitions.size() * 10 + 46;
StringBuilder builder = new StringBuilder();
builder.append("\n");
for (int i = 0; i < reportWidth; i++) {
builder.append("-");
}
builder.append("\n");
builder.append(String.format(formatFirstColumnFirstLine, "Custom field values", "Total"));
if (reportLineItemDefinitions != null) {
for (ReportLineItemDefinition def : reportLineItemDefinitions) {
if (def.getLowerAgeLimit() == Integer.MIN_VALUE) {
builder.append(String.format(formatColumWidth, "< " + def.getUpperAgeLimit()));
} else if (def.getUpperAgeLimit() == Integer.MAX_VALUE) {
builder.append(String.format(formatColumWidth, "> " + def.getLowerAgeLimit()));
} else if (def.getLowerAgeLimit() == def.getUpperAgeLimit()) {
if (def.getLowerAgeLimit() == 0) {
builder.append(String.format(formatColumWidth, "today"));
} else {
builder.append(String.format(formatColumWidth, def.getLowerAgeLimit()));
}
} else {
builder.append(
String.format(formatColumWidth, def.getLowerAgeLimit() + ".." + def.getUpperAgeLimit()));
}
}
}
builder.append("|\n");
for (int i = 0; i < reportWidth; i++) {
builder.append("-");
}
builder.append("\n");
for (String rl : report.getReportLines().keySet()) {
builder
.append(String.format(formatFirstColumn, rl, report.getReportLines().get(rl).getTotalNumberOfTasks()));
if (reportLineItemDefinitions != null) {
for (ReportLineItem reportLineItem : report.getReportLines().get(rl).getLineItems()) {
builder.append(String.format(formatColumWidth, reportLineItem.getNumberOfTasks()));
}
}
builder.append("|\n");
for (int i = 0; i < reportWidth; i++) {
builder.append("-");
}
builder.append("\n");
}
builder.append(String.format(formatFirstColumnSumLine, "Total", report.getSumLine().getTotalNumberOfTasks()));
for (ReportLineItem sumLine : report.getSumLine().getLineItems()) {
builder.append(String.format(formatColumWidth, sumLine.getNumberOfTasks()));
}
builder.append("|\n");
for (int i = 0; i < reportWidth; i++) {
builder.append("-");
}
builder.append("\n");
return builder.toString();
}
@AfterClass
public static void cleanUpClass() {
FileUtils.deleteRecursive("~/data", true);

View File

@ -15,6 +15,8 @@ import org.h2.store.fs.FileUtils;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import pro.taskana.TaskMonitorService;
import pro.taskana.TaskanaEngine;
@ -23,7 +25,9 @@ import pro.taskana.configuration.TaskanaEngineConfiguration;
import pro.taskana.database.TestDataGenerator;
import pro.taskana.impl.DetailedClassificationReport;
import pro.taskana.impl.DetailedReportLine;
import pro.taskana.impl.Report;
import pro.taskana.impl.ReportLine;
import pro.taskana.impl.ReportLineItem;
import pro.taskana.impl.ReportLineItemDefinition;
import pro.taskana.impl.TaskState;
import pro.taskana.impl.TaskanaEngineImpl;
@ -37,6 +41,7 @@ public class ProvideDetailedClassificationReportAccTest {
protected static TaskanaEngineConfiguration taskanaEngineConfiguration;
protected static TaskanaEngine taskanaEngine;
private static final Logger LOGGER = LoggerFactory.getLogger(ProvideDetailedClassificationReportAccTest.class);
@BeforeClass
public static void setupTest() throws Exception {
@ -58,7 +63,6 @@ public class ProvideDetailedClassificationReportAccTest {
@Test
public void testGetTotalNumbersOfTasksOfDetailedClassificationReport() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
@ -69,42 +73,41 @@ public class ProvideDetailedClassificationReportAccTest {
DetailedClassificationReport report = taskMonitorService.getDetailedClassificationReport(workbasketIds, states,
categories, domains);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report));
}
assertNotNull(report);
DetailedReportLine line1 = (DetailedReportLine) report.getReportLines()
.get("CLI:000000000000000000000000000000000001");
DetailedReportLine line1 = (DetailedReportLine) report.getReportLines().get("L10000");
assertEquals(10, line1.getTotalNumberOfTasks());
assertEquals(3, line1.getDetailLines().get("CLI:000000000000000000000000000000000006").getTotalNumberOfTasks());
assertEquals(3, line1.getDetailLines().get("L11000").getTotalNumberOfTasks());
assertEquals(7, line1.getDetailLines().get("N/A").getTotalNumberOfTasks());
assertEquals(0, line1.getLineItems().size());
assertEquals(2, line1.getDetailLines().size());
DetailedReportLine line2 = (DetailedReportLine) report.getReportLines()
.get("CLI:000000000000000000000000000000000002");
DetailedReportLine line2 = (DetailedReportLine) report.getReportLines().get("L20000");
assertEquals(10, line2.getTotalNumberOfTasks());
assertEquals(4, line2.getDetailLines().get("CLI:000000000000000000000000000000000007").getTotalNumberOfTasks());
assertEquals(4, line2.getDetailLines().get("L22000").getTotalNumberOfTasks());
assertEquals(6, line2.getDetailLines().get("N/A").getTotalNumberOfTasks());
assertEquals(0, line2.getLineItems().size());
assertEquals(2, line2.getDetailLines().size());
DetailedReportLine line3 = (DetailedReportLine) report.getReportLines()
.get("CLI:000000000000000000000000000000000003");
DetailedReportLine line3 = (DetailedReportLine) report.getReportLines().get("L30000");
assertEquals(7, line3.getTotalNumberOfTasks());
assertEquals(3, line3.getDetailLines().get("CLI:000000000000000000000000000000000008").getTotalNumberOfTasks());
assertEquals(1, line3.getDetailLines().get("CLI:000000000000000000000000000000000009").getTotalNumberOfTasks());
assertEquals(3, line3.getDetailLines().get("L33000").getTotalNumberOfTasks());
assertEquals(1, line3.getDetailLines().get("L99000").getTotalNumberOfTasks());
assertEquals(3, line3.getDetailLines().get("N/A").getTotalNumberOfTasks());
assertEquals(0, line3.getLineItems().size());
assertEquals(3, line3.getDetailLines().size());
DetailedReportLine line4 = (DetailedReportLine) report.getReportLines()
.get("CLI:000000000000000000000000000000000004");
DetailedReportLine line4 = (DetailedReportLine) report.getReportLines().get("L40000");
assertEquals(10, line4.getTotalNumberOfTasks());
assertEquals(10, line4.getDetailLines().get("N/A").getTotalNumberOfTasks());
assertEquals(0, line4.getLineItems().size());
assertEquals(1, line4.getDetailLines().size());
DetailedReportLine line5 = (DetailedReportLine) report.getReportLines()
.get("CLI:000000000000000000000000000000000005");
DetailedReportLine line5 = (DetailedReportLine) report.getReportLines().get("L50000");
assertEquals(13, line5.getTotalNumberOfTasks());
assertEquals(13, line5.getDetailLines().get("N/A").getTotalNumberOfTasks());
assertEquals(0, line5.getLineItems().size());
@ -115,7 +118,6 @@ public class ProvideDetailedClassificationReportAccTest {
@Test
public void testGetDetailedClassificationReportWithReportLineItemDefinitions() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
@ -127,18 +129,17 @@ public class ProvideDetailedClassificationReportAccTest {
DetailedClassificationReport report = taskMonitorService.getDetailedClassificationReport(workbasketIds, states,
categories, domains, reportLineItemDefinitions);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report, reportLineItemDefinitions));
}
assertNotNull(report);
assertEquals(10,
report.getReportLines().get("CLI:000000000000000000000000000000000001").getTotalNumberOfTasks());
assertEquals(10,
report.getReportLines().get("CLI:000000000000000000000000000000000002").getTotalNumberOfTasks());
assertEquals(7,
report.getReportLines().get("CLI:000000000000000000000000000000000003").getTotalNumberOfTasks());
assertEquals(10,
report.getReportLines().get("CLI:000000000000000000000000000000000004").getTotalNumberOfTasks());
assertEquals(13,
report.getReportLines().get("CLI:000000000000000000000000000000000005").getTotalNumberOfTasks());
assertEquals(10, report.getReportLines().get("L10000").getTotalNumberOfTasks());
assertEquals(10, report.getReportLines().get("L20000").getTotalNumberOfTasks());
assertEquals(7, report.getReportLines().get("L30000").getTotalNumberOfTasks());
assertEquals(10, report.getReportLines().get("L40000").getTotalNumberOfTasks());
assertEquals(13, report.getReportLines().get("L50000").getTotalNumberOfTasks());
assertEquals(10, report.getSumLine().getLineItems().get(0).getNumberOfTasks());
assertEquals(9, report.getSumLine().getLineItems().get(1).getNumberOfTasks());
@ -154,7 +155,6 @@ public class ProvideDetailedClassificationReportAccTest {
@Test
public void testEachItemOfDetailedClassificationReport() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
@ -166,15 +166,18 @@ public class ProvideDetailedClassificationReportAccTest {
DetailedClassificationReport report = taskMonitorService.getDetailedClassificationReport(workbasketIds, states,
categories, domains, reportLineItemDefinitions);
DetailedReportLine line1 = (DetailedReportLine) report.getReportLines()
.get("CLI:000000000000000000000000000000000001");
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report, reportLineItemDefinitions));
}
DetailedReportLine line1 = (DetailedReportLine) report.getReportLines().get("L10000");
assertEquals(7, line1.getLineItems().get(0).getNumberOfTasks());
assertEquals(2, line1.getLineItems().get(1).getNumberOfTasks());
assertEquals(1, line1.getLineItems().get(2).getNumberOfTasks());
assertEquals(0, line1.getLineItems().get(3).getNumberOfTasks());
assertEquals(0, line1.getLineItems().get(4).getNumberOfTasks());
ReportLine detailedLine1 = line1.getDetailLines().get("CLI:000000000000000000000000000000000006");
ReportLine detailedLine1 = line1.getDetailLines().get("L11000");
assertEquals(2, detailedLine1.getLineItems().get(0).getNumberOfTasks());
assertEquals(0, detailedLine1.getLineItems().get(1).getNumberOfTasks());
assertEquals(1, detailedLine1.getLineItems().get(2).getNumberOfTasks());
@ -188,15 +191,14 @@ public class ProvideDetailedClassificationReportAccTest {
assertEquals(0, detailedLineNoAttachment1.getLineItems().get(3).getNumberOfTasks());
assertEquals(0, detailedLineNoAttachment1.getLineItems().get(4).getNumberOfTasks());
DetailedReportLine line2 = (DetailedReportLine) report.getReportLines()
.get("CLI:000000000000000000000000000000000002");
DetailedReportLine line2 = (DetailedReportLine) report.getReportLines().get("L20000");
assertEquals(5, line2.getLineItems().get(0).getNumberOfTasks());
assertEquals(3, line2.getLineItems().get(1).getNumberOfTasks());
assertEquals(1, line2.getLineItems().get(2).getNumberOfTasks());
assertEquals(1, line2.getLineItems().get(3).getNumberOfTasks());
assertEquals(0, line2.getLineItems().get(4).getNumberOfTasks());
ReportLine detailedLine2 = line2.getDetailLines().get("CLI:000000000000000000000000000000000007");
ReportLine detailedLine2 = line2.getDetailLines().get("L22000");
assertEquals(1, detailedLine2.getLineItems().get(0).getNumberOfTasks());
assertEquals(1, detailedLine2.getLineItems().get(1).getNumberOfTasks());
assertEquals(1, detailedLine2.getLineItems().get(2).getNumberOfTasks());
@ -210,22 +212,21 @@ public class ProvideDetailedClassificationReportAccTest {
assertEquals(0, detailedLineNoAttachment2.getLineItems().get(3).getNumberOfTasks());
assertEquals(0, detailedLineNoAttachment2.getLineItems().get(4).getNumberOfTasks());
DetailedReportLine line3 = (DetailedReportLine) report.getReportLines()
.get("CLI:000000000000000000000000000000000003");
DetailedReportLine line3 = (DetailedReportLine) report.getReportLines().get("L30000");
assertEquals(2, line3.getLineItems().get(0).getNumberOfTasks());
assertEquals(1, line3.getLineItems().get(1).getNumberOfTasks());
assertEquals(0, line3.getLineItems().get(2).getNumberOfTasks());
assertEquals(1, line3.getLineItems().get(3).getNumberOfTasks());
assertEquals(3, line3.getLineItems().get(4).getNumberOfTasks());
ReportLine detailedLine3a = line3.getDetailLines().get("CLI:000000000000000000000000000000000008");
ReportLine detailedLine3a = line3.getDetailLines().get("L33000");
assertEquals(0, detailedLine3a.getLineItems().get(0).getNumberOfTasks());
assertEquals(1, detailedLine3a.getLineItems().get(1).getNumberOfTasks());
assertEquals(0, detailedLine3a.getLineItems().get(2).getNumberOfTasks());
assertEquals(1, detailedLine3a.getLineItems().get(3).getNumberOfTasks());
assertEquals(1, detailedLine3a.getLineItems().get(4).getNumberOfTasks());
ReportLine detailedLine3b = line3.getDetailLines().get("CLI:000000000000000000000000000000000009");
ReportLine detailedLine3b = line3.getDetailLines().get("L99000");
assertEquals(0, detailedLine3b.getLineItems().get(0).getNumberOfTasks());
assertEquals(0, detailedLine3b.getLineItems().get(1).getNumberOfTasks());
assertEquals(0, detailedLine3b.getLineItems().get(2).getNumberOfTasks());
@ -239,8 +240,7 @@ public class ProvideDetailedClassificationReportAccTest {
assertEquals(0, detailedLineNoAttachment3.getLineItems().get(3).getNumberOfTasks());
assertEquals(1, detailedLineNoAttachment3.getLineItems().get(4).getNumberOfTasks());
DetailedReportLine line4 = (DetailedReportLine) report.getReportLines()
.get("CLI:000000000000000000000000000000000004");
DetailedReportLine line4 = (DetailedReportLine) report.getReportLines().get("L40000");
assertEquals(2, line4.getLineItems().get(0).getNumberOfTasks());
assertEquals(2, line4.getLineItems().get(1).getNumberOfTasks());
assertEquals(2, line4.getLineItems().get(2).getNumberOfTasks());
@ -254,8 +254,7 @@ public class ProvideDetailedClassificationReportAccTest {
assertEquals(0, detailedLineNoAttachment4.getLineItems().get(3).getNumberOfTasks());
assertEquals(4, detailedLineNoAttachment4.getLineItems().get(4).getNumberOfTasks());
DetailedReportLine line5 = (DetailedReportLine) report.getReportLines()
.get("CLI:000000000000000000000000000000000005");
DetailedReportLine line5 = (DetailedReportLine) report.getReportLines().get("L50000");
assertEquals(3, line5.getLineItems().get(0).getNumberOfTasks());
assertEquals(3, line5.getLineItems().get(1).getNumberOfTasks());
assertEquals(0, line5.getLineItems().get(2).getNumberOfTasks());
@ -271,8 +270,123 @@ public class ProvideDetailedClassificationReportAccTest {
}
@Test
public void testEachItemOfDetailedClassificationReportWithCategoryFilter() {
public void testEachItemOfDetailedClassificationReportNotInWorkingDays() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL");
List<String> domains = Arrays.asList("DOMAIN_A", "DOMAIN_B", "DOMAIN_C");
List<ReportLineItemDefinition> reportLineItemDefinitions = getShortListOfReportLineItemDefinitions();
DetailedClassificationReport report = taskMonitorService.getDetailedClassificationReport(workbasketIds, states,
categories, domains, reportLineItemDefinitions, false);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report, reportLineItemDefinitions));
}
DetailedReportLine line1 = (DetailedReportLine) report.getReportLines().get("L10000");
assertEquals(9, line1.getLineItems().get(0).getNumberOfTasks());
assertEquals(0, line1.getLineItems().get(1).getNumberOfTasks());
assertEquals(1, line1.getLineItems().get(2).getNumberOfTasks());
assertEquals(0, line1.getLineItems().get(3).getNumberOfTasks());
assertEquals(0, line1.getLineItems().get(4).getNumberOfTasks());
ReportLine detailedLine1 = line1.getDetailLines().get("L11000");
assertEquals(2, detailedLine1.getLineItems().get(0).getNumberOfTasks());
assertEquals(0, detailedLine1.getLineItems().get(1).getNumberOfTasks());
assertEquals(1, detailedLine1.getLineItems().get(2).getNumberOfTasks());
assertEquals(0, detailedLine1.getLineItems().get(3).getNumberOfTasks());
assertEquals(0, detailedLine1.getLineItems().get(4).getNumberOfTasks());
ReportLine detailedLineNoAttachment1 = line1.getDetailLines().get("N/A");
assertEquals(7, detailedLineNoAttachment1.getLineItems().get(0).getNumberOfTasks());
assertEquals(0, detailedLineNoAttachment1.getLineItems().get(1).getNumberOfTasks());
assertEquals(0, detailedLineNoAttachment1.getLineItems().get(2).getNumberOfTasks());
assertEquals(0, detailedLineNoAttachment1.getLineItems().get(3).getNumberOfTasks());
assertEquals(0, detailedLineNoAttachment1.getLineItems().get(4).getNumberOfTasks());
DetailedReportLine line2 = (DetailedReportLine) report.getReportLines().get("L20000");
assertEquals(8, line2.getLineItems().get(0).getNumberOfTasks());
assertEquals(0, line2.getLineItems().get(1).getNumberOfTasks());
assertEquals(1, line2.getLineItems().get(2).getNumberOfTasks());
assertEquals(0, line2.getLineItems().get(3).getNumberOfTasks());
assertEquals(1, line2.getLineItems().get(4).getNumberOfTasks());
ReportLine detailedLine2 = line2.getDetailLines().get("L22000");
assertEquals(2, detailedLine2.getLineItems().get(0).getNumberOfTasks());
assertEquals(0, detailedLine2.getLineItems().get(1).getNumberOfTasks());
assertEquals(1, detailedLine2.getLineItems().get(2).getNumberOfTasks());
assertEquals(0, detailedLine2.getLineItems().get(3).getNumberOfTasks());
assertEquals(1, detailedLine2.getLineItems().get(4).getNumberOfTasks());
ReportLine detailedLineNoAttachment2 = line2.getDetailLines().get("N/A");
assertEquals(6, detailedLineNoAttachment2.getLineItems().get(0).getNumberOfTasks());
assertEquals(0, detailedLineNoAttachment2.getLineItems().get(1).getNumberOfTasks());
assertEquals(0, detailedLineNoAttachment2.getLineItems().get(2).getNumberOfTasks());
assertEquals(0, detailedLineNoAttachment2.getLineItems().get(3).getNumberOfTasks());
assertEquals(0, detailedLineNoAttachment2.getLineItems().get(4).getNumberOfTasks());
DetailedReportLine line3 = (DetailedReportLine) report.getReportLines().get("L30000");
assertEquals(3, line3.getLineItems().get(0).getNumberOfTasks());
assertEquals(0, line3.getLineItems().get(1).getNumberOfTasks());
assertEquals(0, line3.getLineItems().get(2).getNumberOfTasks());
assertEquals(0, line3.getLineItems().get(3).getNumberOfTasks());
assertEquals(4, line3.getLineItems().get(4).getNumberOfTasks());
ReportLine detailedLine3a = line3.getDetailLines().get("L33000");
assertEquals(1, detailedLine3a.getLineItems().get(0).getNumberOfTasks());
assertEquals(0, detailedLine3a.getLineItems().get(1).getNumberOfTasks());
assertEquals(0, detailedLine3a.getLineItems().get(2).getNumberOfTasks());
assertEquals(0, detailedLine3a.getLineItems().get(3).getNumberOfTasks());
assertEquals(2, detailedLine3a.getLineItems().get(4).getNumberOfTasks());
ReportLine detailedLine3b = line3.getDetailLines().get("L99000");
assertEquals(0, detailedLine3b.getLineItems().get(0).getNumberOfTasks());
assertEquals(0, detailedLine3b.getLineItems().get(1).getNumberOfTasks());
assertEquals(0, detailedLine3b.getLineItems().get(2).getNumberOfTasks());
assertEquals(0, detailedLine3b.getLineItems().get(3).getNumberOfTasks());
assertEquals(1, detailedLine3b.getLineItems().get(4).getNumberOfTasks());
ReportLine detailedLineNoAttachment3 = line3.getDetailLines().get("N/A");
assertEquals(2, detailedLineNoAttachment3.getLineItems().get(0).getNumberOfTasks());
assertEquals(0, detailedLineNoAttachment3.getLineItems().get(1).getNumberOfTasks());
assertEquals(0, detailedLineNoAttachment3.getLineItems().get(2).getNumberOfTasks());
assertEquals(0, detailedLineNoAttachment3.getLineItems().get(3).getNumberOfTasks());
assertEquals(1, detailedLineNoAttachment3.getLineItems().get(4).getNumberOfTasks());
DetailedReportLine line4 = (DetailedReportLine) report.getReportLines().get("L40000");
assertEquals(4, line4.getLineItems().get(0).getNumberOfTasks());
assertEquals(0, line4.getLineItems().get(1).getNumberOfTasks());
assertEquals(2, line4.getLineItems().get(2).getNumberOfTasks());
assertEquals(0, line4.getLineItems().get(3).getNumberOfTasks());
assertEquals(4, line4.getLineItems().get(4).getNumberOfTasks());
ReportLine detailedLineNoAttachment4 = line4.getDetailLines().get("N/A");
assertEquals(4, detailedLineNoAttachment4.getLineItems().get(0).getNumberOfTasks());
assertEquals(0, detailedLineNoAttachment4.getLineItems().get(1).getNumberOfTasks());
assertEquals(2, detailedLineNoAttachment4.getLineItems().get(2).getNumberOfTasks());
assertEquals(0, detailedLineNoAttachment4.getLineItems().get(3).getNumberOfTasks());
assertEquals(4, detailedLineNoAttachment4.getLineItems().get(4).getNumberOfTasks());
DetailedReportLine line5 = (DetailedReportLine) report.getReportLines().get("L50000");
assertEquals(6, line5.getLineItems().get(0).getNumberOfTasks());
assertEquals(0, line5.getLineItems().get(1).getNumberOfTasks());
assertEquals(0, line5.getLineItems().get(2).getNumberOfTasks());
assertEquals(0, line5.getLineItems().get(3).getNumberOfTasks());
assertEquals(7, line5.getLineItems().get(4).getNumberOfTasks());
ReportLine detailedLineNoAttachment5 = line5.getDetailLines().get("N/A");
assertEquals(6, detailedLineNoAttachment5.getLineItems().get(0).getNumberOfTasks());
assertEquals(0, detailedLineNoAttachment5.getLineItems().get(1).getNumberOfTasks());
assertEquals(0, detailedLineNoAttachment5.getLineItems().get(2).getNumberOfTasks());
assertEquals(0, detailedLineNoAttachment5.getLineItems().get(3).getNumberOfTasks());
assertEquals(7, detailedLineNoAttachment5.getLineItems().get(4).getNumberOfTasks());
}
@Test
public void testEachItemOfDetailedClassificationReportWithCategoryFilter() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
@ -284,22 +398,25 @@ public class ProvideDetailedClassificationReportAccTest {
DetailedClassificationReport report = taskMonitorService.getDetailedClassificationReport(workbasketIds, states,
categories, domains, reportLineItemDefinitions);
DetailedReportLine line1 = (DetailedReportLine) report.getReportLines()
.get("CLI:000000000000000000000000000000000003");
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report, reportLineItemDefinitions));
}
DetailedReportLine line1 = (DetailedReportLine) report.getReportLines().get("L30000");
assertEquals(2, line1.getLineItems().get(0).getNumberOfTasks());
assertEquals(1, line1.getLineItems().get(1).getNumberOfTasks());
assertEquals(0, line1.getLineItems().get(2).getNumberOfTasks());
assertEquals(1, line1.getLineItems().get(3).getNumberOfTasks());
assertEquals(3, line1.getLineItems().get(4).getNumberOfTasks());
ReportLine detailedLine1a = line1.getDetailLines().get("CLI:000000000000000000000000000000000008");
ReportLine detailedLine1a = line1.getDetailLines().get("L33000");
assertEquals(0, detailedLine1a.getLineItems().get(0).getNumberOfTasks());
assertEquals(1, detailedLine1a.getLineItems().get(1).getNumberOfTasks());
assertEquals(0, detailedLine1a.getLineItems().get(2).getNumberOfTasks());
assertEquals(1, detailedLine1a.getLineItems().get(3).getNumberOfTasks());
assertEquals(1, detailedLine1a.getLineItems().get(4).getNumberOfTasks());
ReportLine detailedLine1b = line1.getDetailLines().get("CLI:000000000000000000000000000000000009");
ReportLine detailedLine1b = line1.getDetailLines().get("L99000");
assertEquals(0, detailedLine1b.getLineItems().get(0).getNumberOfTasks());
assertEquals(0, detailedLine1b.getLineItems().get(1).getNumberOfTasks());
assertEquals(0, detailedLine1b.getLineItems().get(2).getNumberOfTasks());
@ -313,8 +430,7 @@ public class ProvideDetailedClassificationReportAccTest {
assertEquals(0, detailedLine1WithoutAttachment.getLineItems().get(3).getNumberOfTasks());
assertEquals(1, detailedLine1WithoutAttachment.getLineItems().get(4).getNumberOfTasks());
DetailedReportLine line2 = (DetailedReportLine) report.getReportLines()
.get("CLI:000000000000000000000000000000000004");
DetailedReportLine line2 = (DetailedReportLine) report.getReportLines().get("L40000");
assertEquals(2, line2.getLineItems().get(0).getNumberOfTasks());
assertEquals(2, line2.getLineItems().get(1).getNumberOfTasks());
assertEquals(2, line2.getLineItems().get(2).getNumberOfTasks());
@ -333,7 +449,6 @@ public class ProvideDetailedClassificationReportAccTest {
@Test
public void testEachItemOfDetailedClassificationReportWithDomainFilter() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
@ -345,15 +460,18 @@ public class ProvideDetailedClassificationReportAccTest {
DetailedClassificationReport report = taskMonitorService.getDetailedClassificationReport(workbasketIds, states,
categories, domains, reportLineItemDefinitions);
DetailedReportLine line1 = (DetailedReportLine) report.getReportLines()
.get("CLI:000000000000000000000000000000000001");
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report, reportLineItemDefinitions));
}
DetailedReportLine line1 = (DetailedReportLine) report.getReportLines().get("L10000");
assertEquals(5, line1.getLineItems().get(0).getNumberOfTasks());
assertEquals(2, line1.getLineItems().get(1).getNumberOfTasks());
assertEquals(1, line1.getLineItems().get(2).getNumberOfTasks());
assertEquals(0, line1.getLineItems().get(3).getNumberOfTasks());
assertEquals(0, line1.getLineItems().get(4).getNumberOfTasks());
ReportLine detailedLine1 = line1.getDetailLines().get("CLI:000000000000000000000000000000000006");
ReportLine detailedLine1 = line1.getDetailLines().get("L11000");
assertEquals(1, detailedLine1.getLineItems().get(0).getNumberOfTasks());
assertEquals(0, detailedLine1.getLineItems().get(1).getNumberOfTasks());
assertEquals(1, detailedLine1.getLineItems().get(2).getNumberOfTasks());
@ -367,15 +485,14 @@ public class ProvideDetailedClassificationReportAccTest {
assertEquals(0, detailedLineNoAttachment1.getLineItems().get(3).getNumberOfTasks());
assertEquals(0, detailedLineNoAttachment1.getLineItems().get(4).getNumberOfTasks());
DetailedReportLine line2 = (DetailedReportLine) report.getReportLines()
.get("CLI:000000000000000000000000000000000002");
DetailedReportLine line2 = (DetailedReportLine) report.getReportLines().get("L20000");
assertEquals(3, line2.getLineItems().get(0).getNumberOfTasks());
assertEquals(1, line2.getLineItems().get(1).getNumberOfTasks());
assertEquals(1, line2.getLineItems().get(2).getNumberOfTasks());
assertEquals(1, line2.getLineItems().get(3).getNumberOfTasks());
assertEquals(0, line2.getLineItems().get(4).getNumberOfTasks());
ReportLine detailedLine2 = line2.getDetailLines().get("CLI:000000000000000000000000000000000007");
ReportLine detailedLine2 = line2.getDetailLines().get("L22000");
assertEquals(1, detailedLine2.getLineItems().get(0).getNumberOfTasks());
assertEquals(0, detailedLine2.getLineItems().get(1).getNumberOfTasks());
assertEquals(1, detailedLine2.getLineItems().get(2).getNumberOfTasks());
@ -389,15 +506,14 @@ public class ProvideDetailedClassificationReportAccTest {
assertEquals(0, detailedLineNoAttachment2.getLineItems().get(3).getNumberOfTasks());
assertEquals(0, detailedLineNoAttachment2.getLineItems().get(4).getNumberOfTasks());
DetailedReportLine line3 = (DetailedReportLine) report.getReportLines()
.get("CLI:000000000000000000000000000000000003");
DetailedReportLine line3 = (DetailedReportLine) report.getReportLines().get("L30000");
assertEquals(1, line3.getLineItems().get(0).getNumberOfTasks());
assertEquals(0, line3.getLineItems().get(1).getNumberOfTasks());
assertEquals(0, line3.getLineItems().get(2).getNumberOfTasks());
assertEquals(1, line3.getLineItems().get(3).getNumberOfTasks());
assertEquals(1, line3.getLineItems().get(4).getNumberOfTasks());
ReportLine detailedLine3 = line3.getDetailLines().get("CLI:000000000000000000000000000000000008");
ReportLine detailedLine3 = line3.getDetailLines().get("L33000");
assertEquals(0, detailedLine3.getLineItems().get(0).getNumberOfTasks());
assertEquals(0, detailedLine3.getLineItems().get(1).getNumberOfTasks());
assertEquals(0, detailedLine3.getLineItems().get(2).getNumberOfTasks());
@ -411,8 +527,7 @@ public class ProvideDetailedClassificationReportAccTest {
assertEquals(0, detailedLineNoAttachment3.getLineItems().get(3).getNumberOfTasks());
assertEquals(0, detailedLineNoAttachment3.getLineItems().get(4).getNumberOfTasks());
DetailedReportLine line4 = (DetailedReportLine) report.getReportLines()
.get("CLI:000000000000000000000000000000000004");
DetailedReportLine line4 = (DetailedReportLine) report.getReportLines().get("L40000");
assertEquals(2, line4.getLineItems().get(0).getNumberOfTasks());
assertEquals(0, line4.getLineItems().get(1).getNumberOfTasks());
assertEquals(0, line4.getLineItems().get(2).getNumberOfTasks());
@ -426,8 +541,7 @@ public class ProvideDetailedClassificationReportAccTest {
assertEquals(0, detailedLineNoAttachment4.getLineItems().get(3).getNumberOfTasks());
assertEquals(3, detailedLineNoAttachment4.getLineItems().get(4).getNumberOfTasks());
DetailedReportLine line5 = (DetailedReportLine) report.getReportLines()
.get("CLI:000000000000000000000000000000000005");
DetailedReportLine line5 = (DetailedReportLine) report.getReportLines().get("L50000");
assertEquals(0, line5.getLineItems().get(0).getNumberOfTasks());
assertEquals(1, line5.getLineItems().get(1).getNumberOfTasks());
assertEquals(0, line5.getLineItems().get(2).getNumberOfTasks());
@ -474,6 +588,90 @@ public class ProvideDetailedClassificationReportAccTest {
return reportLineItemDefinitions;
}
private String reportToString(Report report) {
return reportToString(report, null);
}
private String reportToString(Report report, List<ReportLineItemDefinition> reportLineItemDefinitions) {
String formatColumWidth = "| %-7s ";
String formatFirstColumn = "| %-36s %-4s ";
String formatFirstColumnFirstLine = "| %-29s %12s ";
String formatFirstColumnDetailLines = "| + %-34s %-4s ";
String formatFirstColumnSumLine = "| %-36s %-5s";
int reportWidth = reportLineItemDefinitions == null ? 46 : reportLineItemDefinitions.size() * 10 + 46;
StringBuilder builder = new StringBuilder();
builder.append("\n");
for (int i = 0; i < reportWidth; i++) {
builder.append("-");
}
builder.append("\n");
builder.append(String.format(formatFirstColumnFirstLine, "Classifications + Attachments", "Total"));
if (reportLineItemDefinitions != null) {
for (ReportLineItemDefinition def : reportLineItemDefinitions) {
if (def.getLowerAgeLimit() == Integer.MIN_VALUE) {
builder.append(String.format(formatColumWidth, "< " + def.getUpperAgeLimit()));
} else if (def.getUpperAgeLimit() == Integer.MAX_VALUE) {
builder.append(String.format(formatColumWidth, "> " + def.getLowerAgeLimit()));
} else if (def.getLowerAgeLimit() == def.getUpperAgeLimit()) {
if (def.getLowerAgeLimit() == 0) {
builder.append(String.format(formatColumWidth, "today"));
} else {
builder.append(String.format(formatColumWidth, def.getLowerAgeLimit()));
}
} else {
builder.append(
String.format(formatColumWidth, def.getLowerAgeLimit() + ".." + def.getUpperAgeLimit()));
}
}
}
builder.append("|\n");
for (int i = 0; i < reportWidth; i++) {
builder.append("-");
}
builder.append("\n");
for (String rl : report.getReportLines().keySet()) {
builder
.append(String.format(formatFirstColumn, rl, report.getReportLines().get(rl).getTotalNumberOfTasks()));
if (reportLineItemDefinitions != null) {
for (ReportLineItem reportLineItem : report.getReportLines().get(rl).getLineItems()) {
builder.append(String.format(formatColumWidth, reportLineItem.getNumberOfTasks()));
}
}
builder.append("|\n");
if (report instanceof DetailedClassificationReport) {
for (String detaileLine : ((DetailedReportLine) report.getReportLines().get(rl)).getDetailLines()
.keySet()) {
ReportLine reportLine = ((DetailedReportLine) report.getReportLines().get(rl)).getDetailLines()
.get(detaileLine);
builder.append(
String.format(formatFirstColumnDetailLines, detaileLine,
reportLine.getTotalNumberOfTasks()));
for (ReportLineItem reportLineItem : reportLine.getLineItems()) {
builder.append(String.format(formatColumWidth, reportLineItem.getNumberOfTasks()));
}
builder.append("|\n");
}
}
for (int i = 0; i < reportWidth; i++) {
builder.append("-");
}
builder.append("\n");
}
builder.append(String.format(formatFirstColumnSumLine, "Total", report.getSumLine().getTotalNumberOfTasks()));
for (ReportLineItem sumLine : report.getSumLine().getLineItems()) {
builder.append(String.format(formatColumWidth, sumLine.getNumberOfTasks()));
}
builder.append("|\n");
for (int i = 0; i < reportWidth; i++) {
builder.append("-");
}
builder.append("\n");
return builder.toString();
}
@AfterClass
public static void cleanUpClass() {
FileUtils.deleteRecursive("~/data", true);

View File

@ -15,15 +15,14 @@ import org.h2.store.fs.FileUtils;
import org.junit.AfterClass;
import org.junit.BeforeClass;
import org.junit.Test;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import pro.taskana.TaskMonitorService;
import pro.taskana.TaskanaEngine;
import pro.taskana.TaskanaEngine.ConnectionManagementMode;
import pro.taskana.configuration.TaskanaEngineConfiguration;
import pro.taskana.database.TestDataGenerator;
import pro.taskana.exceptions.ClassificationNotFoundException;
import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.exceptions.WorkbasketNotFoundException;
import pro.taskana.impl.Report;
import pro.taskana.impl.ReportLineItem;
import pro.taskana.impl.ReportLineItemDefinition;
@ -39,6 +38,7 @@ public class ProvideWorkbasketLevelReportAccTest {
protected static TaskanaEngineConfiguration taskanaEngineConfiguration;
protected static TaskanaEngine taskanaEngine;
private static final Logger LOGGER = LoggerFactory.getLogger(ProvideWorkbasketLevelReportAccTest.class);
@BeforeClass
public static void setupTest() throws Exception {
@ -60,7 +60,6 @@ public class ProvideWorkbasketLevelReportAccTest {
@Test
public void testGetTotalNumbersOfTasksOfWorkbasketLevelReport() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
@ -70,19 +69,19 @@ public class ProvideWorkbasketLevelReportAccTest {
Report report = taskMonitorService.getWorkbasketLevelReport(workbasketIds, states, categories, domains);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report));
}
assertNotNull(report);
assertEquals(20,
report.getReportLines().get("WBI:000000000000000000000000000000000001").getTotalNumberOfTasks());
assertEquals(20,
report.getReportLines().get("WBI:000000000000000000000000000000000002").getTotalNumberOfTasks());
assertEquals(10,
report.getReportLines().get("WBI:000000000000000000000000000000000003").getTotalNumberOfTasks());
assertEquals(20, report.getReportLines().get("USER_1_1").getTotalNumberOfTasks());
assertEquals(20, report.getReportLines().get("USER_1_2").getTotalNumberOfTasks());
assertEquals(10, report.getReportLines().get("USER_1_3").getTotalNumberOfTasks());
assertEquals(50, report.getSumLine().getTotalNumberOfTasks());
}
@Test
public void testGetWorkbasketLevelReportWithReportLineItemDefinitions() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
@ -94,6 +93,10 @@ public class ProvideWorkbasketLevelReportAccTest {
Report report = taskMonitorService.getWorkbasketLevelReport(workbasketIds, states, categories, domains,
reportLineItemDefinitions);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report, reportLineItemDefinitions));
}
int sumLineCount = report.getSumLine().getLineItems().get(0).getNumberOfTasks()
+ report.getSumLine().getLineItems().get(1).getNumberOfTasks()
+ report.getSumLine().getLineItems().get(2).getNumberOfTasks()
@ -106,12 +109,9 @@ public class ProvideWorkbasketLevelReportAccTest {
assertNotNull(report);
assertEquals(20,
report.getReportLines().get("WBI:000000000000000000000000000000000001").getTotalNumberOfTasks());
assertEquals(20,
report.getReportLines().get("WBI:000000000000000000000000000000000002").getTotalNumberOfTasks());
assertEquals(10,
report.getReportLines().get("WBI:000000000000000000000000000000000003").getTotalNumberOfTasks());
assertEquals(20, report.getReportLines().get("USER_1_1").getTotalNumberOfTasks());
assertEquals(20, report.getReportLines().get("USER_1_2").getTotalNumberOfTasks());
assertEquals(10, report.getReportLines().get("USER_1_3").getTotalNumberOfTasks());
assertEquals(10, report.getSumLine().getLineItems().get(0).getNumberOfTasks());
assertEquals(9, report.getSumLine().getLineItems().get(1).getNumberOfTasks());
@ -127,23 +127,85 @@ public class ProvideWorkbasketLevelReportAccTest {
}
@Test
public void testGetWorkbasketLevelReportIfWorkbasketContainsNoTask() {
public void testEachItemOfWorkbasketLevelReport() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(1, 4);
List<String> workbasketIds = generateWorkbasketIds(3, 1);
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL");
List<String> domains = Arrays.asList("DOMAIN_A", "DOMAIN_B", "DOMAIN_C");
Report report = taskMonitorService.getWorkbasketLevelReport(workbasketIds, states, categories, domains);
List<ReportLineItemDefinition> reportLineItemDefinitions = getShortListOfReportLineItemDefinitions();
assertNotNull(report);
assertEquals(0, report.getSumLine().getTotalNumberOfTasks());
Report report = taskMonitorService.getWorkbasketLevelReport(workbasketIds, states, categories, domains,
reportLineItemDefinitions);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report, reportLineItemDefinitions));
}
List<ReportLineItem> line1 = report.getReportLines().get("USER_1_1").getLineItems();
assertEquals(13, line1.get(0).getNumberOfTasks());
assertEquals(3, line1.get(1).getNumberOfTasks());
assertEquals(1, line1.get(2).getNumberOfTasks());
assertEquals(1, line1.get(3).getNumberOfTasks());
assertEquals(2, line1.get(4).getNumberOfTasks());
List<ReportLineItem> line2 = report.getReportLines().get("USER_1_2").getLineItems();
assertEquals(4, line2.get(0).getNumberOfTasks());
assertEquals(6, line2.get(1).getNumberOfTasks());
assertEquals(3, line2.get(2).getNumberOfTasks());
assertEquals(6, line2.get(3).getNumberOfTasks());
assertEquals(1, line2.get(4).getNumberOfTasks());
List<ReportLineItem> line3 = report.getReportLines().get("USER_1_3").getLineItems();
assertEquals(2, line3.get(0).getNumberOfTasks());
assertEquals(2, line3.get(1).getNumberOfTasks());
assertEquals(0, line3.get(2).getNumberOfTasks());
assertEquals(0, line3.get(3).getNumberOfTasks());
assertEquals(6, line3.get(4).getNumberOfTasks());
}
@Test
public void testEachItemOfWorkbasketLevelReportWithCategoryFilter()
throws WorkbasketNotFoundException, NotAuthorizedException, ClassificationNotFoundException {
public void testEachItemOfWorkbasketLevelReportNotInWorkingDays() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL");
List<String> domains = Arrays.asList("DOMAIN_A", "DOMAIN_B", "DOMAIN_C");
List<ReportLineItemDefinition> reportLineItemDefinitions = getShortListOfReportLineItemDefinitions();
Report report = taskMonitorService.getWorkbasketLevelReport(workbasketIds, states, categories, domains,
reportLineItemDefinitions, false);
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report, reportLineItemDefinitions));
}
List<ReportLineItem> line1 = report.getReportLines().get("USER_1_1").getLineItems();
assertEquals(16, line1.get(0).getNumberOfTasks());
assertEquals(0, line1.get(1).getNumberOfTasks());
assertEquals(1, line1.get(2).getNumberOfTasks());
assertEquals(0, line1.get(3).getNumberOfTasks());
assertEquals(3, line1.get(4).getNumberOfTasks());
List<ReportLineItem> line2 = report.getReportLines().get("USER_1_2").getLineItems();
assertEquals(10, line2.get(0).getNumberOfTasks());
assertEquals(0, line2.get(1).getNumberOfTasks());
assertEquals(3, line2.get(2).getNumberOfTasks());
assertEquals(0, line2.get(3).getNumberOfTasks());
assertEquals(7, line2.get(4).getNumberOfTasks());
List<ReportLineItem> line3 = report.getReportLines().get("USER_1_3").getLineItems();
assertEquals(4, line3.get(0).getNumberOfTasks());
assertEquals(0, line3.get(1).getNumberOfTasks());
assertEquals(0, line3.get(2).getNumberOfTasks());
assertEquals(0, line3.get(3).getNumberOfTasks());
assertEquals(6, line3.get(4).getNumberOfTasks());
}
@Test
public void testEachItemOfWorkbasketLevelReportWithCategoryFilter() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
@ -155,27 +217,25 @@ public class ProvideWorkbasketLevelReportAccTest {
Report report = taskMonitorService.getWorkbasketLevelReport(workbasketIds, states, categories, domains,
reportLineItemDefinitions);
List<ReportLineItem> line1 = report.getReportLines()
.get("WBI:000000000000000000000000000000000001")
.getLineItems();
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report, reportLineItemDefinitions));
}
List<ReportLineItem> line1 = report.getReportLines().get("USER_1_1").getLineItems();
assertEquals(3, line1.get(0).getNumberOfTasks());
assertEquals(1, line1.get(1).getNumberOfTasks());
assertEquals(1, line1.get(2).getNumberOfTasks());
assertEquals(1, line1.get(3).getNumberOfTasks());
assertEquals(2, line1.get(4).getNumberOfTasks());
List<ReportLineItem> line2 = report.getReportLines()
.get("WBI:000000000000000000000000000000000002")
.getLineItems();
List<ReportLineItem> line2 = report.getReportLines().get("USER_1_2").getLineItems();
assertEquals(1, line2.get(0).getNumberOfTasks());
assertEquals(1, line2.get(1).getNumberOfTasks());
assertEquals(1, line2.get(2).getNumberOfTasks());
assertEquals(0, line2.get(3).getNumberOfTasks());
assertEquals(1, line2.get(4).getNumberOfTasks());
List<ReportLineItem> line3 = report.getReportLines()
.get("WBI:000000000000000000000000000000000003")
.getLineItems();
List<ReportLineItem> line3 = report.getReportLines().get("USER_1_3").getLineItems();
assertEquals(0, line3.get(0).getNumberOfTasks());
assertEquals(1, line3.get(1).getNumberOfTasks());
assertEquals(0, line3.get(2).getNumberOfTasks());
@ -187,7 +247,6 @@ public class ProvideWorkbasketLevelReportAccTest {
@Test
public void testEachItemOfWorkbasketLevelReportWithDomainFilter() {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<String> workbasketIds = generateWorkbasketIds(3, 1);
@ -199,27 +258,25 @@ public class ProvideWorkbasketLevelReportAccTest {
Report report = taskMonitorService.getWorkbasketLevelReport(workbasketIds, states, categories, domains,
reportLineItemDefinitions);
List<ReportLineItem> line1 = report.getReportLines()
.get("WBI:000000000000000000000000000000000001")
.getLineItems();
if (LOGGER.isDebugEnabled()) {
LOGGER.debug(reportToString(report, reportLineItemDefinitions));
}
List<ReportLineItem> line1 = report.getReportLines().get("USER_1_1").getLineItems();
assertEquals(8, line1.get(0).getNumberOfTasks());
assertEquals(1, line1.get(1).getNumberOfTasks());
assertEquals(0, line1.get(2).getNumberOfTasks());
assertEquals(1, line1.get(3).getNumberOfTasks());
assertEquals(2, line1.get(4).getNumberOfTasks());
List<ReportLineItem> line2 = report.getReportLines()
.get("WBI:000000000000000000000000000000000002")
.getLineItems();
List<ReportLineItem> line2 = report.getReportLines().get("USER_1_2").getLineItems();
assertEquals(2, line2.get(0).getNumberOfTasks());
assertEquals(2, line2.get(1).getNumberOfTasks());
assertEquals(2, line2.get(2).getNumberOfTasks());
assertEquals(4, line2.get(3).getNumberOfTasks());
assertEquals(0, line2.get(4).getNumberOfTasks());
List<ReportLineItem> line3 = report.getReportLines()
.get("WBI:000000000000000000000000000000000003")
.getLineItems();
List<ReportLineItem> line3 = report.getReportLines().get("USER_1_3").getLineItems();
assertEquals(1, line3.get(0).getNumberOfTasks());
assertEquals(1, line3.get(1).getNumberOfTasks());
assertEquals(0, line3.get(2).getNumberOfTasks());
@ -259,6 +316,75 @@ public class ProvideWorkbasketLevelReportAccTest {
return reportLineItemDefinitions;
}
private String reportToString(Report report) {
return reportToString(report, null);
}
private String reportToString(Report report, List<ReportLineItemDefinition> reportLineItemDefinitions) {
String formatColumWidth = "| %-7s ";
String formatFirstColumn = "| %-36s %-4s ";
String formatFirstColumnFirstLine = "| %-29s %12s ";
String formatFirstColumnSumLine = "| %-36s %-5s";
int reportWidth = reportLineItemDefinitions == null ? 46 : reportLineItemDefinitions.size() * 10 + 46;
StringBuilder builder = new StringBuilder();
builder.append("\n");
for (int i = 0; i < reportWidth; i++) {
builder.append("-");
}
builder.append("\n");
builder.append(String.format(formatFirstColumnFirstLine, "Workbasket levels", "Total"));
if (reportLineItemDefinitions != null) {
for (ReportLineItemDefinition def : reportLineItemDefinitions) {
if (def.getLowerAgeLimit() == Integer.MIN_VALUE) {
builder.append(String.format(formatColumWidth, "< " + def.getUpperAgeLimit()));
} else if (def.getUpperAgeLimit() == Integer.MAX_VALUE) {
builder.append(String.format(formatColumWidth, "> " + def.getLowerAgeLimit()));
} else if (def.getLowerAgeLimit() == def.getUpperAgeLimit()) {
if (def.getLowerAgeLimit() == 0) {
builder.append(String.format(formatColumWidth, "today"));
} else {
builder.append(String.format(formatColumWidth, def.getLowerAgeLimit()));
}
} else {
builder.append(
String.format(formatColumWidth, def.getLowerAgeLimit() + ".." + def.getUpperAgeLimit()));
}
}
}
builder.append("|\n");
for (int i = 0; i < reportWidth; i++) {
builder.append("-");
}
builder.append("\n");
for (String rl : report.getReportLines().keySet()) {
builder
.append(String.format(formatFirstColumn, rl, report.getReportLines().get(rl).getTotalNumberOfTasks()));
if (reportLineItemDefinitions != null) {
for (ReportLineItem reportLineItem : report.getReportLines().get(rl).getLineItems()) {
builder.append(String.format(formatColumWidth, reportLineItem.getNumberOfTasks()));
}
}
builder.append("|\n");
for (int i = 0; i < reportWidth; i++) {
builder.append("-");
}
builder.append("\n");
}
builder.append(String.format(formatFirstColumnSumLine, "Total", report.getSumLine().getTotalNumberOfTasks()));
for (ReportLineItem sumLine : report.getSumLine().getLineItems()) {
builder.append(String.format(formatColumWidth, sumLine.getNumberOfTasks()));
}
builder.append("|\n");
for (int i = 0; i < reportWidth; i++) {
builder.append("-");
}
builder.append("\n");
return builder.toString();
}
@AfterClass
public static void cleanUpClass() {
FileUtils.deleteRecursive("~/data", true);

View File

@ -4,12 +4,6 @@ INSERT INTO WORKBASKET VALUES ('WBI:000000000000000000000000000000000002', 'USER
INSERT INTO WORKBASKET VALUES ('WBI:000000000000000000000000000000000003', 'USER_1_3', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'PPK User 1 KSC 3', 'MONITOR_TEST_DOMAIN', 'PERSONAL', 'Monitor Test Postkorb 3', 'John' , '' , '' , '' , '' , '' , '' , '' , '' );
INSERT INTO WORKBASKET VALUES ('WBI:000000000000000000000000000000000004', 'USER_1_4', CURRENT_TIMESTAMP, CURRENT_TIMESTAMP, 'PPK User 1 KSC 4', 'MONITOR_TEST_DOMAIN', 'PERSONAL', 'Monitor Test Postkorb 4', 'John' , '' , '' , '' , '' , '' , '' , '' , '' );
-- WORKBASKET_ACCESS_LIST TABLE (ID , WORKBASKET_ID , ACCESS_ID , PERM_READ, PERM_OPEN, PERM_APPEND, PERM_TRANSFER, PERM_DISTRIBUTE, PERM_CUSTOM_1, PERM_CUSTOM_2, PERM_CUSTOM_3, PERM_CUSTOM_4, PERM_CUSTOM_5, PERM_CUSTOM_6, PERM_CUSTOM_7, PERM_CUSTOM_8, PERM_CUSTOM_9, PERM_CUSTOM_10, PERM_CUSTOM_11, PERM_CUSTOM_12 );
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('WAI:000000000000000000000000000000000001', 'WBI:000000000000000000000000000000000001', 'monitor_user_1', true , true , true , true , false , false , false , false , false , false , false , false , false , false , false , false , false );
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('WAI:000000000000000000000000000000000002', 'WBI:000000000000000000000000000000000002', 'monitor_user_1', true , true , true , true , false , false , false , false , false , false , false , false , false , false , false , false , false );
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('WAI:000000000000000000000000000000000003', 'WBI:000000000000000000000000000000000003', 'monitor_user_1', true , true , true , true , false , false , false , false , false , false , false , false , false , false , false , false , false );
INSERT INTO WORKBASKET_ACCESS_LIST VALUES ('WAI:000000000000000000000000000000000004', 'WBI:000000000000000000000000000000000004', 'monitor_user_1', true , true , true , true , false , false , false , false , false , false , false , false , false , false , false , false , false );
-- CLASSIFICATION TABLE (ID , KEY , PARENT_ID , CATEGORY , TYPE , DOMAIN , VALID_IN_DOMAIN, CREATED , NAME , DESCRIPTION , PRIORITY, SERVICE_LEVEL, APPLICATION_ENTRY_POINT, CUSTOM_1 , CUSTOM_2, CUSTOM_3, CUSTOM_4, CUSTOM_5, CUSTOM_6, CUSTOM_7, CUSTOM_8 );
INSERT INTO CLASSIFICATION VALUES('CLI:000000000000000000000000000000000001', 'L10000', '' , 'EXTERN' , 'TASK', 'DOMAIN_A', TRUE , CURRENT_TIMESTAMP, 'OLD-Leistungsfall' , 'OLD-Leistungsfall' , 3 , 'P1D' , '' , 'VNR,RVNR,KOLVNR' , '' , '' , '' , '' , '' , '' , '' );
INSERT INTO CLASSIFICATION VALUES('CLI:000000000000000000000000000000000002', 'L20000', 'CLI:000000000000000000000000000000000001' , 'EXTERN' , 'TASK', 'DOMAIN_A', TRUE , CURRENT_TIMESTAMP, 'Beratungsprotokoll' , 'Beratungsprotokoll', 1 , 'P1D' , '' , 'VNR,RVNR,KOLVNR, ANR', '' , '' , '' , '' , '' , '' , '' );