From f5e3d449b65d5e5377f416d7b457a1bbbd3dcd9b Mon Sep 17 00:00:00 2001 From: Mustapha Zorgati <15628173+mustaphazorgati@users.noreply.github.com> Date: Tue, 21 Jul 2020 20:50:14 +0200 Subject: [PATCH] TSK-1344: introduced displayName for Row --- .../taskana/monitor/api/MonitorService.java | 2 +- .../api/reports/ClassificationReport.java | 4 +- .../taskana/monitor/api/reports/Report.java | 5 + .../monitor/api/reports/WorkbasketReport.java | 2 +- .../row/DetailedClassificationRow.java | 2 +- .../monitor/api/reports/row/FoldableRow.java | 10 ++ .../taskana/monitor/api/reports/row/Row.java | 6 ++ .../monitor/api/reports/row/SingleRow.java | 16 ++- .../monitor/internal/MonitorServiceImpl.java | 6 +- .../ClassificationReportBuilderImpl.java | 38 ++++++- .../reports/TaskStatusReportBuilderImpl.java | 4 +- .../reports/WorkbasketReportBuilderImpl.java | 20 ++++ ...CustomAttributeValuesForReportAccTest.java | 4 +- ...OfClassificationCategoryReportAccTest.java | 18 ++-- ...askIdsOfCustomFieldValueReportAccTest.java | 2 +- ...deClassificationCategoryReportAccTest.java | 42 +++++--- .../ProvideClassificationReportAccTest.java | 13 +++ .../ProvideCustomFieldValueReportAccTest.java | 15 +++ ...deDetailedClassificationReportAccTest.java | 39 ++++++++ .../ProvideTaskStatusReportAccTest.java | 27 +++-- .../report/ProvideTimestampReportAccTest.java | 14 ++- .../ProvideWorkbasketReportAccTest.java | 15 ++- ...ficationCategoryReportBuilderImplTest.java | 12 +-- .../ClassificationReportBuilderImplTest.java | 99 +++++++++++-------- .../taskana/monitor/internal/ReportTest.java | 33 +++++++ .../WorkbasketReportBuilderImplTest.java | 22 +++-- .../sql/monitor-data/monitor-sample-data.sql | 2 +- .../sql/sample-data/classification.sql | 2 +- .../sql/test-data/classification.sql | 2 +- .../ReportRepresentationModelAssembler.java | 22 ++--- .../models/ReportRepresentationModel.java | 3 +- .../models/ReportRepresentationModelTest.java | 10 +- 32 files changed, 388 insertions(+), 123 deletions(-) diff --git a/lib/taskana-core/src/main/java/pro/taskana/monitor/api/MonitorService.java b/lib/taskana-core/src/main/java/pro/taskana/monitor/api/MonitorService.java index 45428bb6e..4a636e53c 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/monitor/api/MonitorService.java +++ b/lib/taskana-core/src/main/java/pro/taskana/monitor/api/MonitorService.java @@ -26,7 +26,7 @@ public interface MonitorService { * * @return a {@link ClassificationCategoryReport.Builder} */ - ClassificationCategoryReport.Builder createCategoryReportBuilder(); + ClassificationCategoryReport.Builder createClassificationCategoryReportBuilder(); /** * Provides a {@link ClassificationReport.Builder} for creating a {@link ClassificationReport} or diff --git a/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/ClassificationReport.java b/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/ClassificationReport.java index fe61cd514..d55b81e49 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/ClassificationReport.java +++ b/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/ClassificationReport.java @@ -19,7 +19,7 @@ import pro.taskana.monitor.api.reports.row.Row; public class ClassificationReport extends Report { public ClassificationReport(List timeIntervalColumnHeaders) { - super(timeIntervalColumnHeaders, new String[] {"CLASSIFICATION KEYS"}); + super(timeIntervalColumnHeaders, new String[] {"CLASSIFICATION"}); } /** Builder for {@link ClassificationReport}. */ @@ -62,7 +62,7 @@ public class ClassificationReport extends Report workbasketLevelReportColumnHeaders) { super( workbasketLevelReportColumnHeaders, - new String[] {"TASK CLASSIFICATION KEYS", "ATTACHMENT"}); + new String[] {"TASK CLASSIFICATION", "ATTACHMENT"}); } @Override diff --git a/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/Report.java b/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/Report.java index 4aa6dd318..a898a20d8 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/Report.java +++ b/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/Report.java @@ -99,6 +99,11 @@ public abstract class Report displayMap) { + reportRows.values().forEach(row -> row.setDisplayName(displayMap)); + sumRow.setDisplayName(displayMap); + } + protected Row createRow(String key, int columnSize) { return new SingleRow<>(key, columnSize); } diff --git a/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/WorkbasketReport.java b/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/WorkbasketReport.java index e2936372b..9fad2332e 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/WorkbasketReport.java +++ b/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/WorkbasketReport.java @@ -21,7 +21,7 @@ import pro.taskana.monitor.api.reports.item.MonitorQueryItem; public class WorkbasketReport extends Report { public WorkbasketReport(List timeIntervalColumnHeaders) { - super(timeIntervalColumnHeaders, new String[] {"WORKBASKET KEYS"}); + super(timeIntervalColumnHeaders, new String[] {"WORKBASKET"}); } /** Builder for {@link WorkbasketReport}. */ diff --git a/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/row/DetailedClassificationRow.java b/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/row/DetailedClassificationRow.java index cff550d3e..9f27cec8e 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/row/DetailedClassificationRow.java +++ b/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/row/DetailedClassificationRow.java @@ -13,7 +13,7 @@ public class DetailedClassificationRow extends FoldableRow item.getAttachmentKey() != null ? item.getAttachmentKey() : "N/A"); + item -> item.getAttachmentKey() != null ? item.getAttachmentKey() : "N/A"); } @Override diff --git a/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/row/FoldableRow.java b/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/row/FoldableRow.java index 1137e270c..edf6a7bfb 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/row/FoldableRow.java +++ b/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/row/FoldableRow.java @@ -52,10 +52,20 @@ public abstract class FoldableRow extends SingleRow { .updateTotalValue(item); } + @Override + public void setDisplayName(Map displayMap) { + super.setDisplayName(displayMap); + foldableRows.values().forEach(row -> row.setDisplayName(displayMap)); + } + public Row getFoldableRow(String key) { return foldableRows.get(key); } + public Map> getFoldableRows() { + return foldableRows; + } + protected abstract Row buildRow(String key, int columnSize); @Override diff --git a/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/row/Row.java b/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/row/Row.java index 8f3ac00e4..c17a185d0 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/row/Row.java +++ b/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/row/Row.java @@ -1,5 +1,7 @@ package pro.taskana.monitor.api.reports.row; +import java.util.Map; + import pro.taskana.monitor.api.reports.Report; import pro.taskana.monitor.api.reports.header.ColumnHeader; import pro.taskana.monitor.api.reports.item.QueryItem; @@ -30,6 +32,10 @@ public interface Row { String getKey(); + String getDisplayName(); + + void setDisplayName(Map displayMap); + int getTotalValue(); int[] getCells(); diff --git a/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/row/SingleRow.java b/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/row/SingleRow.java index 9da1a6cc1..43efba427 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/row/SingleRow.java +++ b/lib/taskana-core/src/main/java/pro/taskana/monitor/api/reports/row/SingleRow.java @@ -1,5 +1,7 @@ package pro.taskana.monitor.api.reports.row; +import java.util.Map; + import pro.taskana.monitor.api.reports.Report; import pro.taskana.monitor.api.reports.header.ColumnHeader; import pro.taskana.monitor.api.reports.item.QueryItem; @@ -13,11 +15,13 @@ import pro.taskana.monitor.api.reports.item.QueryItem; public class SingleRow implements Row { private final int[] cells; - private int total = 0; private final String key; + private int total = 0; + private String displayName; public SingleRow(String key, int columnCount) { this.key = key; + this.displayName = key; cells = new int[columnCount]; } @@ -37,6 +41,16 @@ public class SingleRow implements Row { return key; } + @Override + public String getDisplayName() { + return displayName; + } + + @Override + public void setDisplayName(Map displayMap) { + displayName = displayMap.getOrDefault(key, key); + } + @Override public final int getTotalValue() { return total; diff --git a/lib/taskana-core/src/main/java/pro/taskana/monitor/internal/MonitorServiceImpl.java b/lib/taskana-core/src/main/java/pro/taskana/monitor/internal/MonitorServiceImpl.java index b0c09b3f4..b8f61963b 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/monitor/internal/MonitorServiceImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/monitor/internal/MonitorServiceImpl.java @@ -19,8 +19,8 @@ import pro.taskana.task.api.CustomField; /** This is the implementation of MonitorService. */ public class MonitorServiceImpl implements MonitorService { - private InternalTaskanaEngine taskanaEngine; - private MonitorMapper monitorMapper; + private final InternalTaskanaEngine taskanaEngine; + private final MonitorMapper monitorMapper; public MonitorServiceImpl(InternalTaskanaEngine taskanaEngine, MonitorMapper monitorMapper) { super(); @@ -34,7 +34,7 @@ public class MonitorServiceImpl implements MonitorService { } @Override - public ClassificationCategoryReport.Builder createCategoryReportBuilder() { + public ClassificationCategoryReport.Builder createClassificationCategoryReportBuilder() { return new ClassificationCategoryReportBuilderImpl(taskanaEngine, monitorMapper); } diff --git a/lib/taskana-core/src/main/java/pro/taskana/monitor/internal/reports/ClassificationReportBuilderImpl.java b/lib/taskana-core/src/main/java/pro/taskana/monitor/internal/reports/ClassificationReportBuilderImpl.java index 85aa79586..3a522aed2 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/monitor/internal/reports/ClassificationReportBuilderImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/monitor/internal/reports/ClassificationReportBuilderImpl.java @@ -1,9 +1,14 @@ package pro.taskana.monitor.internal.reports; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; +import java.util.stream.Stream; import org.slf4j.Logger; import org.slf4j.LoggerFactory; +import pro.taskana.classification.api.ClassificationService; +import pro.taskana.classification.api.models.ClassificationSummary; import pro.taskana.common.api.TaskanaRole; import pro.taskana.common.api.exceptions.InvalidArgumentException; import pro.taskana.common.api.exceptions.NotAuthorizedException; @@ -15,6 +20,7 @@ import pro.taskana.monitor.api.reports.ClassificationReport.DetailedClassificati import pro.taskana.monitor.api.reports.header.TimeIntervalColumnHeader; import pro.taskana.monitor.api.reports.item.DetailedMonitorQueryItem; import pro.taskana.monitor.api.reports.item.MonitorQueryItem; +import pro.taskana.monitor.api.reports.row.Row; import pro.taskana.monitor.internal.MonitorMapper; import pro.taskana.monitor.internal.preprocessor.DaysToWorkingDaysReportPreProcessor; @@ -25,10 +31,12 @@ public class ClassificationReportBuilderImpl private static final Logger LOGGER = LoggerFactory.getLogger(ClassificationReportBuilderImpl.class); + private final ClassificationService classificationService; public ClassificationReportBuilderImpl( InternalTaskanaEngine taskanaEngine, MonitorMapper monitorMapper) { super(taskanaEngine, monitorMapper); + classificationService = taskanaEngine.getEngine().getClassificationService(); } @Override @@ -59,6 +67,17 @@ public class ClassificationReportBuilderImpl monitorQueryItems, new DaysToWorkingDaysReportPreProcessor<>( this.columnHeaders, converter, this.inWorkingDays)); + Map displayMap = + classificationService + .createClassificationQuery() + .keyIn(report.getRows().keySet().toArray(new String[0])) + .domainIn(domains != null ? domains.toArray(new String[0]) : null) + .list() + .stream() + .collect( + Collectors.toMap( + ClassificationSummary::getKey, ClassificationSummary::getName, (a, b) -> a)); + report.augmentDisplayNames(displayMap); return report; } finally { this.taskanaEngine.returnConnection(); @@ -95,7 +114,24 @@ public class ClassificationReportBuilderImpl detailedMonitorQueryItems, new DaysToWorkingDaysReportPreProcessor<>( this.columnHeaders, converter, this.inWorkingDays)); - + Stream attachmentKeys = + report.getRows().keySet().stream() + .map(report::getRow) + .flatMap(row -> row.getFoldableRows().values().stream()) + .map(Row::getKey); + Map displayMap = + classificationService + .createClassificationQuery() + .keyIn( + Stream.concat(attachmentKeys, report.getRows().keySet().stream()) + .toArray(String[]::new)) + .domainIn(domains != null ? domains.toArray(new String[0]) : null) + .list() + .stream() + .collect( + Collectors.toMap( + ClassificationSummary::getKey, ClassificationSummary::getName, (a, b) -> a)); + report.augmentDisplayNames(displayMap); return report; } finally { this.taskanaEngine.returnConnection(); diff --git a/lib/taskana-core/src/main/java/pro/taskana/monitor/internal/reports/TaskStatusReportBuilderImpl.java b/lib/taskana-core/src/main/java/pro/taskana/monitor/internal/reports/TaskStatusReportBuilderImpl.java index bd789fe57..f170cdc06 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/monitor/internal/reports/TaskStatusReportBuilderImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/monitor/internal/reports/TaskStatusReportBuilderImpl.java @@ -16,8 +16,8 @@ import pro.taskana.task.api.TaskState; public class TaskStatusReportBuilderImpl implements TaskStatusReport.Builder { private static final Logger LOGGER = LoggerFactory.getLogger(TaskStatusReportBuilderImpl.class); - private InternalTaskanaEngine taskanaEngine; - private MonitorMapper monitorMapper; + private final InternalTaskanaEngine taskanaEngine; + private final MonitorMapper monitorMapper; private List domains; private List states; diff --git a/lib/taskana-core/src/main/java/pro/taskana/monitor/internal/reports/WorkbasketReportBuilderImpl.java b/lib/taskana-core/src/main/java/pro/taskana/monitor/internal/reports/WorkbasketReportBuilderImpl.java index 415b4e5a4..35c05882b 100644 --- a/lib/taskana-core/src/main/java/pro/taskana/monitor/internal/reports/WorkbasketReportBuilderImpl.java +++ b/lib/taskana-core/src/main/java/pro/taskana/monitor/internal/reports/WorkbasketReportBuilderImpl.java @@ -1,6 +1,8 @@ package pro.taskana.monitor.internal.reports; import java.util.List; +import java.util.Map; +import java.util.stream.Collectors; import org.slf4j.Logger; import org.slf4j.LoggerFactory; @@ -16,6 +18,8 @@ import pro.taskana.monitor.api.reports.header.TimeIntervalColumnHeader; import pro.taskana.monitor.api.reports.item.MonitorQueryItem; import pro.taskana.monitor.internal.MonitorMapper; import pro.taskana.monitor.internal.preprocessor.DaysToWorkingDaysReportPreProcessor; +import pro.taskana.workbasket.api.WorkbasketService; +import pro.taskana.workbasket.api.models.WorkbasketSummary; /** The implementation of WorkbasketReportBuilder. */ public class WorkbasketReportBuilderImpl @@ -23,11 +27,13 @@ public class WorkbasketReportBuilderImpl implements WorkbasketReport.Builder { private static final Logger LOGGER = LoggerFactory.getLogger(WorkbasketReportBuilderImpl.class); + private final WorkbasketService workbasketService; private List combinedClassificationFilter; public WorkbasketReportBuilderImpl( InternalTaskanaEngine taskanaEngine, MonitorMapper monitorMapper) { super(taskanaEngine, monitorMapper); + workbasketService = taskanaEngine.getEngine().getWorkbasketService(); } @Override @@ -58,6 +64,20 @@ public class WorkbasketReportBuilderImpl monitorQueryItems, new DaysToWorkingDaysReportPreProcessor<>( this.columnHeaders, converter, this.inWorkingDays)); + + Map displayMap = + taskanaEngine.runAsAdmin( + () -> + workbasketService + .createWorkbasketQuery() + .keyIn(report.getRows().keySet().toArray(new String[0])) + .domainIn(domains != null ? domains.toArray(new String[0]) : null) + .list() + .stream() + .collect( + Collectors.toMap( + WorkbasketSummary::getKey, WorkbasketSummary::getName, (a, b) -> a))); + report.augmentDisplayNames(displayMap); return report; } finally { this.taskanaEngine.returnConnection(); diff --git a/lib/taskana-core/src/test/java/acceptance/report/GetCustomAttributeValuesForReportAccTest.java b/lib/taskana-core/src/test/java/acceptance/report/GetCustomAttributeValuesForReportAccTest.java index 9a3d2a965..50690783f 100644 --- a/lib/taskana-core/src/test/java/acceptance/report/GetCustomAttributeValuesForReportAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/report/GetCustomAttributeValuesForReportAccTest.java @@ -72,7 +72,7 @@ class GetCustomAttributeValuesForReportAccTest extends AbstractReportAccTest { List values = monitorService - .createCategoryReportBuilder() + .createClassificationCategoryReportBuilder() .customAttributeFilterIn(customAttributeFilter) .listCustomAttributeValuesForCustomAttributeName(CustomField.CUSTOM_16); @@ -88,7 +88,7 @@ class GetCustomAttributeValuesForReportAccTest extends AbstractReportAccTest { List values = monitorService - .createCategoryReportBuilder() + .createClassificationCategoryReportBuilder() .domainIn(domains) .excludedClassificationIdIn( Collections.singletonList("CLI:000000000000000000000000000000000003")) diff --git a/lib/taskana-core/src/test/java/acceptance/report/GetTaskIdsOfClassificationCategoryReportAccTest.java b/lib/taskana-core/src/test/java/acceptance/report/GetTaskIdsOfClassificationCategoryReportAccTest.java index 339bf1f4c..ea2a5c61e 100644 --- a/lib/taskana-core/src/test/java/acceptance/report/GetTaskIdsOfClassificationCategoryReportAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/report/GetTaskIdsOfClassificationCategoryReportAccTest.java @@ -34,7 +34,9 @@ class GetTaskIdsOfClassificationCategoryReportAccTest extends AbstractReportAccT List selectedItems = new ArrayList<>(); ThrowingCallable call = () -> { - monitorService.createCategoryReportBuilder().listTaskIdsForSelectedItems(selectedItems); + monitorService + .createClassificationCategoryReportBuilder() + .listTaskIdsForSelectedItems(selectedItems); }; assertThatThrownBy(call).isInstanceOf(NotAuthorizedException.class); } @@ -68,7 +70,7 @@ class GetTaskIdsOfClassificationCategoryReportAccTest extends AbstractReportAccT List ids = monitorService - .createCategoryReportBuilder() + .createClassificationCategoryReportBuilder() .withColumnHeaders(columnHeaders) .inWorkingDays() .listTaskIdsForSelectedItems(selectedItems); @@ -119,7 +121,7 @@ class GetTaskIdsOfClassificationCategoryReportAccTest extends AbstractReportAccT List ids = monitorService - .createCategoryReportBuilder() + .createClassificationCategoryReportBuilder() .withColumnHeaders(columnHeaders) .inWorkingDays() .workbasketIdIn(workbasketIds) @@ -163,7 +165,7 @@ class GetTaskIdsOfClassificationCategoryReportAccTest extends AbstractReportAccT List ids = monitorService - .createCategoryReportBuilder() + .createClassificationCategoryReportBuilder() .withColumnHeaders(columnHeaders) .inWorkingDays() .stateIn(states) @@ -208,7 +210,7 @@ class GetTaskIdsOfClassificationCategoryReportAccTest extends AbstractReportAccT List ids = monitorService - .createCategoryReportBuilder() + .createClassificationCategoryReportBuilder() .withColumnHeaders(columnHeaders) .inWorkingDays() .classificationCategoryIn(categories) @@ -251,7 +253,7 @@ class GetTaskIdsOfClassificationCategoryReportAccTest extends AbstractReportAccT List ids = monitorService - .createCategoryReportBuilder() + .createClassificationCategoryReportBuilder() .withColumnHeaders(columnHeaders) .inWorkingDays() .domainIn(domains) @@ -296,7 +298,7 @@ class GetTaskIdsOfClassificationCategoryReportAccTest extends AbstractReportAccT List ids = monitorService - .createCategoryReportBuilder() + .createClassificationCategoryReportBuilder() .withColumnHeaders(columnHeaders) .inWorkingDays() .customAttributeFilterIn(customAttributeFilter) @@ -330,7 +332,7 @@ class GetTaskIdsOfClassificationCategoryReportAccTest extends AbstractReportAccT ThrowingCallable call = () -> { monitorService - .createCategoryReportBuilder() + .createClassificationCategoryReportBuilder() .withColumnHeaders(columnHeaders) .listTaskIdsForSelectedItems(selectedItems); }; diff --git a/lib/taskana-core/src/test/java/acceptance/report/GetTaskIdsOfCustomFieldValueReportAccTest.java b/lib/taskana-core/src/test/java/acceptance/report/GetTaskIdsOfCustomFieldValueReportAccTest.java index b838b134d..ef4e937f6 100644 --- a/lib/taskana-core/src/test/java/acceptance/report/GetTaskIdsOfCustomFieldValueReportAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/report/GetTaskIdsOfCustomFieldValueReportAccTest.java @@ -324,7 +324,7 @@ class GetTaskIdsOfCustomFieldValueReportAccTest extends AbstractReportAccTest { ThrowingCallable call = () -> { monitorService - .createCategoryReportBuilder() + .createClassificationCategoryReportBuilder() .withColumnHeaders(columnHeaders) .listTaskIdsForSelectedItems(selectedItems); }; diff --git a/lib/taskana-core/src/test/java/acceptance/report/ProvideClassificationCategoryReportAccTest.java b/lib/taskana-core/src/test/java/acceptance/report/ProvideClassificationCategoryReportAccTest.java index e54b117a8..c99b09ba0 100644 --- a/lib/taskana-core/src/test/java/acceptance/report/ProvideClassificationCategoryReportAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/report/ProvideClassificationCategoryReportAccTest.java @@ -37,15 +37,28 @@ class ProvideClassificationCategoryReportAccTest extends AbstractReportAccTest { @Test void testRoleCheck() { - assertThatThrownBy(() -> MONITOR_SERVICE.createCategoryReportBuilder().buildReport()) - .isInstanceOf(NotAuthorizedException.class); + ThrowingCallable call = + () -> MONITOR_SERVICE.createClassificationCategoryReportBuilder().buildReport(); + assertThatThrownBy(call).isInstanceOf(NotAuthorizedException.class); + } + + @WithAccessId(user = "monitor") + @Test + void should_augmentDisplayNames_When_ReportIsBuild() throws Exception { + ClassificationCategoryReport report = + MONITOR_SERVICE.createClassificationCategoryReportBuilder().buildReport(); + + assertThat(report.getRows()).hasSize(3); + assertThat(report.getRow("AUTOMATIC").getDisplayName()).isEqualTo("AUTOMATIC"); + assertThat(report.getRow("EXTERN").getDisplayName()).isEqualTo("EXTERN"); + assertThat(report.getRow("MANUAL").getDisplayName()).isEqualTo("MANUAL"); } @WithAccessId(user = "monitor") @Test void testGetTotalNumbersOfTasksOfCategoryReport() throws Exception { ClassificationCategoryReport report = - MONITOR_SERVICE.createCategoryReportBuilder().buildReport(); + MONITOR_SERVICE.createClassificationCategoryReportBuilder().buildReport(); assertThat(report).isNotNull(); assertThat(report.rowSize()).isEqualTo(3); @@ -66,7 +79,7 @@ class ProvideClassificationCategoryReportAccTest extends AbstractReportAccTest { ClassificationCategoryReport report = MONITOR_SERVICE - .createCategoryReportBuilder() + .createClassificationCategoryReportBuilder() .withColumnHeaders(columnHeaders) .inWorkingDays() .buildReport(); @@ -90,7 +103,7 @@ class ProvideClassificationCategoryReportAccTest extends AbstractReportAccTest { ClassificationCategoryReport report = MONITOR_SERVICE - .createCategoryReportBuilder() + .createClassificationCategoryReportBuilder() .withColumnHeaders(columnHeaders) .inWorkingDays() .buildReport(); @@ -115,7 +128,10 @@ class ProvideClassificationCategoryReportAccTest extends AbstractReportAccTest { ThrowingConsumer test = timestamp -> { ThrowingCallable callable = - () -> MONITOR_SERVICE.createCategoryReportBuilder().buildReport(timestamp); + () -> + MONITOR_SERVICE + .createClassificationCategoryReportBuilder() + .buildReport(timestamp); assertThatCode(callable).doesNotThrowAnyException(); }; return DynamicTest.stream(iterator, t -> "for TaskState " + t, test); @@ -128,7 +144,7 @@ class ProvideClassificationCategoryReportAccTest extends AbstractReportAccTest { ClassificationCategoryReport report = MONITOR_SERVICE - .createCategoryReportBuilder() + .createClassificationCategoryReportBuilder() .withColumnHeaders(columnHeaders) .inWorkingDays() .buildReport(TaskTimestamp.PLANNED); @@ -153,7 +169,7 @@ class ProvideClassificationCategoryReportAccTest extends AbstractReportAccTest { ClassificationCategoryReport report = MONITOR_SERVICE - .createCategoryReportBuilder() + .createClassificationCategoryReportBuilder() .withColumnHeaders(columnHeaders) .buildReport(); @@ -179,7 +195,7 @@ class ProvideClassificationCategoryReportAccTest extends AbstractReportAccTest { ClassificationCategoryReport report = MONITOR_SERVICE - .createCategoryReportBuilder() + .createClassificationCategoryReportBuilder() .withColumnHeaders(columnHeaders) .inWorkingDays() .workbasketIdIn(workbasketIds) @@ -206,7 +222,7 @@ class ProvideClassificationCategoryReportAccTest extends AbstractReportAccTest { ClassificationCategoryReport report = MONITOR_SERVICE - .createCategoryReportBuilder() + .createClassificationCategoryReportBuilder() .withColumnHeaders(columnHeaders) .stateIn(states) .inWorkingDays() @@ -233,7 +249,7 @@ class ProvideClassificationCategoryReportAccTest extends AbstractReportAccTest { ClassificationCategoryReport report = MONITOR_SERVICE - .createCategoryReportBuilder() + .createClassificationCategoryReportBuilder() .withColumnHeaders(columnHeaders) .classificationCategoryIn(categories) .inWorkingDays() @@ -257,7 +273,7 @@ class ProvideClassificationCategoryReportAccTest extends AbstractReportAccTest { ClassificationCategoryReport report = MONITOR_SERVICE - .createCategoryReportBuilder() + .createClassificationCategoryReportBuilder() .withColumnHeaders(columnHeaders) .domainIn(domains) .inWorkingDays() @@ -285,7 +301,7 @@ class ProvideClassificationCategoryReportAccTest extends AbstractReportAccTest { ClassificationCategoryReport report = MONITOR_SERVICE - .createCategoryReportBuilder() + .createClassificationCategoryReportBuilder() .withColumnHeaders(columnHeaders) .customAttributeFilterIn(customAttributeFilter) .inWorkingDays() diff --git a/lib/taskana-core/src/test/java/acceptance/report/ProvideClassificationReportAccTest.java b/lib/taskana-core/src/test/java/acceptance/report/ProvideClassificationReportAccTest.java index e856730d0..95144f522 100644 --- a/lib/taskana-core/src/test/java/acceptance/report/ProvideClassificationReportAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/report/ProvideClassificationReportAccTest.java @@ -41,6 +41,19 @@ class ProvideClassificationReportAccTest extends AbstractReportAccTest { .isInstanceOf(NotAuthorizedException.class); } + @WithAccessId(user = "monitor") + @Test + void should_augmentDisplayNames_When_ReportIsBuild() throws Exception { + ClassificationReport report = MONITOR_SERVICE.createClassificationReportBuilder().buildReport(); + + assertThat(report.getRows()).hasSize(5); + assertThat(report.getRow("L10000").getDisplayName()).isEqualTo("OLD-Leistungsfall"); + assertThat(report.getRow("L20000").getDisplayName()).isEqualTo("Beratungsprotokoll"); + assertThat(report.getRow("L30000").getDisplayName()).isEqualTo("Widerruf"); + assertThat(report.getRow("L40000").getDisplayName()).isEqualTo("Dynamikaenderung"); + assertThat(report.getRow("L50000").getDisplayName()).isEqualTo("Dynamik-Ablehnung"); + } + @WithAccessId(user = "monitor") @Test void testGetTotalNumbersOfTasksOfClassificationReport() throws Exception { diff --git a/lib/taskana-core/src/test/java/acceptance/report/ProvideCustomFieldValueReportAccTest.java b/lib/taskana-core/src/test/java/acceptance/report/ProvideCustomFieldValueReportAccTest.java index cb924f81f..8bc566d11 100644 --- a/lib/taskana-core/src/test/java/acceptance/report/ProvideCustomFieldValueReportAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/report/ProvideCustomFieldValueReportAccTest.java @@ -44,6 +44,21 @@ class ProvideCustomFieldValueReportAccTest extends AbstractReportAccTest { assertThatThrownBy(call).isInstanceOf(NotAuthorizedException.class); } + @WithAccessId(user = "monitor") + @Test + void should_augmentDisplayNames_When_ReportIsBuild() throws Exception { + CustomFieldValueReport report = + MONITOR_SERVICE.createCustomFieldValueReportBuilder(CustomField.CUSTOM_1).buildReport(); + + assertThat(report.getRows()).hasSize(3); + assertThat(report.getRow("Geschaeftsstelle A").getDisplayName()) + .isEqualTo("Geschaeftsstelle A"); + assertThat(report.getRow("Geschaeftsstelle B").getDisplayName()) + .isEqualTo("Geschaeftsstelle B"); + assertThat(report.getRow("Geschaeftsstelle C").getDisplayName()) + .isEqualTo("Geschaeftsstelle C"); + } + @WithAccessId(user = "monitor") @Test void testGetTotalNumbersOfTasksOfCustomFieldValueReportForCustom1() throws Exception { diff --git a/lib/taskana-core/src/test/java/acceptance/report/ProvideDetailedClassificationReportAccTest.java b/lib/taskana-core/src/test/java/acceptance/report/ProvideDetailedClassificationReportAccTest.java index 66406f603..d3b613b4e 100644 --- a/lib/taskana-core/src/test/java/acceptance/report/ProvideDetailedClassificationReportAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/report/ProvideDetailedClassificationReportAccTest.java @@ -27,6 +27,7 @@ import pro.taskana.monitor.api.TaskTimestamp; import pro.taskana.monitor.api.reports.ClassificationReport.DetailedClassificationReport; import pro.taskana.monitor.api.reports.header.TimeIntervalColumnHeader; import pro.taskana.monitor.api.reports.item.DetailedMonitorQueryItem; +import pro.taskana.monitor.api.reports.row.DetailedClassificationRow; import pro.taskana.monitor.api.reports.row.FoldableRow; import pro.taskana.monitor.api.reports.row.Row; import pro.taskana.task.api.CustomField; @@ -45,6 +46,44 @@ class ProvideDetailedClassificationReportAccTest extends AbstractReportAccTest { assertThatThrownBy(call).isInstanceOf(NotAuthorizedException.class); } + @WithAccessId(user = "monitor") + @Test + void should_augmentDisplayNames_When_ReportIsBuild() throws Exception { + DetailedClassificationReport report = + MONITOR_SERVICE.createClassificationReportBuilder().buildDetailedReport(); + + assertThat(report.getRows()).hasSize(5); + + DetailedClassificationRow row = report.getRow("L10000"); + assertThat(row.getDisplayName()).isEqualTo("OLD-Leistungsfall"); + assertThat(row.getFoldableRowCount()).isEqualTo(2); + assertThat(row.getFoldableRow("L11000").getDisplayName()).isEqualTo("Anhang 1"); + assertThat(row.getFoldableRow("N/A").getDisplayName()).isEqualTo("N/A"); + + row = report.getRow("L20000"); + assertThat(row.getDisplayName()).isEqualTo("Beratungsprotokoll"); + assertThat(row.getFoldableRowCount()).isEqualTo(2); + assertThat(row.getFoldableRow("L22000").getDisplayName()).isEqualTo("Anhang 2"); + assertThat(row.getFoldableRow("N/A").getDisplayName()).isEqualTo("N/A"); + + row = report.getRow("L30000"); + assertThat(row.getDisplayName()).isEqualTo("Widerruf"); + assertThat(row.getFoldableRowCount()).isEqualTo(3); + assertThat(row.getFoldableRow("L33000").getDisplayName()).isEqualTo("Anhang 3"); + assertThat(row.getFoldableRow("L99000").getDisplayName()).isEqualTo("Anhang 9"); + assertThat(row.getFoldableRow("N/A").getDisplayName()).isEqualTo("N/A"); + + row = report.getRow("L40000"); + assertThat(row.getDisplayName()).isEqualTo("Dynamikaenderung"); + assertThat(row.getFoldableRowCount()).isOne(); + assertThat(row.getFoldableRow("N/A").getDisplayName()).isEqualTo("N/A"); + + row = report.getRow("L50000"); + assertThat(row.getDisplayName()).isEqualTo("Dynamik-Ablehnung"); + assertThat(row.getFoldableRowCount()).isOne(); + assertThat(row.getFoldableRow("N/A").getDisplayName()).isEqualTo("N/A"); + } + @WithAccessId(user = "monitor") @Test void testGetTotalNumbersOfTasksOfDetailedClassificationReport() throws Exception { diff --git a/lib/taskana-core/src/test/java/acceptance/report/ProvideTaskStatusReportAccTest.java b/lib/taskana-core/src/test/java/acceptance/report/ProvideTaskStatusReportAccTest.java index 4cd59abde..dc24808ee 100644 --- a/lib/taskana-core/src/test/java/acceptance/report/ProvideTaskStatusReportAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/report/ProvideTaskStatusReportAccTest.java @@ -26,7 +26,7 @@ import pro.taskana.task.api.TaskState; @ExtendWith(JaasExtension.class) class ProvideTaskStatusReportAccTest extends AbstractReportAccTest { - MonitorService monitorService = taskanaEngine.getMonitorService(); + private static final MonitorService MONITOR_SERVICE = taskanaEngine.getMonitorService(); @BeforeEach void reset() throws Exception { @@ -35,7 +35,7 @@ class ProvideTaskStatusReportAccTest extends AbstractReportAccTest { @Test void should_ThrowException_IfUserIsNotAuthorized() { - assertThatThrownBy(() -> monitorService.createTaskStatusReportBuilder().buildReport()) + assertThatThrownBy(() -> MONITOR_SERVICE.createTaskStatusReportBuilder().buildReport()) .isInstanceOf(NotAuthorizedException.class); } @@ -45,7 +45,7 @@ class ProvideTaskStatusReportAccTest extends AbstractReportAccTest { @WithAccessId(user = "taskadmin") @TestTemplate void should_ThrowException_IfUserIsNotAdminOrMonitor() { - assertThatThrownBy(() -> monitorService.createTaskStatusReportBuilder().buildReport()) + assertThatThrownBy(() -> MONITOR_SERVICE.createTaskStatusReportBuilder().buildReport()) .isInstanceOf(NotAuthorizedException.class); } @@ -53,14 +53,25 @@ class ProvideTaskStatusReportAccTest extends AbstractReportAccTest { @WithAccessId(user = "monitor") @TestTemplate void should_BuildReport_IfUserIsAdminOrMonitor() { - assertThatCode(() -> monitorService.createTaskStatusReportBuilder().buildReport()) + assertThatCode(() -> MONITOR_SERVICE.createTaskStatusReportBuilder().buildReport()) .doesNotThrowAnyException(); } + @WithAccessId(user = "monitor") + @Test + void should_augmentDisplayNames_When_ReportIsBuild() throws Exception { + TaskStatusReport report = MONITOR_SERVICE.createTaskStatusReportBuilder().buildReport(); + + assertThat(report.getRows()).hasSize(3); + assertThat(report.getRow("DOMAIN_A").getDisplayName()).isEqualTo("DOMAIN_A"); + assertThat(report.getRow("DOMAIN_B").getDisplayName()).isEqualTo("DOMAIN_B"); + assertThat(report.getRow("DOMAIN_C").getDisplayName()).isEqualTo("DOMAIN_C"); + } + @WithAccessId(user = "monitor") @Test void testCompleteTaskStatusReport() throws Exception { - TaskStatusReport report = monitorService.createTaskStatusReportBuilder().buildReport(); + TaskStatusReport report = MONITOR_SERVICE.createTaskStatusReportBuilder().buildReport(); assertThat(report).isNotNull(); assertThat(report.rowSize()).isEqualTo(3); @@ -86,7 +97,7 @@ class ProvideTaskStatusReportAccTest extends AbstractReportAccTest { @Test void testCompleteTaskStatusReportWithDomainFilter() throws Exception { TaskStatusReport report = - monitorService + MONITOR_SERVICE .createTaskStatusReportBuilder() .domainIn(asList("DOMAIN_C", "DOMAIN_A")) .buildReport(); @@ -111,7 +122,7 @@ class ProvideTaskStatusReportAccTest extends AbstractReportAccTest { @Test void testCompleteTaskStatusReportWithStateFilter() throws Exception { TaskStatusReport report = - monitorService + MONITOR_SERVICE .createTaskStatusReportBuilder() .stateIn(Collections.singletonList(TaskState.READY)) .buildReport(); @@ -146,7 +157,7 @@ class ProvideTaskStatusReportAccTest extends AbstractReportAccTest { taskService.cancelTask("TKI:000000000000000000000000000000000013"); taskService.cancelTask("TKI:000000000000000000000000000000000014"); TaskStatusReport report = - monitorService + MONITOR_SERVICE .createTaskStatusReportBuilder() .stateIn( Arrays.asList( diff --git a/lib/taskana-core/src/test/java/acceptance/report/ProvideTimestampReportAccTest.java b/lib/taskana-core/src/test/java/acceptance/report/ProvideTimestampReportAccTest.java index 889b74807..b3a749c4e 100644 --- a/lib/taskana-core/src/test/java/acceptance/report/ProvideTimestampReportAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/report/ProvideTimestampReportAccTest.java @@ -24,6 +24,17 @@ import pro.taskana.monitor.api.reports.row.TimestampRow; @ExtendWith(JaasExtension.class) class ProvideTimestampReportAccTest extends AbstractReportAccTest { + private static final MonitorService MONITOR_SERVICE = taskanaEngine.getMonitorService(); + + @WithAccessId(user = "monitor") + @Test + void should_augmentDisplayNames_When_ReportIsBuild() throws Exception { + TimestampReport report = MONITOR_SERVICE.createTimestampReportBuilder().buildReport(); + assertThat(report.getRows()).hasSize(2); + assertThat(report.getRow("CREATED").getDisplayName()).isEqualTo("CREATED"); + assertThat(report.getRow("COMPLETED").getDisplayName()).isEqualTo("COMPLETED"); + } + /** * This test covers every insert operation of the TimestampReport. We have two definitions for org * level 1: 'org1' and 'N/A'. All other org levels only contain 'N/A'. Thus this test only tests @@ -35,7 +46,6 @@ class ProvideTimestampReportAccTest extends AbstractReportAccTest { @WithAccessId(user = "monitor") @Test void testProperInsertionOfQueryItems() throws Exception { - MonitorService monitorService = taskanaEngine.getMonitorService(); // last 14 days. Today excluded. List headers = @@ -43,7 +53,7 @@ class ProvideTimestampReportAccTest extends AbstractReportAccTest { .mapToObj(TimeIntervalColumnHeader.Date::new) .collect(Collectors.toList()); TimestampReport timestampReport = - monitorService.createTimestampReportBuilder().withColumnHeaders(headers).buildReport(); + MONITOR_SERVICE.createTimestampReportBuilder().withColumnHeaders(headers).buildReport(); final HashSet org1Set = new HashSet<>(Arrays.asList("N/A", "org1")); final HashSet allOtherOrgLevelSet = new HashSet<>(Collections.singletonList("N/A")); diff --git a/lib/taskana-core/src/test/java/acceptance/report/ProvideWorkbasketReportAccTest.java b/lib/taskana-core/src/test/java/acceptance/report/ProvideWorkbasketReportAccTest.java index 9e5fca792..0ef7bcc63 100644 --- a/lib/taskana-core/src/test/java/acceptance/report/ProvideWorkbasketReportAccTest.java +++ b/lib/taskana-core/src/test/java/acceptance/report/ProvideWorkbasketReportAccTest.java @@ -11,7 +11,6 @@ import java.util.HashMap; import java.util.Iterator; import java.util.List; import java.util.Map; -import java.util.stream.IntStream; import java.util.stream.Stream; import org.assertj.core.api.ThrowableAssert.ThrowingCallable; import org.junit.jupiter.api.DynamicTest; @@ -43,6 +42,16 @@ class ProvideWorkbasketReportAccTest extends AbstractReportAccTest { .isInstanceOf(NotAuthorizedException.class); } + @WithAccessId(user = "monitor") + @Test + void should_augmentDisplayNames_When_ReportIsBuild() throws Exception { + WorkbasketReport report = MONITOR_SERVICE.createWorkbasketReportBuilder().buildReport(); + assertThat(report.getRows()).hasSize(3); + assertThat(report.getRow("USER-1-1").getDisplayName()).isEqualTo("PPK User 1 KSC 1"); + assertThat(report.getRow("USER-1-2").getDisplayName()).isEqualTo("PPK User 1 KSC 2"); + assertThat(report.getRow("USER-1-3").getDisplayName()).isEqualTo("PPK User 1 KSC 3"); + } + @WithAccessId(user = "monitor") @Test void testGetTotalNumbersOfTasksOfWorkbasketReportBasedOnDueDate() throws Exception { @@ -70,8 +79,6 @@ class ProvideWorkbasketReportAccTest extends AbstractReportAccTest { .inWorkingDays() .buildReport(); - final int sumLineCount = IntStream.of(report.getSumRow().getCells()).sum(); - assertThat(report).isNotNull(); assertThat(report.rowSize()).isEqualTo(3); @@ -81,9 +88,7 @@ class ProvideWorkbasketReportAccTest extends AbstractReportAccTest { int[] sumRow = report.getSumRow().getCells(); assertThat(sumRow).isEqualTo(new int[] {10, 9, 11, 0, 4, 0, 7, 4, 5}); - assertThat(report.getSumRow().getTotalValue()).isEqualTo(50); - assertThat(sumLineCount).isEqualTo(50); } @WithAccessId(user = "monitor") diff --git a/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/ClassificationClassificationCategoryReportBuilderImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/ClassificationClassificationCategoryReportBuilderImplTest.java index 04620b1b0..d3ffa7dba 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/ClassificationClassificationCategoryReportBuilderImplTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/ClassificationClassificationCategoryReportBuilderImplTest.java @@ -80,7 +80,7 @@ class ClassificationClassificationCategoryReportBuilderImplTest { .thenReturn(expectedResult); final ClassificationCategoryReport actualResult = - cut.createCategoryReportBuilder() + cut.createClassificationCategoryReportBuilder() .workbasketIdIn(workbasketIds) .stateIn(states) .classificationCategoryIn(categories) @@ -140,7 +140,7 @@ class ClassificationClassificationCategoryReportBuilderImplTest { .thenReturn(expectedResult); final ClassificationCategoryReport actualResult = - cut.createCategoryReportBuilder() + cut.createClassificationCategoryReportBuilder() .workbasketIdIn(workbasketIds) .stateIn(states) .classificationCategoryIn(categories) @@ -206,7 +206,7 @@ class ClassificationClassificationCategoryReportBuilderImplTest { .thenReturn(expectedResult); final List actualResult = - cut.createCategoryReportBuilder() + cut.createClassificationCategoryReportBuilder() .workbasketIdIn(workbasketIds) .stateIn(states) .classificationCategoryIn(categories) @@ -239,7 +239,7 @@ class ClassificationClassificationCategoryReportBuilderImplTest { SelectedItem selectedItem = new SelectedItem(); List selectedItems = Collections.singletonList(selectedItem); List result = - cut.createCategoryReportBuilder().listTaskIdsForSelectedItems(selectedItems); + cut.createClassificationCategoryReportBuilder().listTaskIdsForSelectedItems(selectedItems); assertThat(result).isNotNull(); } @@ -275,7 +275,7 @@ class ClassificationClassificationCategoryReportBuilderImplTest { .thenReturn(expectedResult); final List actualResult = - cut.createCategoryReportBuilder() + cut.createClassificationCategoryReportBuilder() .workbasketIdIn(workbasketIds) .stateIn(states) .classificationCategoryIn(categories) @@ -305,7 +305,7 @@ class ClassificationClassificationCategoryReportBuilderImplTest { @Test void testListCustomAttributeValuesForCustomAttributeNameIsEmptyResult() throws Exception { List result = - cut.createCategoryReportBuilder() + cut.createClassificationCategoryReportBuilder() .workbasketIdIn(Collections.singletonList("DieGibtsSicherNed")) .listCustomAttributeValuesForCustomAttributeName(CustomField.CUSTOM_1); assertThat(result).isNotNull(); diff --git a/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/ClassificationReportBuilderImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/ClassificationReportBuilderImplTest.java index b98ab5775..06ba4ade5 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/ClassificationReportBuilderImplTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/ClassificationReportBuilderImplTest.java @@ -3,6 +3,7 @@ package pro.taskana.monitor.internal; import static org.assertj.core.api.Assertions.assertThat; import static org.mockito.ArgumentMatchers.any; import static org.mockito.ArgumentMatchers.eq; +import static org.mockito.Mockito.mock; import static org.mockito.Mockito.times; import static org.mockito.Mockito.verify; import static org.mockito.Mockito.verifyNoMoreInteractions; @@ -22,6 +23,8 @@ import org.mockito.Mock; import org.mockito.junit.jupiter.MockitoExtension; import pro.taskana.TaskanaEngineConfiguration; +import pro.taskana.classification.api.ClassificationQuery; +import pro.taskana.classification.api.ClassificationService; import pro.taskana.common.api.TaskanaEngine; import pro.taskana.common.internal.InternalTaskanaEngine; import pro.taskana.monitor.api.SelectedItem; @@ -40,18 +43,26 @@ import pro.taskana.task.api.TaskState; class ClassificationReportBuilderImplTest { @InjectMocks private MonitorServiceImpl cut; - @Mock private InternalTaskanaEngine internalTaskanaEngineMock; - @Mock private TaskanaEngine taskanaEngineMock; - @Mock private TaskanaEngineConfiguration taskanaEngineConfiguration; - @Mock private MonitorMapper monitorMapperMock; + @Mock private ClassificationService classificationService; + + private Object[] mocks; @BeforeEach void setup() { when(internalTaskanaEngineMock.getEngine()).thenReturn(taskanaEngineMock); + when(taskanaEngineMock.getClassificationService()).thenReturn(classificationService); + mocks = + new Object[] { + internalTaskanaEngineMock, + taskanaEngineMock, + monitorMapperMock, + taskanaEngineConfiguration, + classificationService + }; } @Test @@ -82,6 +93,12 @@ class ClassificationReportBuilderImplTest { customAttributeFilter)) .thenReturn(expectedResult); + ClassificationQuery queryMock = mock(ClassificationQuery.class); + when(classificationService.createClassificationQuery()).thenReturn(queryMock); + when(queryMock.keyIn(any())).thenReturn(queryMock); + when(queryMock.domainIn(any())).thenReturn(queryMock); + when(queryMock.list()).thenReturn(Collections.emptyList()); + final ClassificationReport actualResult = cut.createClassificationReportBuilder() .workbasketIdIn(workbasketIds) @@ -96,16 +113,15 @@ class ClassificationReportBuilderImplTest { verify(internalTaskanaEngineMock).openConnection(); verify(taskanaEngineMock).checkRoleMembership(any()); verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(internalTaskanaEngineMock, times(2)).getEngine(); + verify(taskanaEngineMock).getClassificationService(); + verify(internalTaskanaEngineMock, times(3)).getEngine(); verify(monitorMapperMock) .getTaskCountOfClassifications(any(), any(), any(), any(), any(), any(), any(), any()); verify(internalTaskanaEngineMock).returnConnection(); - verifyNoMoreInteractions( - internalTaskanaEngineMock, - taskanaEngineMock, - monitorMapperMock, - taskanaEngineConfiguration); + + verifyNoMoreInteractions(queryMock); + verifyNoMoreInteractions(mocks); assertThat(actualResult).isNotNull(); assertThat(actualResult.getRow("CLI:000000000000000000000000000000000001").getTotalValue()) @@ -144,6 +160,11 @@ class ClassificationReportBuilderImplTest { excludedClassificationIds, customAttributeFilter)) .thenReturn(expectedResult); + ClassificationQuery queryMock = mock(ClassificationQuery.class); + when(classificationService.createClassificationQuery()).thenReturn(queryMock); + when(queryMock.keyIn(any())).thenReturn(queryMock); + when(queryMock.domainIn(any())).thenReturn(queryMock); + when(queryMock.list()).thenReturn(Collections.emptyList()); final ClassificationReport actualResult = cut.createClassificationReportBuilder() @@ -160,16 +181,14 @@ class ClassificationReportBuilderImplTest { verify(internalTaskanaEngineMock).openConnection(); verify(taskanaEngineMock).checkRoleMembership(any()); verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(internalTaskanaEngineMock, times(2)).getEngine(); + verify(taskanaEngineMock).getClassificationService(); + verify(internalTaskanaEngineMock, times(3)).getEngine(); verify(monitorMapperMock) .getTaskCountOfClassifications(any(), any(), any(), any(), any(), any(), any(), any()); verify(internalTaskanaEngineMock).returnConnection(); - verifyNoMoreInteractions( - internalTaskanaEngineMock, - taskanaEngineMock, - monitorMapperMock, - taskanaEngineConfiguration); + verifyNoMoreInteractions(queryMock); + verifyNoMoreInteractions(mocks); assertThat(actualResult).isNotNull(); assertThat(actualResult.getRow("CLI:000000000000000000000000000000000001").getTotalValue()) @@ -207,6 +226,11 @@ class ClassificationReportBuilderImplTest { excludedClassificationIds, customAttributeFilter)) .thenReturn(expectedResult); + ClassificationQuery queryMock = mock(ClassificationQuery.class); + when(classificationService.createClassificationQuery()).thenReturn(queryMock); + when(queryMock.keyIn(any())).thenReturn(queryMock); + when(queryMock.domainIn(any())).thenReturn(queryMock); + when(queryMock.list()).thenReturn(Collections.emptyList()); final DetailedClassificationReport actualResult = cut.createClassificationReportBuilder() @@ -222,17 +246,15 @@ class ClassificationReportBuilderImplTest { verify(internalTaskanaEngineMock).openConnection(); verify(taskanaEngineMock).checkRoleMembership(any()); verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(internalTaskanaEngineMock, times(2)).getEngine(); + verify(taskanaEngineMock).getClassificationService(); + verify(internalTaskanaEngineMock, times(3)).getEngine(); verify(monitorMapperMock) .getTaskCountOfDetailedClassifications( any(), any(), any(), any(), any(), any(), any(), any()); verify(internalTaskanaEngineMock).returnConnection(); - verifyNoMoreInteractions( - internalTaskanaEngineMock, - taskanaEngineMock, - monitorMapperMock, - taskanaEngineConfiguration); + verifyNoMoreInteractions(queryMock); + verifyNoMoreInteractions(mocks); FoldableRow line = actualResult.getRow("CLI:000000000000000000000000000000000001"); @@ -274,6 +296,11 @@ class ClassificationReportBuilderImplTest { excludedClassificationIds, customAttributeFilter)) .thenReturn(expectedResult); + ClassificationQuery queryMock = mock(ClassificationQuery.class); + when(classificationService.createClassificationQuery()).thenReturn(queryMock); + when(queryMock.keyIn(any())).thenReturn(queryMock); + when(queryMock.domainIn(any())).thenReturn(queryMock); + when(queryMock.list()).thenReturn(Collections.emptyList()); final DetailedClassificationReport actualResult = cut.createClassificationReportBuilder() @@ -290,17 +317,15 @@ class ClassificationReportBuilderImplTest { verify(internalTaskanaEngineMock).openConnection(); verify(taskanaEngineMock).checkRoleMembership(any()); verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(internalTaskanaEngineMock, times(2)).getEngine(); + verify(taskanaEngineMock).getClassificationService(); + verify(internalTaskanaEngineMock, times(3)).getEngine(); verify(monitorMapperMock) .getTaskCountOfDetailedClassifications( any(), any(), any(), any(), any(), any(), any(), any()); verify(internalTaskanaEngineMock).returnConnection(); - verifyNoMoreInteractions( - internalTaskanaEngineMock, - taskanaEngineMock, - monitorMapperMock, - taskanaEngineConfiguration); + verifyNoMoreInteractions(queryMock); + verifyNoMoreInteractions(mocks); FoldableRow line = actualResult.getRow("CLI:000000000000000000000000000000000001"); @@ -365,17 +390,14 @@ class ClassificationReportBuilderImplTest { verify(internalTaskanaEngineMock).openConnection(); verify(taskanaEngineMock).checkRoleMembership(any()); verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(internalTaskanaEngineMock, times(2)).getEngine(); + verify(internalTaskanaEngineMock, times(3)).getEngine(); verify(monitorMapperMock) .getTaskIdsForSelectedItems( any(), any(), any(), any(), any(), any(), any(), any(), any(), eq(false)); verify(internalTaskanaEngineMock).returnConnection(); - verifyNoMoreInteractions( - internalTaskanaEngineMock, - taskanaEngineMock, - monitorMapperMock, - taskanaEngineConfiguration); + verify(taskanaEngineMock).getClassificationService(); + verifyNoMoreInteractions(mocks); assertThat(actualResult).isNotNull(); assertThat(actualResult).isEqualTo(expectedResult); @@ -439,16 +461,13 @@ class ClassificationReportBuilderImplTest { verify(internalTaskanaEngineMock).openConnection(); verify(taskanaEngineMock).checkRoleMembership(any()); verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(internalTaskanaEngineMock, times(2)).getEngine(); + verify(internalTaskanaEngineMock, times(3)).getEngine(); verify(monitorMapperMock) .getCustomAttributeValuesForReport(any(), any(), any(), any(), any(), any(), any(), any()); verify(internalTaskanaEngineMock).returnConnection(); - verifyNoMoreInteractions( - internalTaskanaEngineMock, - taskanaEngineMock, - monitorMapperMock, - taskanaEngineConfiguration); + verify(taskanaEngineMock).getClassificationService(); + verifyNoMoreInteractions(mocks); assertThat(actualResult).isNotNull(); assertThat(actualResult).isEqualTo(expectedResult); diff --git a/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/ReportTest.java b/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/ReportTest.java index da4030f36..16b617163 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/ReportTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/ReportTest.java @@ -5,6 +5,7 @@ import static org.assertj.core.api.Assertions.assertThat; import java.util.ArrayList; import java.util.Arrays; import java.util.Collections; +import java.util.HashMap; import java.util.List; import java.util.stream.Collectors; import java.util.stream.IntStream; @@ -235,6 +236,38 @@ class ReportTest { assertThat(sumRow.getTotalValue()).isEqualTo(2 * item.getValue()); } + @Test + void should_FallBackToKey_When_DisplayMapDoesNotContainName() { + report.augmentDisplayNames(new HashMap<>()); + + assertThat(report.getSumRow().getDisplayName()).isEqualTo(report.getSumRow().getKey()); + } + + @Test + void should_SetDisplayName_When_DisplayMapContainsName() { + HashMap displayMap = new HashMap<>(); + displayMap.put(report.getSumRow().getKey(), "BLA BLA"); + report.augmentDisplayNames(displayMap); + + assertThat(report.getSumRow().getDisplayName()).isEqualTo("BLA BLA"); + } + + @Test + void should_SetDisplayNameForFoldableRows_When_DisplayMapContainsNames() { + ReportWithFoldableRow report = + new ReportWithFoldableRow(HEADERS, new String[] {"totalDesc", "foldalbeRowDesc"}); + report.addItem(item); + + HashMap displayMap = new HashMap<>(); + displayMap.put("key", "displayname for key"); + displayMap.put("KEY", "displayname for KEY"); + report.augmentDisplayNames(displayMap); + + FoldableTestRow row = report.getRow("key"); + assertThat(row.getDisplayName()).isEqualTo("displayname for key"); + assertThat(row.getFoldableRow("KEY").getDisplayName()).isEqualTo("displayname for KEY"); + } + private static class MonitorQueryItemTimeIntervalColumnHeaderReport extends Report { diff --git a/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/WorkbasketReportBuilderImplTest.java b/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/WorkbasketReportBuilderImplTest.java index 24af9aa85..7eb561b40 100644 --- a/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/WorkbasketReportBuilderImplTest.java +++ b/lib/taskana-core/src/test/java/pro/taskana/monitor/internal/WorkbasketReportBuilderImplTest.java @@ -86,6 +86,7 @@ class WorkbasketReportBuilderImplTest { customAttributeFilter, combinedClassificationFilter)) .thenReturn(expectedResult); + when(internalTaskanaEngineMock.runAsAdmin(any())).thenReturn(Collections.emptyMap()); final WorkbasketReport actualResult = cut.createWorkbasketReportBuilder() @@ -102,10 +103,12 @@ class WorkbasketReportBuilderImplTest { verify(internalTaskanaEngineMock).openConnection(); verify(taskanaEngineMock).checkRoleMembership(any()); verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(internalTaskanaEngineMock, times(2)).getEngine(); + verify(internalTaskanaEngineMock, times(3)).getEngine(); verify(monitorMapperMock) .getTaskCountOfWorkbaskets(any(), any(), any(), any(), any(), any(), any(), any(), any()); verify(internalTaskanaEngineMock).returnConnection(); + verify(internalTaskanaEngineMock).runAsAdmin(any()); + verify(taskanaEngineMock).getWorkbasketService(); verifyNoMoreInteractions(internalTaskanaEngineMock, taskanaEngineMock, monitorMapperMock); assertThat(actualResult).isNotNull(); @@ -150,6 +153,7 @@ class WorkbasketReportBuilderImplTest { customAttributeFilter, combinedClassificationFilter)) .thenReturn(expectedResult); + when(internalTaskanaEngineMock.runAsAdmin(any())).thenReturn(Collections.emptyMap()); final WorkbasketReport actualResult = cut.createWorkbasketReportBuilder() @@ -167,10 +171,11 @@ class WorkbasketReportBuilderImplTest { verify(internalTaskanaEngineMock).openConnection(); verify(taskanaEngineMock).checkRoleMembership(any()); verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(internalTaskanaEngineMock, times(2)).getEngine(); + verify(internalTaskanaEngineMock, times(3)).getEngine(); verify(monitorMapperMock) .getTaskCountOfWorkbaskets(any(), any(), any(), any(), any(), any(), any(), any(), any()); verify(internalTaskanaEngineMock).returnConnection(); + verify(taskanaEngineMock).getWorkbasketService(); verifyNoMoreInteractions(internalTaskanaEngineMock, taskanaEngineMock, monitorMapperMock); assertThat(actualResult).isNotNull(); @@ -231,11 +236,12 @@ class WorkbasketReportBuilderImplTest { verify(internalTaskanaEngineMock).openConnection(); verify(taskanaEngineMock).checkRoleMembership(any()); verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(internalTaskanaEngineMock, times(2)).getEngine(); + verify(internalTaskanaEngineMock, times(3)).getEngine(); verify(monitorMapperMock) .getTaskIdsForSelectedItems( any(), any(), any(), any(), any(), any(), any(), any(), any(), eq(false)); verify(internalTaskanaEngineMock).returnConnection(); + verify(taskanaEngineMock).getWorkbasketService(); verifyNoMoreInteractions(internalTaskanaEngineMock, taskanaEngineMock, monitorMapperMock); assertThat(actualResult).isNotNull(); @@ -302,10 +308,11 @@ class WorkbasketReportBuilderImplTest { verify(internalTaskanaEngineMock).openConnection(); verify(taskanaEngineMock).checkRoleMembership(any()); verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(internalTaskanaEngineMock, times(2)).getEngine(); + verify(internalTaskanaEngineMock, times(3)).getEngine(); verify(monitorMapperMock) .getCustomAttributeValuesForReport(any(), any(), any(), any(), any(), any(), any(), any()); verify(internalTaskanaEngineMock).returnConnection(); + verify(taskanaEngineMock).getWorkbasketService(); verifyNoMoreInteractions(internalTaskanaEngineMock, taskanaEngineMock, monitorMapperMock); assertThat(actualResult).isNotNull(); @@ -333,7 +340,7 @@ class WorkbasketReportBuilderImplTest { Map customAttributeFilter = new HashMap<>(); customAttributeFilter.put(CustomField.CUSTOM_1, "Geschaeftsstelle A"); final List combinedClassificationFilter = - Arrays.asList( + Collections.singletonList( new CombinedClassificationFilter( "CLI:000000000000000000000000000000000003", "CLI:000000000000000000000000000000000008")); @@ -355,6 +362,8 @@ class WorkbasketReportBuilderImplTest { combinedClassificationFilter)) .thenReturn(expectedResult); + when(internalTaskanaEngineMock.runAsAdmin(any())).thenReturn(Collections.emptyMap()); + final WorkbasketReport actualResult = cut.createWorkbasketReportBuilder() .workbasketIdIn(workbasketIds) @@ -370,7 +379,7 @@ class WorkbasketReportBuilderImplTest { verify(internalTaskanaEngineMock).openConnection(); verify(taskanaEngineMock).checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN); verify(taskanaEngineMock).getWorkingDaysToDaysConverter(); - verify(internalTaskanaEngineMock, times(2)).getEngine(); + verify(internalTaskanaEngineMock, times(3)).getEngine(); verify(monitorMapperMock) .getTaskCountOfWorkbaskets( workbasketIds, @@ -383,6 +392,7 @@ class WorkbasketReportBuilderImplTest { customAttributeFilter, combinedClassificationFilter); verify(internalTaskanaEngineMock).returnConnection(); + verify(taskanaEngineMock).getWorkbasketService(); verifyNoMoreInteractions(internalTaskanaEngineMock, taskanaEngineMock, monitorMapperMock); assertThat(actualResult).isNotNull(); diff --git a/lib/taskana-data/src/main/resources/sql/monitor-data/monitor-sample-data.sql b/lib/taskana-data/src/main/resources/sql/monitor-data/monitor-sample-data.sql index a6ebf551f..dc0fcbe2a 100644 --- a/lib/taskana-data/src/main/resources/sql/monitor-data/monitor-sample-data.sql +++ b/lib/taskana-data/src/main/resources/sql/monitor-data/monitor-sample-data.sql @@ -4,7 +4,7 @@ INSERT INTO WORKBASKET VALUES ('WBI:000000000000000000000000000000000002', 'USER INSERT INTO WORKBASKET VALUES ('WBI:000000000000000000000000000000000003', 'USER-1-3', RELATIVE_DATE(0) , RELATIVE_DATE(0) , 'PPK User 1 KSC 3', 'MONITOR_TEST_DOMAIN', 'PERSONAL', 'Monitor Test Postkorb 3', 'John' , '' , '' , '' , '' , 'org1' , '' , '' , '' , FALSE ); INSERT INTO WORKBASKET VALUES ('WBI:000000000000000000000000000000000004', 'USER-1-4', RELATIVE_DATE(0) , RELATIVE_DATE(0) , 'PPK User 1 KSC 4', 'MONITOR_TEST_DOMAIN', 'PERSONAL', 'Monitor Test Postkorb 4', 'John' , '' , '' , '' , '' , '' , '' , '' , '' , FALSE ); --- CLASSIFICATION TABLE (ID , KEY , PARENT_ID , PARENT_KEY, CATEGORY , TYPE , DOMAIN , VALID_IN_DOMAIN, CREATED , MODIFIED ,NAME , DESCRIPTION , PRIORITY, SERVICE_LEVEL, APPLICATION_ENTRY_POINT, CUSTOM_1 , CUSTOM_2, CUSTOM_3, CUSTOM_4, CUSTOM_5, CUSTOM_6, CUSTOM_7, CUSTOM_8 ); +-- CLASSIFICATION TABLE (ID , KEY , PARENT_ID , PARENT_KEY, CATEGORY , TYPE , DOMAIN , VALID_IN_DOMAIN, CREATED , MODIFIED ,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 , RELATIVE_DATE(0) , RELATIVE_DATE(0) , 'OLD-Leistungsfall' , 'OLD-Leistungsfall' , 3 , 'P1D' , '' , 'VNR,RVNR,KOLVNR' , '' , '' , '' , '' , '' , '' , '' ); INSERT INTO CLASSIFICATION VALUES('CLI:000000000000000000000000000000000002', 'L20000', 'CLI:000000000000000000000000000000000001' , 'L10000', 'EXTERN' , 'TASK', 'DOMAIN_A', TRUE , RELATIVE_DATE(0) , RELATIVE_DATE(0) , 'Beratungsprotokoll' , 'Beratungsprotokoll', 1 , 'P1D' , '' , 'VNR,RVNR,KOLVNR, ANR', '' , '' , '' , '' , '' , '' , '' ); INSERT INTO CLASSIFICATION VALUES('CLI:000000000000000000000000000000000003', 'L30000', 'CLI:000000000000000000000000000000000001' , 'L10000', 'AUTOMATIC', 'TASK', 'DOMAIN_A', TRUE , RELATIVE_DATE(0) , RELATIVE_DATE(0) , 'Widerruf' , 'Widerruf' , 1 , 'P1D' , '' , 'VNR,RVNR,KOLVNR' , '' , '' , '' , '' , '' , '' , '' ); diff --git a/lib/taskana-data/src/main/resources/sql/sample-data/classification.sql b/lib/taskana-data/src/main/resources/sql/sample-data/classification.sql index 224e417fa..63d88ef1e 100644 --- a/lib/taskana-data/src/main/resources/sql/sample-data/classification.sql +++ b/lib/taskana-data/src/main/resources/sql/sample-data/classification.sql @@ -1,4 +1,4 @@ --- ID, KEY, PARENT_ID, PARENT_KEY, CATEGORY, TYPE, DOMAIN, VALID_IN_DOMAIN, CREATED, MODIFIED, NAME, DESCRIPTION, PRIORITY, SERVICE_LEVEL, APPLICATION_ENTRY_POINT, CUSTOM_1 - 8 +-- ID, KEY, PARENT_ID, PARENT_KEY, CATEGORY, TYPE, DOMAIN, VALID_IN_DOMAIN, CREATED, MODIFIED, NAME, DESCRIPTION, PRIORITY, SERVICE_LEVEL, APPLICATION_ENTRY_POINT, CUSTOM_1 - 8 -- MASTER CLASSIFICATIONS INSERT INTO CLASSIFICATION VALUES('CLI:000000000000000000000000000000000001', 'L10000', '', '', 'EXTERNAL', 'TASK', '', FALSE, RELATIVE_DATE(0) , RELATIVE_DATE(0) , 'OLD-Leistungsfall', 'OLD-Leistungsfall', 999, 'P1D', '', 'VNR,RVNR,KOLVNR', '', '', '', '', '', '', ''); INSERT INTO CLASSIFICATION VALUES('CLI:000000000000000000000000000000000002', 'L10303', '', '', 'EXTERNAL', 'TASK', '', FALSE, RELATIVE_DATE(0) , RELATIVE_DATE(0) , 'Beratungsprotokoll', 'Beratungsprotokoll', 1, 'P2D', '', 'VNR,RVNR,KOLVNR, ANR', '', '', '', '', '', '', ''); diff --git a/lib/taskana-data/src/main/resources/sql/test-data/classification.sql b/lib/taskana-data/src/main/resources/sql/test-data/classification.sql index a7ea17cf0..880ac9c7b 100644 --- a/lib/taskana-data/src/main/resources/sql/test-data/classification.sql +++ b/lib/taskana-data/src/main/resources/sql/test-data/classification.sql @@ -1,4 +1,4 @@ --- ID, KEY, PARENT_ID, PARENT_KEY, CATEGORY, TYPE, DOMAIN, VALID_IN_DOMAIN, CREATED, MODIFIED, NAME, DESCRIPTION, PRIORITY, SERVICE_LEVEL, APPLICATION_ENTRY_POINT, CUSTOM_1 - 8 +-- ID, KEY, PARENT_ID, PARENT_KEY, CATEGORY, TYPE, DOMAIN, VALID_IN_DOMAIN, CREATED, MODIFIED, NAME, DESCRIPTION, PRIORITY, SERVICE_LEVEL, APPLICATION_ENTRY_POINT, CUSTOM_1 - 8 -- MASTER CLASSIFICATIONS INSERT INTO CLASSIFICATION VALUES('CLI:000000000000000000000000000000000001', 'L10000', '', '', 'EXTERNAL', 'TASK', '', FALSE, RELATIVE_DATE(0) , RELATIVE_DATE(0) , 'OLD-Leistungsfall', 'OLD-Leistungsfall', 999, 'P1D', '', 'VNR,RVNR,KOLVNR', '', '', '', '', '', '', ''); INSERT INTO CLASSIFICATION VALUES('CLI:000000000000000000000000000000000002', 'L10303', '', '', 'EXTERNAL', 'TASK', '', FALSE, RELATIVE_DATE(0) , RELATIVE_DATE(0) , 'Beratungsprotokoll', 'Beratungsprotokoll', 1, 'P2D', '', 'VNR,RVNR,KOLVNR, ANR', '', '', '', '', '', '', ''); diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/monitor/rest/assembler/ReportRepresentationModelAssembler.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/monitor/rest/assembler/ReportRepresentationModelAssembler.java index f4fa1939b..c841befb5 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/monitor/rest/assembler/ReportRepresentationModelAssembler.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/monitor/rest/assembler/ReportRepresentationModelAssembler.java @@ -107,18 +107,18 @@ public class ReportRepresentationModelAssembler { // iterate over each Row and transform it to a RowResource while keeping the domain key. List rows = - report.getRows().entrySet().stream() + report.getRows().values().stream() .sorted(Comparator.comparing(e -> e.getKey().toLowerCase())) .map( i -> transformRow( - i.getValue(), i.getKey(), new String[report.getRowDesc().length], 0)) + i, new String[report.getRowDesc().length], 0)) .flatMap(Collection::stream) .collect(Collectors.toList()); List sumRow = transformRow( - report.getSumRow(), meta.getTotalDesc(), new String[report.getRowDesc().length], 0); + report.getSumRow(), new String[report.getRowDesc().length], 0); return new ReportRepresentationModel(meta, rows, sumRow); } @@ -129,36 +129,36 @@ public class ReportRepresentationModelAssembler { } private List transformRow( - Row row, String currentDesc, String[] desc, int depth) { + Row row, String[] desc, int depth) { // This is a very dirty solution.. Personally I'd prefer to use a visitor-like pattern here. // The issue with that: Addition of the visitor code within taskana-core - and having clean code // is not // a reason to append code somewhere where it doesn't belong. if (row.getClass() == SingleRow.class) { return Collections.singletonList( - transformSingleRow((SingleRow) row, currentDesc, desc, depth)); + transformSingleRow((SingleRow) row, desc, depth)); } - return transformFoldableRow((FoldableRow) row, currentDesc, desc, depth); + return transformFoldableRow((FoldableRow) row, desc, depth); } private ReportRepresentationModel.RowResource transformSingleRow( - SingleRow row, String currentDesc, String[] previousRowDesc, int depth) { + SingleRow row, String[] previousRowDesc, int depth) { String[] rowDesc = new String[previousRowDesc.length]; System.arraycopy(previousRowDesc, 0, rowDesc, 0, depth); - rowDesc[depth] = currentDesc; + rowDesc[depth] = row.getDisplayName(); return new ReportRepresentationModel.RowResource( row.getCells(), row.getTotalValue(), depth, rowDesc, depth == 0); } private List transformFoldableRow( - FoldableRow row, String currentDesc, String[] previousRowDesc, int depth) { + FoldableRow row, String[] previousRowDesc, int depth) { ReportRepresentationModel.RowResource baseRow = - transformSingleRow(row, currentDesc, previousRowDesc, depth); + transformSingleRow(row, previousRowDesc, depth); List rowList = new LinkedList<>(); rowList.add(baseRow); row.getFoldableRowKeySet().stream() .sorted(String.CASE_INSENSITIVE_ORDER) - .map(s -> transformRow(row.getFoldableRow(s), s, baseRow.getDesc(), depth + 1)) + .map(s -> transformRow(row.getFoldableRow(s), baseRow.getDesc(), depth + 1)) .flatMap(Collection::stream) .forEachOrdered(rowList::add); return rowList; diff --git a/rest/taskana-rest-spring/src/main/java/pro/taskana/monitor/rest/models/ReportRepresentationModel.java b/rest/taskana-rest-spring/src/main/java/pro/taskana/monitor/rest/models/ReportRepresentationModel.java index 320089a8d..42875acd2 100644 --- a/rest/taskana-rest-spring/src/main/java/pro/taskana/monitor/rest/models/ReportRepresentationModel.java +++ b/rest/taskana-rest-spring/src/main/java/pro/taskana/monitor/rest/models/ReportRepresentationModel.java @@ -94,7 +94,8 @@ public class ReportRepresentationModel extends RepresentationModel