TSK-1344: introduced displayName for Row
This commit is contained in:
parent
278d17ecfe
commit
f5e3d449b6
|
@ -26,7 +26,7 @@ public interface MonitorService {
|
||||||
*
|
*
|
||||||
* @return a {@link ClassificationCategoryReport.Builder}
|
* @return a {@link ClassificationCategoryReport.Builder}
|
||||||
*/
|
*/
|
||||||
ClassificationCategoryReport.Builder createCategoryReportBuilder();
|
ClassificationCategoryReport.Builder createClassificationCategoryReportBuilder();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Provides a {@link ClassificationReport.Builder} for creating a {@link ClassificationReport} or
|
* Provides a {@link ClassificationReport.Builder} for creating a {@link ClassificationReport} or
|
||||||
|
|
|
@ -19,7 +19,7 @@ import pro.taskana.monitor.api.reports.row.Row;
|
||||||
public class ClassificationReport extends Report<MonitorQueryItem, TimeIntervalColumnHeader> {
|
public class ClassificationReport extends Report<MonitorQueryItem, TimeIntervalColumnHeader> {
|
||||||
|
|
||||||
public ClassificationReport(List<TimeIntervalColumnHeader> timeIntervalColumnHeaders) {
|
public ClassificationReport(List<TimeIntervalColumnHeader> timeIntervalColumnHeaders) {
|
||||||
super(timeIntervalColumnHeaders, new String[] {"CLASSIFICATION KEYS"});
|
super(timeIntervalColumnHeaders, new String[] {"CLASSIFICATION"});
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Builder for {@link ClassificationReport}. */
|
/** Builder for {@link ClassificationReport}. */
|
||||||
|
@ -62,7 +62,7 @@ public class ClassificationReport extends Report<MonitorQueryItem, TimeIntervalC
|
||||||
List<TimeIntervalColumnHeader> workbasketLevelReportColumnHeaders) {
|
List<TimeIntervalColumnHeader> workbasketLevelReportColumnHeaders) {
|
||||||
super(
|
super(
|
||||||
workbasketLevelReportColumnHeaders,
|
workbasketLevelReportColumnHeaders,
|
||||||
new String[] {"TASK CLASSIFICATION KEYS", "ATTACHMENT"});
|
new String[] {"TASK CLASSIFICATION", "ATTACHMENT"});
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -99,6 +99,11 @@ public abstract class Report<I extends QueryItem, H extends ColumnHeader<? super
|
||||||
items.forEach(this::addItem);
|
items.forEach(this::addItem);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public final void augmentDisplayNames(Map<String, String> displayMap) {
|
||||||
|
reportRows.values().forEach(row -> row.setDisplayName(displayMap));
|
||||||
|
sumRow.setDisplayName(displayMap);
|
||||||
|
}
|
||||||
|
|
||||||
protected Row<I> createRow(String key, int columnSize) {
|
protected Row<I> createRow(String key, int columnSize) {
|
||||||
return new SingleRow<>(key, columnSize);
|
return new SingleRow<>(key, columnSize);
|
||||||
}
|
}
|
||||||
|
|
|
@ -21,7 +21,7 @@ import pro.taskana.monitor.api.reports.item.MonitorQueryItem;
|
||||||
public class WorkbasketReport extends Report<MonitorQueryItem, TimeIntervalColumnHeader> {
|
public class WorkbasketReport extends Report<MonitorQueryItem, TimeIntervalColumnHeader> {
|
||||||
|
|
||||||
public WorkbasketReport(List<TimeIntervalColumnHeader> timeIntervalColumnHeaders) {
|
public WorkbasketReport(List<TimeIntervalColumnHeader> timeIntervalColumnHeaders) {
|
||||||
super(timeIntervalColumnHeaders, new String[] {"WORKBASKET KEYS"});
|
super(timeIntervalColumnHeaders, new String[] {"WORKBASKET"});
|
||||||
}
|
}
|
||||||
|
|
||||||
/** Builder for {@link WorkbasketReport}. */
|
/** Builder for {@link WorkbasketReport}. */
|
||||||
|
|
|
@ -13,7 +13,7 @@ public class DetailedClassificationRow extends FoldableRow<DetailedMonitorQueryI
|
||||||
super(
|
super(
|
||||||
key,
|
key,
|
||||||
columnSize,
|
columnSize,
|
||||||
(item) -> item.getAttachmentKey() != null ? item.getAttachmentKey() : "N/A");
|
item -> item.getAttachmentKey() != null ? item.getAttachmentKey() : "N/A");
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -52,10 +52,20 @@ public abstract class FoldableRow<I extends QueryItem> extends SingleRow<I> {
|
||||||
.updateTotalValue(item);
|
.updateTotalValue(item);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDisplayName(Map<String, String> displayMap) {
|
||||||
|
super.setDisplayName(displayMap);
|
||||||
|
foldableRows.values().forEach(row -> row.setDisplayName(displayMap));
|
||||||
|
}
|
||||||
|
|
||||||
public Row<I> getFoldableRow(String key) {
|
public Row<I> getFoldableRow(String key) {
|
||||||
return foldableRows.get(key);
|
return foldableRows.get(key);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public Map<String, Row<I>> getFoldableRows() {
|
||||||
|
return foldableRows;
|
||||||
|
}
|
||||||
|
|
||||||
protected abstract Row<I> buildRow(String key, int columnSize);
|
protected abstract Row<I> buildRow(String key, int columnSize);
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package pro.taskana.monitor.api.reports.row;
|
package pro.taskana.monitor.api.reports.row;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import pro.taskana.monitor.api.reports.Report;
|
import pro.taskana.monitor.api.reports.Report;
|
||||||
import pro.taskana.monitor.api.reports.header.ColumnHeader;
|
import pro.taskana.monitor.api.reports.header.ColumnHeader;
|
||||||
import pro.taskana.monitor.api.reports.item.QueryItem;
|
import pro.taskana.monitor.api.reports.item.QueryItem;
|
||||||
|
@ -30,6 +32,10 @@ public interface Row<I extends QueryItem> {
|
||||||
|
|
||||||
String getKey();
|
String getKey();
|
||||||
|
|
||||||
|
String getDisplayName();
|
||||||
|
|
||||||
|
void setDisplayName(Map<String, String> displayMap);
|
||||||
|
|
||||||
int getTotalValue();
|
int getTotalValue();
|
||||||
|
|
||||||
int[] getCells();
|
int[] getCells();
|
||||||
|
|
|
@ -1,5 +1,7 @@
|
||||||
package pro.taskana.monitor.api.reports.row;
|
package pro.taskana.monitor.api.reports.row;
|
||||||
|
|
||||||
|
import java.util.Map;
|
||||||
|
|
||||||
import pro.taskana.monitor.api.reports.Report;
|
import pro.taskana.monitor.api.reports.Report;
|
||||||
import pro.taskana.monitor.api.reports.header.ColumnHeader;
|
import pro.taskana.monitor.api.reports.header.ColumnHeader;
|
||||||
import pro.taskana.monitor.api.reports.item.QueryItem;
|
import pro.taskana.monitor.api.reports.item.QueryItem;
|
||||||
|
@ -13,11 +15,13 @@ import pro.taskana.monitor.api.reports.item.QueryItem;
|
||||||
public class SingleRow<I extends QueryItem> implements Row<I> {
|
public class SingleRow<I extends QueryItem> implements Row<I> {
|
||||||
|
|
||||||
private final int[] cells;
|
private final int[] cells;
|
||||||
private int total = 0;
|
|
||||||
private final String key;
|
private final String key;
|
||||||
|
private int total = 0;
|
||||||
|
private String displayName;
|
||||||
|
|
||||||
public SingleRow(String key, int columnCount) {
|
public SingleRow(String key, int columnCount) {
|
||||||
this.key = key;
|
this.key = key;
|
||||||
|
this.displayName = key;
|
||||||
cells = new int[columnCount];
|
cells = new int[columnCount];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -37,6 +41,16 @@ public class SingleRow<I extends QueryItem> implements Row<I> {
|
||||||
return key;
|
return key;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public String getDisplayName() {
|
||||||
|
return displayName;
|
||||||
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public void setDisplayName(Map<String, String> displayMap) {
|
||||||
|
displayName = displayMap.getOrDefault(key, key);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public final int getTotalValue() {
|
public final int getTotalValue() {
|
||||||
return total;
|
return total;
|
||||||
|
|
|
@ -19,8 +19,8 @@ import pro.taskana.task.api.CustomField;
|
||||||
/** This is the implementation of MonitorService. */
|
/** This is the implementation of MonitorService. */
|
||||||
public class MonitorServiceImpl implements MonitorService {
|
public class MonitorServiceImpl implements MonitorService {
|
||||||
|
|
||||||
private InternalTaskanaEngine taskanaEngine;
|
private final InternalTaskanaEngine taskanaEngine;
|
||||||
private MonitorMapper monitorMapper;
|
private final MonitorMapper monitorMapper;
|
||||||
|
|
||||||
public MonitorServiceImpl(InternalTaskanaEngine taskanaEngine, MonitorMapper monitorMapper) {
|
public MonitorServiceImpl(InternalTaskanaEngine taskanaEngine, MonitorMapper monitorMapper) {
|
||||||
super();
|
super();
|
||||||
|
@ -34,7 +34,7 @@ public class MonitorServiceImpl implements MonitorService {
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public ClassificationCategoryReport.Builder createCategoryReportBuilder() {
|
public ClassificationCategoryReport.Builder createClassificationCategoryReportBuilder() {
|
||||||
return new ClassificationCategoryReportBuilderImpl(taskanaEngine, monitorMapper);
|
return new ClassificationCategoryReportBuilderImpl(taskanaEngine, monitorMapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -1,9 +1,14 @@
|
||||||
package pro.taskana.monitor.internal.reports;
|
package pro.taskana.monitor.internal.reports;
|
||||||
|
|
||||||
import java.util.List;
|
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.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
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.TaskanaRole;
|
||||||
import pro.taskana.common.api.exceptions.InvalidArgumentException;
|
import pro.taskana.common.api.exceptions.InvalidArgumentException;
|
||||||
import pro.taskana.common.api.exceptions.NotAuthorizedException;
|
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.header.TimeIntervalColumnHeader;
|
||||||
import pro.taskana.monitor.api.reports.item.DetailedMonitorQueryItem;
|
import pro.taskana.monitor.api.reports.item.DetailedMonitorQueryItem;
|
||||||
import pro.taskana.monitor.api.reports.item.MonitorQueryItem;
|
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.MonitorMapper;
|
||||||
import pro.taskana.monitor.internal.preprocessor.DaysToWorkingDaysReportPreProcessor;
|
import pro.taskana.monitor.internal.preprocessor.DaysToWorkingDaysReportPreProcessor;
|
||||||
|
|
||||||
|
@ -25,10 +31,12 @@ public class ClassificationReportBuilderImpl
|
||||||
|
|
||||||
private static final Logger LOGGER =
|
private static final Logger LOGGER =
|
||||||
LoggerFactory.getLogger(ClassificationReportBuilderImpl.class);
|
LoggerFactory.getLogger(ClassificationReportBuilderImpl.class);
|
||||||
|
private final ClassificationService classificationService;
|
||||||
|
|
||||||
public ClassificationReportBuilderImpl(
|
public ClassificationReportBuilderImpl(
|
||||||
InternalTaskanaEngine taskanaEngine, MonitorMapper monitorMapper) {
|
InternalTaskanaEngine taskanaEngine, MonitorMapper monitorMapper) {
|
||||||
super(taskanaEngine, monitorMapper);
|
super(taskanaEngine, monitorMapper);
|
||||||
|
classificationService = taskanaEngine.getEngine().getClassificationService();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -59,6 +67,17 @@ public class ClassificationReportBuilderImpl
|
||||||
monitorQueryItems,
|
monitorQueryItems,
|
||||||
new DaysToWorkingDaysReportPreProcessor<>(
|
new DaysToWorkingDaysReportPreProcessor<>(
|
||||||
this.columnHeaders, converter, this.inWorkingDays));
|
this.columnHeaders, converter, this.inWorkingDays));
|
||||||
|
Map<String, String> 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;
|
return report;
|
||||||
} finally {
|
} finally {
|
||||||
this.taskanaEngine.returnConnection();
|
this.taskanaEngine.returnConnection();
|
||||||
|
@ -95,7 +114,24 @@ public class ClassificationReportBuilderImpl
|
||||||
detailedMonitorQueryItems,
|
detailedMonitorQueryItems,
|
||||||
new DaysToWorkingDaysReportPreProcessor<>(
|
new DaysToWorkingDaysReportPreProcessor<>(
|
||||||
this.columnHeaders, converter, this.inWorkingDays));
|
this.columnHeaders, converter, this.inWorkingDays));
|
||||||
|
Stream<String> attachmentKeys =
|
||||||
|
report.getRows().keySet().stream()
|
||||||
|
.map(report::getRow)
|
||||||
|
.flatMap(row -> row.getFoldableRows().values().stream())
|
||||||
|
.map(Row::getKey);
|
||||||
|
Map<String, String> 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;
|
return report;
|
||||||
} finally {
|
} finally {
|
||||||
this.taskanaEngine.returnConnection();
|
this.taskanaEngine.returnConnection();
|
||||||
|
|
|
@ -16,8 +16,8 @@ import pro.taskana.task.api.TaskState;
|
||||||
public class TaskStatusReportBuilderImpl implements TaskStatusReport.Builder {
|
public class TaskStatusReportBuilderImpl implements TaskStatusReport.Builder {
|
||||||
|
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(TaskStatusReportBuilderImpl.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(TaskStatusReportBuilderImpl.class);
|
||||||
private InternalTaskanaEngine taskanaEngine;
|
private final InternalTaskanaEngine taskanaEngine;
|
||||||
private MonitorMapper monitorMapper;
|
private final MonitorMapper monitorMapper;
|
||||||
private List<String> domains;
|
private List<String> domains;
|
||||||
private List<TaskState> states;
|
private List<TaskState> states;
|
||||||
|
|
||||||
|
|
|
@ -1,6 +1,8 @@
|
||||||
package pro.taskana.monitor.internal.reports;
|
package pro.taskana.monitor.internal.reports;
|
||||||
|
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
import java.util.Map;
|
||||||
|
import java.util.stream.Collectors;
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
import org.slf4j.LoggerFactory;
|
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.api.reports.item.MonitorQueryItem;
|
||||||
import pro.taskana.monitor.internal.MonitorMapper;
|
import pro.taskana.monitor.internal.MonitorMapper;
|
||||||
import pro.taskana.monitor.internal.preprocessor.DaysToWorkingDaysReportPreProcessor;
|
import pro.taskana.monitor.internal.preprocessor.DaysToWorkingDaysReportPreProcessor;
|
||||||
|
import pro.taskana.workbasket.api.WorkbasketService;
|
||||||
|
import pro.taskana.workbasket.api.models.WorkbasketSummary;
|
||||||
|
|
||||||
/** The implementation of WorkbasketReportBuilder. */
|
/** The implementation of WorkbasketReportBuilder. */
|
||||||
public class WorkbasketReportBuilderImpl
|
public class WorkbasketReportBuilderImpl
|
||||||
|
@ -23,11 +27,13 @@ public class WorkbasketReportBuilderImpl
|
||||||
implements WorkbasketReport.Builder {
|
implements WorkbasketReport.Builder {
|
||||||
|
|
||||||
private static final Logger LOGGER = LoggerFactory.getLogger(WorkbasketReportBuilderImpl.class);
|
private static final Logger LOGGER = LoggerFactory.getLogger(WorkbasketReportBuilderImpl.class);
|
||||||
|
private final WorkbasketService workbasketService;
|
||||||
private List<CombinedClassificationFilter> combinedClassificationFilter;
|
private List<CombinedClassificationFilter> combinedClassificationFilter;
|
||||||
|
|
||||||
public WorkbasketReportBuilderImpl(
|
public WorkbasketReportBuilderImpl(
|
||||||
InternalTaskanaEngine taskanaEngine, MonitorMapper monitorMapper) {
|
InternalTaskanaEngine taskanaEngine, MonitorMapper monitorMapper) {
|
||||||
super(taskanaEngine, monitorMapper);
|
super(taskanaEngine, monitorMapper);
|
||||||
|
workbasketService = taskanaEngine.getEngine().getWorkbasketService();
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
|
@ -58,6 +64,20 @@ public class WorkbasketReportBuilderImpl
|
||||||
monitorQueryItems,
|
monitorQueryItems,
|
||||||
new DaysToWorkingDaysReportPreProcessor<>(
|
new DaysToWorkingDaysReportPreProcessor<>(
|
||||||
this.columnHeaders, converter, this.inWorkingDays));
|
this.columnHeaders, converter, this.inWorkingDays));
|
||||||
|
|
||||||
|
Map<String, String> displayMap =
|
||||||
|
taskanaEngine.runAsAdmin(
|
||||||
|
() ->
|
||||||
|
workbasketService
|
||||||
|
.createWorkbasketQuery()
|
||||||
|
.keyIn(report.getRows().keySet().toArray(new String[0]))
|
||||||
|
.domainIn(domains != null ? domains.toArray(new String[0]) : null)
|
||||||
|
.list()
|
||||||
|
.stream()
|
||||||
|
.collect(
|
||||||
|
Collectors.toMap(
|
||||||
|
WorkbasketSummary::getKey, WorkbasketSummary::getName, (a, b) -> a)));
|
||||||
|
report.augmentDisplayNames(displayMap);
|
||||||
return report;
|
return report;
|
||||||
} finally {
|
} finally {
|
||||||
this.taskanaEngine.returnConnection();
|
this.taskanaEngine.returnConnection();
|
||||||
|
|
|
@ -72,7 +72,7 @@ class GetCustomAttributeValuesForReportAccTest extends AbstractReportAccTest {
|
||||||
|
|
||||||
List<String> values =
|
List<String> values =
|
||||||
monitorService
|
monitorService
|
||||||
.createCategoryReportBuilder()
|
.createClassificationCategoryReportBuilder()
|
||||||
.customAttributeFilterIn(customAttributeFilter)
|
.customAttributeFilterIn(customAttributeFilter)
|
||||||
.listCustomAttributeValuesForCustomAttributeName(CustomField.CUSTOM_16);
|
.listCustomAttributeValuesForCustomAttributeName(CustomField.CUSTOM_16);
|
||||||
|
|
||||||
|
@ -88,7 +88,7 @@ class GetCustomAttributeValuesForReportAccTest extends AbstractReportAccTest {
|
||||||
|
|
||||||
List<String> values =
|
List<String> values =
|
||||||
monitorService
|
monitorService
|
||||||
.createCategoryReportBuilder()
|
.createClassificationCategoryReportBuilder()
|
||||||
.domainIn(domains)
|
.domainIn(domains)
|
||||||
.excludedClassificationIdIn(
|
.excludedClassificationIdIn(
|
||||||
Collections.singletonList("CLI:000000000000000000000000000000000003"))
|
Collections.singletonList("CLI:000000000000000000000000000000000003"))
|
||||||
|
|
|
@ -34,7 +34,9 @@ class GetTaskIdsOfClassificationCategoryReportAccTest extends AbstractReportAccT
|
||||||
List<SelectedItem> selectedItems = new ArrayList<>();
|
List<SelectedItem> selectedItems = new ArrayList<>();
|
||||||
ThrowingCallable call =
|
ThrowingCallable call =
|
||||||
() -> {
|
() -> {
|
||||||
monitorService.createCategoryReportBuilder().listTaskIdsForSelectedItems(selectedItems);
|
monitorService
|
||||||
|
.createClassificationCategoryReportBuilder()
|
||||||
|
.listTaskIdsForSelectedItems(selectedItems);
|
||||||
};
|
};
|
||||||
assertThatThrownBy(call).isInstanceOf(NotAuthorizedException.class);
|
assertThatThrownBy(call).isInstanceOf(NotAuthorizedException.class);
|
||||||
}
|
}
|
||||||
|
@ -68,7 +70,7 @@ class GetTaskIdsOfClassificationCategoryReportAccTest extends AbstractReportAccT
|
||||||
|
|
||||||
List<String> ids =
|
List<String> ids =
|
||||||
monitorService
|
monitorService
|
||||||
.createCategoryReportBuilder()
|
.createClassificationCategoryReportBuilder()
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.inWorkingDays()
|
.inWorkingDays()
|
||||||
.listTaskIdsForSelectedItems(selectedItems);
|
.listTaskIdsForSelectedItems(selectedItems);
|
||||||
|
@ -119,7 +121,7 @@ class GetTaskIdsOfClassificationCategoryReportAccTest extends AbstractReportAccT
|
||||||
|
|
||||||
List<String> ids =
|
List<String> ids =
|
||||||
monitorService
|
monitorService
|
||||||
.createCategoryReportBuilder()
|
.createClassificationCategoryReportBuilder()
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.inWorkingDays()
|
.inWorkingDays()
|
||||||
.workbasketIdIn(workbasketIds)
|
.workbasketIdIn(workbasketIds)
|
||||||
|
@ -163,7 +165,7 @@ class GetTaskIdsOfClassificationCategoryReportAccTest extends AbstractReportAccT
|
||||||
|
|
||||||
List<String> ids =
|
List<String> ids =
|
||||||
monitorService
|
monitorService
|
||||||
.createCategoryReportBuilder()
|
.createClassificationCategoryReportBuilder()
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.inWorkingDays()
|
.inWorkingDays()
|
||||||
.stateIn(states)
|
.stateIn(states)
|
||||||
|
@ -208,7 +210,7 @@ class GetTaskIdsOfClassificationCategoryReportAccTest extends AbstractReportAccT
|
||||||
|
|
||||||
List<String> ids =
|
List<String> ids =
|
||||||
monitorService
|
monitorService
|
||||||
.createCategoryReportBuilder()
|
.createClassificationCategoryReportBuilder()
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.inWorkingDays()
|
.inWorkingDays()
|
||||||
.classificationCategoryIn(categories)
|
.classificationCategoryIn(categories)
|
||||||
|
@ -251,7 +253,7 @@ class GetTaskIdsOfClassificationCategoryReportAccTest extends AbstractReportAccT
|
||||||
|
|
||||||
List<String> ids =
|
List<String> ids =
|
||||||
monitorService
|
monitorService
|
||||||
.createCategoryReportBuilder()
|
.createClassificationCategoryReportBuilder()
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.inWorkingDays()
|
.inWorkingDays()
|
||||||
.domainIn(domains)
|
.domainIn(domains)
|
||||||
|
@ -296,7 +298,7 @@ class GetTaskIdsOfClassificationCategoryReportAccTest extends AbstractReportAccT
|
||||||
|
|
||||||
List<String> ids =
|
List<String> ids =
|
||||||
monitorService
|
monitorService
|
||||||
.createCategoryReportBuilder()
|
.createClassificationCategoryReportBuilder()
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.inWorkingDays()
|
.inWorkingDays()
|
||||||
.customAttributeFilterIn(customAttributeFilter)
|
.customAttributeFilterIn(customAttributeFilter)
|
||||||
|
@ -330,7 +332,7 @@ class GetTaskIdsOfClassificationCategoryReportAccTest extends AbstractReportAccT
|
||||||
ThrowingCallable call =
|
ThrowingCallable call =
|
||||||
() -> {
|
() -> {
|
||||||
monitorService
|
monitorService
|
||||||
.createCategoryReportBuilder()
|
.createClassificationCategoryReportBuilder()
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.listTaskIdsForSelectedItems(selectedItems);
|
.listTaskIdsForSelectedItems(selectedItems);
|
||||||
};
|
};
|
||||||
|
|
|
@ -324,7 +324,7 @@ class GetTaskIdsOfCustomFieldValueReportAccTest extends AbstractReportAccTest {
|
||||||
ThrowingCallable call =
|
ThrowingCallable call =
|
||||||
() -> {
|
() -> {
|
||||||
monitorService
|
monitorService
|
||||||
.createCategoryReportBuilder()
|
.createClassificationCategoryReportBuilder()
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.listTaskIdsForSelectedItems(selectedItems);
|
.listTaskIdsForSelectedItems(selectedItems);
|
||||||
};
|
};
|
||||||
|
|
|
@ -37,15 +37,28 @@ class ProvideClassificationCategoryReportAccTest extends AbstractReportAccTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void testRoleCheck() {
|
void testRoleCheck() {
|
||||||
assertThatThrownBy(() -> MONITOR_SERVICE.createCategoryReportBuilder().buildReport())
|
ThrowingCallable call =
|
||||||
.isInstanceOf(NotAuthorizedException.class);
|
() -> 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")
|
@WithAccessId(user = "monitor")
|
||||||
@Test
|
@Test
|
||||||
void testGetTotalNumbersOfTasksOfCategoryReport() throws Exception {
|
void testGetTotalNumbersOfTasksOfCategoryReport() throws Exception {
|
||||||
ClassificationCategoryReport report =
|
ClassificationCategoryReport report =
|
||||||
MONITOR_SERVICE.createCategoryReportBuilder().buildReport();
|
MONITOR_SERVICE.createClassificationCategoryReportBuilder().buildReport();
|
||||||
|
|
||||||
assertThat(report).isNotNull();
|
assertThat(report).isNotNull();
|
||||||
assertThat(report.rowSize()).isEqualTo(3);
|
assertThat(report.rowSize()).isEqualTo(3);
|
||||||
|
@ -66,7 +79,7 @@ class ProvideClassificationCategoryReportAccTest extends AbstractReportAccTest {
|
||||||
|
|
||||||
ClassificationCategoryReport report =
|
ClassificationCategoryReport report =
|
||||||
MONITOR_SERVICE
|
MONITOR_SERVICE
|
||||||
.createCategoryReportBuilder()
|
.createClassificationCategoryReportBuilder()
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.inWorkingDays()
|
.inWorkingDays()
|
||||||
.buildReport();
|
.buildReport();
|
||||||
|
@ -90,7 +103,7 @@ class ProvideClassificationCategoryReportAccTest extends AbstractReportAccTest {
|
||||||
|
|
||||||
ClassificationCategoryReport report =
|
ClassificationCategoryReport report =
|
||||||
MONITOR_SERVICE
|
MONITOR_SERVICE
|
||||||
.createCategoryReportBuilder()
|
.createClassificationCategoryReportBuilder()
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.inWorkingDays()
|
.inWorkingDays()
|
||||||
.buildReport();
|
.buildReport();
|
||||||
|
@ -115,7 +128,10 @@ class ProvideClassificationCategoryReportAccTest extends AbstractReportAccTest {
|
||||||
ThrowingConsumer<TaskTimestamp> test =
|
ThrowingConsumer<TaskTimestamp> test =
|
||||||
timestamp -> {
|
timestamp -> {
|
||||||
ThrowingCallable callable =
|
ThrowingCallable callable =
|
||||||
() -> MONITOR_SERVICE.createCategoryReportBuilder().buildReport(timestamp);
|
() ->
|
||||||
|
MONITOR_SERVICE
|
||||||
|
.createClassificationCategoryReportBuilder()
|
||||||
|
.buildReport(timestamp);
|
||||||
assertThatCode(callable).doesNotThrowAnyException();
|
assertThatCode(callable).doesNotThrowAnyException();
|
||||||
};
|
};
|
||||||
return DynamicTest.stream(iterator, t -> "for TaskState " + t, test);
|
return DynamicTest.stream(iterator, t -> "for TaskState " + t, test);
|
||||||
|
@ -128,7 +144,7 @@ class ProvideClassificationCategoryReportAccTest extends AbstractReportAccTest {
|
||||||
|
|
||||||
ClassificationCategoryReport report =
|
ClassificationCategoryReport report =
|
||||||
MONITOR_SERVICE
|
MONITOR_SERVICE
|
||||||
.createCategoryReportBuilder()
|
.createClassificationCategoryReportBuilder()
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.inWorkingDays()
|
.inWorkingDays()
|
||||||
.buildReport(TaskTimestamp.PLANNED);
|
.buildReport(TaskTimestamp.PLANNED);
|
||||||
|
@ -153,7 +169,7 @@ class ProvideClassificationCategoryReportAccTest extends AbstractReportAccTest {
|
||||||
|
|
||||||
ClassificationCategoryReport report =
|
ClassificationCategoryReport report =
|
||||||
MONITOR_SERVICE
|
MONITOR_SERVICE
|
||||||
.createCategoryReportBuilder()
|
.createClassificationCategoryReportBuilder()
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.buildReport();
|
.buildReport();
|
||||||
|
|
||||||
|
@ -179,7 +195,7 @@ class ProvideClassificationCategoryReportAccTest extends AbstractReportAccTest {
|
||||||
|
|
||||||
ClassificationCategoryReport report =
|
ClassificationCategoryReport report =
|
||||||
MONITOR_SERVICE
|
MONITOR_SERVICE
|
||||||
.createCategoryReportBuilder()
|
.createClassificationCategoryReportBuilder()
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.inWorkingDays()
|
.inWorkingDays()
|
||||||
.workbasketIdIn(workbasketIds)
|
.workbasketIdIn(workbasketIds)
|
||||||
|
@ -206,7 +222,7 @@ class ProvideClassificationCategoryReportAccTest extends AbstractReportAccTest {
|
||||||
|
|
||||||
ClassificationCategoryReport report =
|
ClassificationCategoryReport report =
|
||||||
MONITOR_SERVICE
|
MONITOR_SERVICE
|
||||||
.createCategoryReportBuilder()
|
.createClassificationCategoryReportBuilder()
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.stateIn(states)
|
.stateIn(states)
|
||||||
.inWorkingDays()
|
.inWorkingDays()
|
||||||
|
@ -233,7 +249,7 @@ class ProvideClassificationCategoryReportAccTest extends AbstractReportAccTest {
|
||||||
|
|
||||||
ClassificationCategoryReport report =
|
ClassificationCategoryReport report =
|
||||||
MONITOR_SERVICE
|
MONITOR_SERVICE
|
||||||
.createCategoryReportBuilder()
|
.createClassificationCategoryReportBuilder()
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.classificationCategoryIn(categories)
|
.classificationCategoryIn(categories)
|
||||||
.inWorkingDays()
|
.inWorkingDays()
|
||||||
|
@ -257,7 +273,7 @@ class ProvideClassificationCategoryReportAccTest extends AbstractReportAccTest {
|
||||||
|
|
||||||
ClassificationCategoryReport report =
|
ClassificationCategoryReport report =
|
||||||
MONITOR_SERVICE
|
MONITOR_SERVICE
|
||||||
.createCategoryReportBuilder()
|
.createClassificationCategoryReportBuilder()
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.domainIn(domains)
|
.domainIn(domains)
|
||||||
.inWorkingDays()
|
.inWorkingDays()
|
||||||
|
@ -285,7 +301,7 @@ class ProvideClassificationCategoryReportAccTest extends AbstractReportAccTest {
|
||||||
|
|
||||||
ClassificationCategoryReport report =
|
ClassificationCategoryReport report =
|
||||||
MONITOR_SERVICE
|
MONITOR_SERVICE
|
||||||
.createCategoryReportBuilder()
|
.createClassificationCategoryReportBuilder()
|
||||||
.withColumnHeaders(columnHeaders)
|
.withColumnHeaders(columnHeaders)
|
||||||
.customAttributeFilterIn(customAttributeFilter)
|
.customAttributeFilterIn(customAttributeFilter)
|
||||||
.inWorkingDays()
|
.inWorkingDays()
|
||||||
|
|
|
@ -41,6 +41,19 @@ class ProvideClassificationReportAccTest extends AbstractReportAccTest {
|
||||||
.isInstanceOf(NotAuthorizedException.class);
|
.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")
|
@WithAccessId(user = "monitor")
|
||||||
@Test
|
@Test
|
||||||
void testGetTotalNumbersOfTasksOfClassificationReport() throws Exception {
|
void testGetTotalNumbersOfTasksOfClassificationReport() throws Exception {
|
||||||
|
|
|
@ -44,6 +44,21 @@ class ProvideCustomFieldValueReportAccTest extends AbstractReportAccTest {
|
||||||
assertThatThrownBy(call).isInstanceOf(NotAuthorizedException.class);
|
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")
|
@WithAccessId(user = "monitor")
|
||||||
@Test
|
@Test
|
||||||
void testGetTotalNumbersOfTasksOfCustomFieldValueReportForCustom1() throws Exception {
|
void testGetTotalNumbersOfTasksOfCustomFieldValueReportForCustom1() throws Exception {
|
||||||
|
|
|
@ -27,6 +27,7 @@ import pro.taskana.monitor.api.TaskTimestamp;
|
||||||
import pro.taskana.monitor.api.reports.ClassificationReport.DetailedClassificationReport;
|
import pro.taskana.monitor.api.reports.ClassificationReport.DetailedClassificationReport;
|
||||||
import pro.taskana.monitor.api.reports.header.TimeIntervalColumnHeader;
|
import pro.taskana.monitor.api.reports.header.TimeIntervalColumnHeader;
|
||||||
import pro.taskana.monitor.api.reports.item.DetailedMonitorQueryItem;
|
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.FoldableRow;
|
||||||
import pro.taskana.monitor.api.reports.row.Row;
|
import pro.taskana.monitor.api.reports.row.Row;
|
||||||
import pro.taskana.task.api.CustomField;
|
import pro.taskana.task.api.CustomField;
|
||||||
|
@ -45,6 +46,44 @@ class ProvideDetailedClassificationReportAccTest extends AbstractReportAccTest {
|
||||||
assertThatThrownBy(call).isInstanceOf(NotAuthorizedException.class);
|
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")
|
@WithAccessId(user = "monitor")
|
||||||
@Test
|
@Test
|
||||||
void testGetTotalNumbersOfTasksOfDetailedClassificationReport() throws Exception {
|
void testGetTotalNumbersOfTasksOfDetailedClassificationReport() throws Exception {
|
||||||
|
|
|
@ -26,7 +26,7 @@ import pro.taskana.task.api.TaskState;
|
||||||
@ExtendWith(JaasExtension.class)
|
@ExtendWith(JaasExtension.class)
|
||||||
class ProvideTaskStatusReportAccTest extends AbstractReportAccTest {
|
class ProvideTaskStatusReportAccTest extends AbstractReportAccTest {
|
||||||
|
|
||||||
MonitorService monitorService = taskanaEngine.getMonitorService();
|
private static final MonitorService MONITOR_SERVICE = taskanaEngine.getMonitorService();
|
||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
void reset() throws Exception {
|
void reset() throws Exception {
|
||||||
|
@ -35,7 +35,7 @@ class ProvideTaskStatusReportAccTest extends AbstractReportAccTest {
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
void should_ThrowException_IfUserIsNotAuthorized() {
|
void should_ThrowException_IfUserIsNotAuthorized() {
|
||||||
assertThatThrownBy(() -> monitorService.createTaskStatusReportBuilder().buildReport())
|
assertThatThrownBy(() -> MONITOR_SERVICE.createTaskStatusReportBuilder().buildReport())
|
||||||
.isInstanceOf(NotAuthorizedException.class);
|
.isInstanceOf(NotAuthorizedException.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ class ProvideTaskStatusReportAccTest extends AbstractReportAccTest {
|
||||||
@WithAccessId(user = "taskadmin")
|
@WithAccessId(user = "taskadmin")
|
||||||
@TestTemplate
|
@TestTemplate
|
||||||
void should_ThrowException_IfUserIsNotAdminOrMonitor() {
|
void should_ThrowException_IfUserIsNotAdminOrMonitor() {
|
||||||
assertThatThrownBy(() -> monitorService.createTaskStatusReportBuilder().buildReport())
|
assertThatThrownBy(() -> MONITOR_SERVICE.createTaskStatusReportBuilder().buildReport())
|
||||||
.isInstanceOf(NotAuthorizedException.class);
|
.isInstanceOf(NotAuthorizedException.class);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -53,14 +53,25 @@ class ProvideTaskStatusReportAccTest extends AbstractReportAccTest {
|
||||||
@WithAccessId(user = "monitor")
|
@WithAccessId(user = "monitor")
|
||||||
@TestTemplate
|
@TestTemplate
|
||||||
void should_BuildReport_IfUserIsAdminOrMonitor() {
|
void should_BuildReport_IfUserIsAdminOrMonitor() {
|
||||||
assertThatCode(() -> monitorService.createTaskStatusReportBuilder().buildReport())
|
assertThatCode(() -> MONITOR_SERVICE.createTaskStatusReportBuilder().buildReport())
|
||||||
.doesNotThrowAnyException();
|
.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")
|
@WithAccessId(user = "monitor")
|
||||||
@Test
|
@Test
|
||||||
void testCompleteTaskStatusReport() throws Exception {
|
void testCompleteTaskStatusReport() throws Exception {
|
||||||
TaskStatusReport report = monitorService.createTaskStatusReportBuilder().buildReport();
|
TaskStatusReport report = MONITOR_SERVICE.createTaskStatusReportBuilder().buildReport();
|
||||||
|
|
||||||
assertThat(report).isNotNull();
|
assertThat(report).isNotNull();
|
||||||
assertThat(report.rowSize()).isEqualTo(3);
|
assertThat(report.rowSize()).isEqualTo(3);
|
||||||
|
@ -86,7 +97,7 @@ class ProvideTaskStatusReportAccTest extends AbstractReportAccTest {
|
||||||
@Test
|
@Test
|
||||||
void testCompleteTaskStatusReportWithDomainFilter() throws Exception {
|
void testCompleteTaskStatusReportWithDomainFilter() throws Exception {
|
||||||
TaskStatusReport report =
|
TaskStatusReport report =
|
||||||
monitorService
|
MONITOR_SERVICE
|
||||||
.createTaskStatusReportBuilder()
|
.createTaskStatusReportBuilder()
|
||||||
.domainIn(asList("DOMAIN_C", "DOMAIN_A"))
|
.domainIn(asList("DOMAIN_C", "DOMAIN_A"))
|
||||||
.buildReport();
|
.buildReport();
|
||||||
|
@ -111,7 +122,7 @@ class ProvideTaskStatusReportAccTest extends AbstractReportAccTest {
|
||||||
@Test
|
@Test
|
||||||
void testCompleteTaskStatusReportWithStateFilter() throws Exception {
|
void testCompleteTaskStatusReportWithStateFilter() throws Exception {
|
||||||
TaskStatusReport report =
|
TaskStatusReport report =
|
||||||
monitorService
|
MONITOR_SERVICE
|
||||||
.createTaskStatusReportBuilder()
|
.createTaskStatusReportBuilder()
|
||||||
.stateIn(Collections.singletonList(TaskState.READY))
|
.stateIn(Collections.singletonList(TaskState.READY))
|
||||||
.buildReport();
|
.buildReport();
|
||||||
|
@ -146,7 +157,7 @@ class ProvideTaskStatusReportAccTest extends AbstractReportAccTest {
|
||||||
taskService.cancelTask("TKI:000000000000000000000000000000000013");
|
taskService.cancelTask("TKI:000000000000000000000000000000000013");
|
||||||
taskService.cancelTask("TKI:000000000000000000000000000000000014");
|
taskService.cancelTask("TKI:000000000000000000000000000000000014");
|
||||||
TaskStatusReport report =
|
TaskStatusReport report =
|
||||||
monitorService
|
MONITOR_SERVICE
|
||||||
.createTaskStatusReportBuilder()
|
.createTaskStatusReportBuilder()
|
||||||
.stateIn(
|
.stateIn(
|
||||||
Arrays.asList(
|
Arrays.asList(
|
||||||
|
|
|
@ -24,6 +24,17 @@ import pro.taskana.monitor.api.reports.row.TimestampRow;
|
||||||
@ExtendWith(JaasExtension.class)
|
@ExtendWith(JaasExtension.class)
|
||||||
class ProvideTimestampReportAccTest extends AbstractReportAccTest {
|
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
|
* 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
|
* 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")
|
@WithAccessId(user = "monitor")
|
||||||
@Test
|
@Test
|
||||||
void testProperInsertionOfQueryItems() throws Exception {
|
void testProperInsertionOfQueryItems() throws Exception {
|
||||||
MonitorService monitorService = taskanaEngine.getMonitorService();
|
|
||||||
|
|
||||||
// last 14 days. Today excluded.
|
// last 14 days. Today excluded.
|
||||||
List<TimeIntervalColumnHeader> headers =
|
List<TimeIntervalColumnHeader> headers =
|
||||||
|
@ -43,7 +53,7 @@ class ProvideTimestampReportAccTest extends AbstractReportAccTest {
|
||||||
.mapToObj(TimeIntervalColumnHeader.Date::new)
|
.mapToObj(TimeIntervalColumnHeader.Date::new)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
TimestampReport timestampReport =
|
TimestampReport timestampReport =
|
||||||
monitorService.createTimestampReportBuilder().withColumnHeaders(headers).buildReport();
|
MONITOR_SERVICE.createTimestampReportBuilder().withColumnHeaders(headers).buildReport();
|
||||||
final HashSet<String> org1Set = new HashSet<>(Arrays.asList("N/A", "org1"));
|
final HashSet<String> org1Set = new HashSet<>(Arrays.asList("N/A", "org1"));
|
||||||
final HashSet<String> allOtherOrgLevelSet = new HashSet<>(Collections.singletonList("N/A"));
|
final HashSet<String> allOtherOrgLevelSet = new HashSet<>(Collections.singletonList("N/A"));
|
||||||
|
|
||||||
|
|
|
@ -11,7 +11,6 @@ import java.util.HashMap;
|
||||||
import java.util.Iterator;
|
import java.util.Iterator;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.stream.IntStream;
|
|
||||||
import java.util.stream.Stream;
|
import java.util.stream.Stream;
|
||||||
import org.assertj.core.api.ThrowableAssert.ThrowingCallable;
|
import org.assertj.core.api.ThrowableAssert.ThrowingCallable;
|
||||||
import org.junit.jupiter.api.DynamicTest;
|
import org.junit.jupiter.api.DynamicTest;
|
||||||
|
@ -43,6 +42,16 @@ class ProvideWorkbasketReportAccTest extends AbstractReportAccTest {
|
||||||
.isInstanceOf(NotAuthorizedException.class);
|
.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")
|
@WithAccessId(user = "monitor")
|
||||||
@Test
|
@Test
|
||||||
void testGetTotalNumbersOfTasksOfWorkbasketReportBasedOnDueDate() throws Exception {
|
void testGetTotalNumbersOfTasksOfWorkbasketReportBasedOnDueDate() throws Exception {
|
||||||
|
@ -70,8 +79,6 @@ class ProvideWorkbasketReportAccTest extends AbstractReportAccTest {
|
||||||
.inWorkingDays()
|
.inWorkingDays()
|
||||||
.buildReport();
|
.buildReport();
|
||||||
|
|
||||||
final int sumLineCount = IntStream.of(report.getSumRow().getCells()).sum();
|
|
||||||
|
|
||||||
assertThat(report).isNotNull();
|
assertThat(report).isNotNull();
|
||||||
assertThat(report.rowSize()).isEqualTo(3);
|
assertThat(report.rowSize()).isEqualTo(3);
|
||||||
|
|
||||||
|
@ -81,9 +88,7 @@ class ProvideWorkbasketReportAccTest extends AbstractReportAccTest {
|
||||||
|
|
||||||
int[] sumRow = report.getSumRow().getCells();
|
int[] sumRow = report.getSumRow().getCells();
|
||||||
assertThat(sumRow).isEqualTo(new int[] {10, 9, 11, 0, 4, 0, 7, 4, 5});
|
assertThat(sumRow).isEqualTo(new int[] {10, 9, 11, 0, 4, 0, 7, 4, 5});
|
||||||
|
|
||||||
assertThat(report.getSumRow().getTotalValue()).isEqualTo(50);
|
assertThat(report.getSumRow().getTotalValue()).isEqualTo(50);
|
||||||
assertThat(sumLineCount).isEqualTo(50);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@WithAccessId(user = "monitor")
|
@WithAccessId(user = "monitor")
|
||||||
|
|
|
@ -80,7 +80,7 @@ class ClassificationClassificationCategoryReportBuilderImplTest {
|
||||||
.thenReturn(expectedResult);
|
.thenReturn(expectedResult);
|
||||||
|
|
||||||
final ClassificationCategoryReport actualResult =
|
final ClassificationCategoryReport actualResult =
|
||||||
cut.createCategoryReportBuilder()
|
cut.createClassificationCategoryReportBuilder()
|
||||||
.workbasketIdIn(workbasketIds)
|
.workbasketIdIn(workbasketIds)
|
||||||
.stateIn(states)
|
.stateIn(states)
|
||||||
.classificationCategoryIn(categories)
|
.classificationCategoryIn(categories)
|
||||||
|
@ -140,7 +140,7 @@ class ClassificationClassificationCategoryReportBuilderImplTest {
|
||||||
.thenReturn(expectedResult);
|
.thenReturn(expectedResult);
|
||||||
|
|
||||||
final ClassificationCategoryReport actualResult =
|
final ClassificationCategoryReport actualResult =
|
||||||
cut.createCategoryReportBuilder()
|
cut.createClassificationCategoryReportBuilder()
|
||||||
.workbasketIdIn(workbasketIds)
|
.workbasketIdIn(workbasketIds)
|
||||||
.stateIn(states)
|
.stateIn(states)
|
||||||
.classificationCategoryIn(categories)
|
.classificationCategoryIn(categories)
|
||||||
|
@ -206,7 +206,7 @@ class ClassificationClassificationCategoryReportBuilderImplTest {
|
||||||
.thenReturn(expectedResult);
|
.thenReturn(expectedResult);
|
||||||
|
|
||||||
final List<String> actualResult =
|
final List<String> actualResult =
|
||||||
cut.createCategoryReportBuilder()
|
cut.createClassificationCategoryReportBuilder()
|
||||||
.workbasketIdIn(workbasketIds)
|
.workbasketIdIn(workbasketIds)
|
||||||
.stateIn(states)
|
.stateIn(states)
|
||||||
.classificationCategoryIn(categories)
|
.classificationCategoryIn(categories)
|
||||||
|
@ -239,7 +239,7 @@ class ClassificationClassificationCategoryReportBuilderImplTest {
|
||||||
SelectedItem selectedItem = new SelectedItem();
|
SelectedItem selectedItem = new SelectedItem();
|
||||||
List<SelectedItem> selectedItems = Collections.singletonList(selectedItem);
|
List<SelectedItem> selectedItems = Collections.singletonList(selectedItem);
|
||||||
List<String> result =
|
List<String> result =
|
||||||
cut.createCategoryReportBuilder().listTaskIdsForSelectedItems(selectedItems);
|
cut.createClassificationCategoryReportBuilder().listTaskIdsForSelectedItems(selectedItems);
|
||||||
assertThat(result).isNotNull();
|
assertThat(result).isNotNull();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -275,7 +275,7 @@ class ClassificationClassificationCategoryReportBuilderImplTest {
|
||||||
.thenReturn(expectedResult);
|
.thenReturn(expectedResult);
|
||||||
|
|
||||||
final List<String> actualResult =
|
final List<String> actualResult =
|
||||||
cut.createCategoryReportBuilder()
|
cut.createClassificationCategoryReportBuilder()
|
||||||
.workbasketIdIn(workbasketIds)
|
.workbasketIdIn(workbasketIds)
|
||||||
.stateIn(states)
|
.stateIn(states)
|
||||||
.classificationCategoryIn(categories)
|
.classificationCategoryIn(categories)
|
||||||
|
@ -305,7 +305,7 @@ class ClassificationClassificationCategoryReportBuilderImplTest {
|
||||||
@Test
|
@Test
|
||||||
void testListCustomAttributeValuesForCustomAttributeNameIsEmptyResult() throws Exception {
|
void testListCustomAttributeValuesForCustomAttributeNameIsEmptyResult() throws Exception {
|
||||||
List<String> result =
|
List<String> result =
|
||||||
cut.createCategoryReportBuilder()
|
cut.createClassificationCategoryReportBuilder()
|
||||||
.workbasketIdIn(Collections.singletonList("DieGibtsSicherNed"))
|
.workbasketIdIn(Collections.singletonList("DieGibtsSicherNed"))
|
||||||
.listCustomAttributeValuesForCustomAttributeName(CustomField.CUSTOM_1);
|
.listCustomAttributeValuesForCustomAttributeName(CustomField.CUSTOM_1);
|
||||||
assertThat(result).isNotNull();
|
assertThat(result).isNotNull();
|
||||||
|
|
|
@ -3,6 +3,7 @@ package pro.taskana.monitor.internal;
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import static org.mockito.ArgumentMatchers.any;
|
import static org.mockito.ArgumentMatchers.any;
|
||||||
import static org.mockito.ArgumentMatchers.eq;
|
import static org.mockito.ArgumentMatchers.eq;
|
||||||
|
import static org.mockito.Mockito.mock;
|
||||||
import static org.mockito.Mockito.times;
|
import static org.mockito.Mockito.times;
|
||||||
import static org.mockito.Mockito.verify;
|
import static org.mockito.Mockito.verify;
|
||||||
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
import static org.mockito.Mockito.verifyNoMoreInteractions;
|
||||||
|
@ -22,6 +23,8 @@ import org.mockito.Mock;
|
||||||
import org.mockito.junit.jupiter.MockitoExtension;
|
import org.mockito.junit.jupiter.MockitoExtension;
|
||||||
|
|
||||||
import pro.taskana.TaskanaEngineConfiguration;
|
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.api.TaskanaEngine;
|
||||||
import pro.taskana.common.internal.InternalTaskanaEngine;
|
import pro.taskana.common.internal.InternalTaskanaEngine;
|
||||||
import pro.taskana.monitor.api.SelectedItem;
|
import pro.taskana.monitor.api.SelectedItem;
|
||||||
|
@ -40,18 +43,26 @@ import pro.taskana.task.api.TaskState;
|
||||||
class ClassificationReportBuilderImplTest {
|
class ClassificationReportBuilderImplTest {
|
||||||
|
|
||||||
@InjectMocks private MonitorServiceImpl cut;
|
@InjectMocks private MonitorServiceImpl cut;
|
||||||
|
|
||||||
@Mock private InternalTaskanaEngine internalTaskanaEngineMock;
|
@Mock private InternalTaskanaEngine internalTaskanaEngineMock;
|
||||||
|
|
||||||
@Mock private TaskanaEngine taskanaEngineMock;
|
@Mock private TaskanaEngine taskanaEngineMock;
|
||||||
|
|
||||||
@Mock private TaskanaEngineConfiguration taskanaEngineConfiguration;
|
@Mock private TaskanaEngineConfiguration taskanaEngineConfiguration;
|
||||||
|
|
||||||
@Mock private MonitorMapper monitorMapperMock;
|
@Mock private MonitorMapper monitorMapperMock;
|
||||||
|
@Mock private ClassificationService classificationService;
|
||||||
|
|
||||||
|
private Object[] mocks;
|
||||||
|
|
||||||
@BeforeEach
|
@BeforeEach
|
||||||
void setup() {
|
void setup() {
|
||||||
when(internalTaskanaEngineMock.getEngine()).thenReturn(taskanaEngineMock);
|
when(internalTaskanaEngineMock.getEngine()).thenReturn(taskanaEngineMock);
|
||||||
|
when(taskanaEngineMock.getClassificationService()).thenReturn(classificationService);
|
||||||
|
mocks =
|
||||||
|
new Object[] {
|
||||||
|
internalTaskanaEngineMock,
|
||||||
|
taskanaEngineMock,
|
||||||
|
monitorMapperMock,
|
||||||
|
taskanaEngineConfiguration,
|
||||||
|
classificationService
|
||||||
|
};
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
|
@ -82,6 +93,12 @@ class ClassificationReportBuilderImplTest {
|
||||||
customAttributeFilter))
|
customAttributeFilter))
|
||||||
.thenReturn(expectedResult);
|
.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 =
|
final ClassificationReport actualResult =
|
||||||
cut.createClassificationReportBuilder()
|
cut.createClassificationReportBuilder()
|
||||||
.workbasketIdIn(workbasketIds)
|
.workbasketIdIn(workbasketIds)
|
||||||
|
@ -96,16 +113,15 @@ class ClassificationReportBuilderImplTest {
|
||||||
verify(internalTaskanaEngineMock).openConnection();
|
verify(internalTaskanaEngineMock).openConnection();
|
||||||
verify(taskanaEngineMock).checkRoleMembership(any());
|
verify(taskanaEngineMock).checkRoleMembership(any());
|
||||||
verify(taskanaEngineMock).getWorkingDaysToDaysConverter();
|
verify(taskanaEngineMock).getWorkingDaysToDaysConverter();
|
||||||
verify(internalTaskanaEngineMock, times(2)).getEngine();
|
verify(taskanaEngineMock).getClassificationService();
|
||||||
|
verify(internalTaskanaEngineMock, times(3)).getEngine();
|
||||||
|
|
||||||
verify(monitorMapperMock)
|
verify(monitorMapperMock)
|
||||||
.getTaskCountOfClassifications(any(), any(), any(), any(), any(), any(), any(), any());
|
.getTaskCountOfClassifications(any(), any(), any(), any(), any(), any(), any(), any());
|
||||||
verify(internalTaskanaEngineMock).returnConnection();
|
verify(internalTaskanaEngineMock).returnConnection();
|
||||||
verifyNoMoreInteractions(
|
|
||||||
internalTaskanaEngineMock,
|
verifyNoMoreInteractions(queryMock);
|
||||||
taskanaEngineMock,
|
verifyNoMoreInteractions(mocks);
|
||||||
monitorMapperMock,
|
|
||||||
taskanaEngineConfiguration);
|
|
||||||
|
|
||||||
assertThat(actualResult).isNotNull();
|
assertThat(actualResult).isNotNull();
|
||||||
assertThat(actualResult.getRow("CLI:000000000000000000000000000000000001").getTotalValue())
|
assertThat(actualResult.getRow("CLI:000000000000000000000000000000000001").getTotalValue())
|
||||||
|
@ -144,6 +160,11 @@ class ClassificationReportBuilderImplTest {
|
||||||
excludedClassificationIds,
|
excludedClassificationIds,
|
||||||
customAttributeFilter))
|
customAttributeFilter))
|
||||||
.thenReturn(expectedResult);
|
.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 =
|
final ClassificationReport actualResult =
|
||||||
cut.createClassificationReportBuilder()
|
cut.createClassificationReportBuilder()
|
||||||
|
@ -160,16 +181,14 @@ class ClassificationReportBuilderImplTest {
|
||||||
verify(internalTaskanaEngineMock).openConnection();
|
verify(internalTaskanaEngineMock).openConnection();
|
||||||
verify(taskanaEngineMock).checkRoleMembership(any());
|
verify(taskanaEngineMock).checkRoleMembership(any());
|
||||||
verify(taskanaEngineMock).getWorkingDaysToDaysConverter();
|
verify(taskanaEngineMock).getWorkingDaysToDaysConverter();
|
||||||
verify(internalTaskanaEngineMock, times(2)).getEngine();
|
verify(taskanaEngineMock).getClassificationService();
|
||||||
|
verify(internalTaskanaEngineMock, times(3)).getEngine();
|
||||||
|
|
||||||
verify(monitorMapperMock)
|
verify(monitorMapperMock)
|
||||||
.getTaskCountOfClassifications(any(), any(), any(), any(), any(), any(), any(), any());
|
.getTaskCountOfClassifications(any(), any(), any(), any(), any(), any(), any(), any());
|
||||||
verify(internalTaskanaEngineMock).returnConnection();
|
verify(internalTaskanaEngineMock).returnConnection();
|
||||||
verifyNoMoreInteractions(
|
verifyNoMoreInteractions(queryMock);
|
||||||
internalTaskanaEngineMock,
|
verifyNoMoreInteractions(mocks);
|
||||||
taskanaEngineMock,
|
|
||||||
monitorMapperMock,
|
|
||||||
taskanaEngineConfiguration);
|
|
||||||
|
|
||||||
assertThat(actualResult).isNotNull();
|
assertThat(actualResult).isNotNull();
|
||||||
assertThat(actualResult.getRow("CLI:000000000000000000000000000000000001").getTotalValue())
|
assertThat(actualResult.getRow("CLI:000000000000000000000000000000000001").getTotalValue())
|
||||||
|
@ -207,6 +226,11 @@ class ClassificationReportBuilderImplTest {
|
||||||
excludedClassificationIds,
|
excludedClassificationIds,
|
||||||
customAttributeFilter))
|
customAttributeFilter))
|
||||||
.thenReturn(expectedResult);
|
.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 =
|
final DetailedClassificationReport actualResult =
|
||||||
cut.createClassificationReportBuilder()
|
cut.createClassificationReportBuilder()
|
||||||
|
@ -222,17 +246,15 @@ class ClassificationReportBuilderImplTest {
|
||||||
verify(internalTaskanaEngineMock).openConnection();
|
verify(internalTaskanaEngineMock).openConnection();
|
||||||
verify(taskanaEngineMock).checkRoleMembership(any());
|
verify(taskanaEngineMock).checkRoleMembership(any());
|
||||||
verify(taskanaEngineMock).getWorkingDaysToDaysConverter();
|
verify(taskanaEngineMock).getWorkingDaysToDaysConverter();
|
||||||
verify(internalTaskanaEngineMock, times(2)).getEngine();
|
verify(taskanaEngineMock).getClassificationService();
|
||||||
|
verify(internalTaskanaEngineMock, times(3)).getEngine();
|
||||||
|
|
||||||
verify(monitorMapperMock)
|
verify(monitorMapperMock)
|
||||||
.getTaskCountOfDetailedClassifications(
|
.getTaskCountOfDetailedClassifications(
|
||||||
any(), any(), any(), any(), any(), any(), any(), any());
|
any(), any(), any(), any(), any(), any(), any(), any());
|
||||||
verify(internalTaskanaEngineMock).returnConnection();
|
verify(internalTaskanaEngineMock).returnConnection();
|
||||||
verifyNoMoreInteractions(
|
verifyNoMoreInteractions(queryMock);
|
||||||
internalTaskanaEngineMock,
|
verifyNoMoreInteractions(mocks);
|
||||||
taskanaEngineMock,
|
|
||||||
monitorMapperMock,
|
|
||||||
taskanaEngineConfiguration);
|
|
||||||
|
|
||||||
FoldableRow<DetailedMonitorQueryItem> line =
|
FoldableRow<DetailedMonitorQueryItem> line =
|
||||||
actualResult.getRow("CLI:000000000000000000000000000000000001");
|
actualResult.getRow("CLI:000000000000000000000000000000000001");
|
||||||
|
@ -274,6 +296,11 @@ class ClassificationReportBuilderImplTest {
|
||||||
excludedClassificationIds,
|
excludedClassificationIds,
|
||||||
customAttributeFilter))
|
customAttributeFilter))
|
||||||
.thenReturn(expectedResult);
|
.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 =
|
final DetailedClassificationReport actualResult =
|
||||||
cut.createClassificationReportBuilder()
|
cut.createClassificationReportBuilder()
|
||||||
|
@ -290,17 +317,15 @@ class ClassificationReportBuilderImplTest {
|
||||||
verify(internalTaskanaEngineMock).openConnection();
|
verify(internalTaskanaEngineMock).openConnection();
|
||||||
verify(taskanaEngineMock).checkRoleMembership(any());
|
verify(taskanaEngineMock).checkRoleMembership(any());
|
||||||
verify(taskanaEngineMock).getWorkingDaysToDaysConverter();
|
verify(taskanaEngineMock).getWorkingDaysToDaysConverter();
|
||||||
verify(internalTaskanaEngineMock, times(2)).getEngine();
|
verify(taskanaEngineMock).getClassificationService();
|
||||||
|
verify(internalTaskanaEngineMock, times(3)).getEngine();
|
||||||
|
|
||||||
verify(monitorMapperMock)
|
verify(monitorMapperMock)
|
||||||
.getTaskCountOfDetailedClassifications(
|
.getTaskCountOfDetailedClassifications(
|
||||||
any(), any(), any(), any(), any(), any(), any(), any());
|
any(), any(), any(), any(), any(), any(), any(), any());
|
||||||
verify(internalTaskanaEngineMock).returnConnection();
|
verify(internalTaskanaEngineMock).returnConnection();
|
||||||
verifyNoMoreInteractions(
|
verifyNoMoreInteractions(queryMock);
|
||||||
internalTaskanaEngineMock,
|
verifyNoMoreInteractions(mocks);
|
||||||
taskanaEngineMock,
|
|
||||||
monitorMapperMock,
|
|
||||||
taskanaEngineConfiguration);
|
|
||||||
|
|
||||||
FoldableRow<DetailedMonitorQueryItem> line =
|
FoldableRow<DetailedMonitorQueryItem> line =
|
||||||
actualResult.getRow("CLI:000000000000000000000000000000000001");
|
actualResult.getRow("CLI:000000000000000000000000000000000001");
|
||||||
|
@ -365,17 +390,14 @@ class ClassificationReportBuilderImplTest {
|
||||||
verify(internalTaskanaEngineMock).openConnection();
|
verify(internalTaskanaEngineMock).openConnection();
|
||||||
verify(taskanaEngineMock).checkRoleMembership(any());
|
verify(taskanaEngineMock).checkRoleMembership(any());
|
||||||
verify(taskanaEngineMock).getWorkingDaysToDaysConverter();
|
verify(taskanaEngineMock).getWorkingDaysToDaysConverter();
|
||||||
verify(internalTaskanaEngineMock, times(2)).getEngine();
|
verify(internalTaskanaEngineMock, times(3)).getEngine();
|
||||||
|
|
||||||
verify(monitorMapperMock)
|
verify(monitorMapperMock)
|
||||||
.getTaskIdsForSelectedItems(
|
.getTaskIdsForSelectedItems(
|
||||||
any(), any(), any(), any(), any(), any(), any(), any(), any(), eq(false));
|
any(), any(), any(), any(), any(), any(), any(), any(), any(), eq(false));
|
||||||
verify(internalTaskanaEngineMock).returnConnection();
|
verify(internalTaskanaEngineMock).returnConnection();
|
||||||
verifyNoMoreInteractions(
|
verify(taskanaEngineMock).getClassificationService();
|
||||||
internalTaskanaEngineMock,
|
verifyNoMoreInteractions(mocks);
|
||||||
taskanaEngineMock,
|
|
||||||
monitorMapperMock,
|
|
||||||
taskanaEngineConfiguration);
|
|
||||||
|
|
||||||
assertThat(actualResult).isNotNull();
|
assertThat(actualResult).isNotNull();
|
||||||
assertThat(actualResult).isEqualTo(expectedResult);
|
assertThat(actualResult).isEqualTo(expectedResult);
|
||||||
|
@ -439,16 +461,13 @@ class ClassificationReportBuilderImplTest {
|
||||||
verify(internalTaskanaEngineMock).openConnection();
|
verify(internalTaskanaEngineMock).openConnection();
|
||||||
verify(taskanaEngineMock).checkRoleMembership(any());
|
verify(taskanaEngineMock).checkRoleMembership(any());
|
||||||
verify(taskanaEngineMock).getWorkingDaysToDaysConverter();
|
verify(taskanaEngineMock).getWorkingDaysToDaysConverter();
|
||||||
verify(internalTaskanaEngineMock, times(2)).getEngine();
|
verify(internalTaskanaEngineMock, times(3)).getEngine();
|
||||||
|
|
||||||
verify(monitorMapperMock)
|
verify(monitorMapperMock)
|
||||||
.getCustomAttributeValuesForReport(any(), any(), any(), any(), any(), any(), any(), any());
|
.getCustomAttributeValuesForReport(any(), any(), any(), any(), any(), any(), any(), any());
|
||||||
verify(internalTaskanaEngineMock).returnConnection();
|
verify(internalTaskanaEngineMock).returnConnection();
|
||||||
verifyNoMoreInteractions(
|
verify(taskanaEngineMock).getClassificationService();
|
||||||
internalTaskanaEngineMock,
|
verifyNoMoreInteractions(mocks);
|
||||||
taskanaEngineMock,
|
|
||||||
monitorMapperMock,
|
|
||||||
taskanaEngineConfiguration);
|
|
||||||
|
|
||||||
assertThat(actualResult).isNotNull();
|
assertThat(actualResult).isNotNull();
|
||||||
assertThat(actualResult).isEqualTo(expectedResult);
|
assertThat(actualResult).isEqualTo(expectedResult);
|
||||||
|
|
|
@ -5,6 +5,7 @@ import static org.assertj.core.api.Assertions.assertThat;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
|
import java.util.HashMap;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.IntStream;
|
import java.util.stream.IntStream;
|
||||||
|
@ -235,6 +236,38 @@ class ReportTest {
|
||||||
assertThat(sumRow.getTotalValue()).isEqualTo(2 * item.getValue());
|
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<String, String> 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<String, String> 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
|
private static class MonitorQueryItemTimeIntervalColumnHeaderReport
|
||||||
extends Report<MonitorQueryItem, TimeIntervalColumnHeader> {
|
extends Report<MonitorQueryItem, TimeIntervalColumnHeader> {
|
||||||
|
|
||||||
|
|
|
@ -86,6 +86,7 @@ class WorkbasketReportBuilderImplTest {
|
||||||
customAttributeFilter,
|
customAttributeFilter,
|
||||||
combinedClassificationFilter))
|
combinedClassificationFilter))
|
||||||
.thenReturn(expectedResult);
|
.thenReturn(expectedResult);
|
||||||
|
when(internalTaskanaEngineMock.runAsAdmin(any())).thenReturn(Collections.emptyMap());
|
||||||
|
|
||||||
final WorkbasketReport actualResult =
|
final WorkbasketReport actualResult =
|
||||||
cut.createWorkbasketReportBuilder()
|
cut.createWorkbasketReportBuilder()
|
||||||
|
@ -102,10 +103,12 @@ class WorkbasketReportBuilderImplTest {
|
||||||
verify(internalTaskanaEngineMock).openConnection();
|
verify(internalTaskanaEngineMock).openConnection();
|
||||||
verify(taskanaEngineMock).checkRoleMembership(any());
|
verify(taskanaEngineMock).checkRoleMembership(any());
|
||||||
verify(taskanaEngineMock).getWorkingDaysToDaysConverter();
|
verify(taskanaEngineMock).getWorkingDaysToDaysConverter();
|
||||||
verify(internalTaskanaEngineMock, times(2)).getEngine();
|
verify(internalTaskanaEngineMock, times(3)).getEngine();
|
||||||
verify(monitorMapperMock)
|
verify(monitorMapperMock)
|
||||||
.getTaskCountOfWorkbaskets(any(), any(), any(), any(), any(), any(), any(), any(), any());
|
.getTaskCountOfWorkbaskets(any(), any(), any(), any(), any(), any(), any(), any(), any());
|
||||||
verify(internalTaskanaEngineMock).returnConnection();
|
verify(internalTaskanaEngineMock).returnConnection();
|
||||||
|
verify(internalTaskanaEngineMock).runAsAdmin(any());
|
||||||
|
verify(taskanaEngineMock).getWorkbasketService();
|
||||||
verifyNoMoreInteractions(internalTaskanaEngineMock, taskanaEngineMock, monitorMapperMock);
|
verifyNoMoreInteractions(internalTaskanaEngineMock, taskanaEngineMock, monitorMapperMock);
|
||||||
|
|
||||||
assertThat(actualResult).isNotNull();
|
assertThat(actualResult).isNotNull();
|
||||||
|
@ -150,6 +153,7 @@ class WorkbasketReportBuilderImplTest {
|
||||||
customAttributeFilter,
|
customAttributeFilter,
|
||||||
combinedClassificationFilter))
|
combinedClassificationFilter))
|
||||||
.thenReturn(expectedResult);
|
.thenReturn(expectedResult);
|
||||||
|
when(internalTaskanaEngineMock.runAsAdmin(any())).thenReturn(Collections.emptyMap());
|
||||||
|
|
||||||
final WorkbasketReport actualResult =
|
final WorkbasketReport actualResult =
|
||||||
cut.createWorkbasketReportBuilder()
|
cut.createWorkbasketReportBuilder()
|
||||||
|
@ -167,10 +171,11 @@ class WorkbasketReportBuilderImplTest {
|
||||||
verify(internalTaskanaEngineMock).openConnection();
|
verify(internalTaskanaEngineMock).openConnection();
|
||||||
verify(taskanaEngineMock).checkRoleMembership(any());
|
verify(taskanaEngineMock).checkRoleMembership(any());
|
||||||
verify(taskanaEngineMock).getWorkingDaysToDaysConverter();
|
verify(taskanaEngineMock).getWorkingDaysToDaysConverter();
|
||||||
verify(internalTaskanaEngineMock, times(2)).getEngine();
|
verify(internalTaskanaEngineMock, times(3)).getEngine();
|
||||||
verify(monitorMapperMock)
|
verify(monitorMapperMock)
|
||||||
.getTaskCountOfWorkbaskets(any(), any(), any(), any(), any(), any(), any(), any(), any());
|
.getTaskCountOfWorkbaskets(any(), any(), any(), any(), any(), any(), any(), any(), any());
|
||||||
verify(internalTaskanaEngineMock).returnConnection();
|
verify(internalTaskanaEngineMock).returnConnection();
|
||||||
|
verify(taskanaEngineMock).getWorkbasketService();
|
||||||
verifyNoMoreInteractions(internalTaskanaEngineMock, taskanaEngineMock, monitorMapperMock);
|
verifyNoMoreInteractions(internalTaskanaEngineMock, taskanaEngineMock, monitorMapperMock);
|
||||||
|
|
||||||
assertThat(actualResult).isNotNull();
|
assertThat(actualResult).isNotNull();
|
||||||
|
@ -231,11 +236,12 @@ class WorkbasketReportBuilderImplTest {
|
||||||
verify(internalTaskanaEngineMock).openConnection();
|
verify(internalTaskanaEngineMock).openConnection();
|
||||||
verify(taskanaEngineMock).checkRoleMembership(any());
|
verify(taskanaEngineMock).checkRoleMembership(any());
|
||||||
verify(taskanaEngineMock).getWorkingDaysToDaysConverter();
|
verify(taskanaEngineMock).getWorkingDaysToDaysConverter();
|
||||||
verify(internalTaskanaEngineMock, times(2)).getEngine();
|
verify(internalTaskanaEngineMock, times(3)).getEngine();
|
||||||
verify(monitorMapperMock)
|
verify(monitorMapperMock)
|
||||||
.getTaskIdsForSelectedItems(
|
.getTaskIdsForSelectedItems(
|
||||||
any(), any(), any(), any(), any(), any(), any(), any(), any(), eq(false));
|
any(), any(), any(), any(), any(), any(), any(), any(), any(), eq(false));
|
||||||
verify(internalTaskanaEngineMock).returnConnection();
|
verify(internalTaskanaEngineMock).returnConnection();
|
||||||
|
verify(taskanaEngineMock).getWorkbasketService();
|
||||||
verifyNoMoreInteractions(internalTaskanaEngineMock, taskanaEngineMock, monitorMapperMock);
|
verifyNoMoreInteractions(internalTaskanaEngineMock, taskanaEngineMock, monitorMapperMock);
|
||||||
|
|
||||||
assertThat(actualResult).isNotNull();
|
assertThat(actualResult).isNotNull();
|
||||||
|
@ -302,10 +308,11 @@ class WorkbasketReportBuilderImplTest {
|
||||||
verify(internalTaskanaEngineMock).openConnection();
|
verify(internalTaskanaEngineMock).openConnection();
|
||||||
verify(taskanaEngineMock).checkRoleMembership(any());
|
verify(taskanaEngineMock).checkRoleMembership(any());
|
||||||
verify(taskanaEngineMock).getWorkingDaysToDaysConverter();
|
verify(taskanaEngineMock).getWorkingDaysToDaysConverter();
|
||||||
verify(internalTaskanaEngineMock, times(2)).getEngine();
|
verify(internalTaskanaEngineMock, times(3)).getEngine();
|
||||||
verify(monitorMapperMock)
|
verify(monitorMapperMock)
|
||||||
.getCustomAttributeValuesForReport(any(), any(), any(), any(), any(), any(), any(), any());
|
.getCustomAttributeValuesForReport(any(), any(), any(), any(), any(), any(), any(), any());
|
||||||
verify(internalTaskanaEngineMock).returnConnection();
|
verify(internalTaskanaEngineMock).returnConnection();
|
||||||
|
verify(taskanaEngineMock).getWorkbasketService();
|
||||||
verifyNoMoreInteractions(internalTaskanaEngineMock, taskanaEngineMock, monitorMapperMock);
|
verifyNoMoreInteractions(internalTaskanaEngineMock, taskanaEngineMock, monitorMapperMock);
|
||||||
|
|
||||||
assertThat(actualResult).isNotNull();
|
assertThat(actualResult).isNotNull();
|
||||||
|
@ -333,7 +340,7 @@ class WorkbasketReportBuilderImplTest {
|
||||||
Map<CustomField, String> customAttributeFilter = new HashMap<>();
|
Map<CustomField, String> customAttributeFilter = new HashMap<>();
|
||||||
customAttributeFilter.put(CustomField.CUSTOM_1, "Geschaeftsstelle A");
|
customAttributeFilter.put(CustomField.CUSTOM_1, "Geschaeftsstelle A");
|
||||||
final List<CombinedClassificationFilter> combinedClassificationFilter =
|
final List<CombinedClassificationFilter> combinedClassificationFilter =
|
||||||
Arrays.asList(
|
Collections.singletonList(
|
||||||
new CombinedClassificationFilter(
|
new CombinedClassificationFilter(
|
||||||
"CLI:000000000000000000000000000000000003",
|
"CLI:000000000000000000000000000000000003",
|
||||||
"CLI:000000000000000000000000000000000008"));
|
"CLI:000000000000000000000000000000000008"));
|
||||||
|
@ -355,6 +362,8 @@ class WorkbasketReportBuilderImplTest {
|
||||||
combinedClassificationFilter))
|
combinedClassificationFilter))
|
||||||
.thenReturn(expectedResult);
|
.thenReturn(expectedResult);
|
||||||
|
|
||||||
|
when(internalTaskanaEngineMock.runAsAdmin(any())).thenReturn(Collections.emptyMap());
|
||||||
|
|
||||||
final WorkbasketReport actualResult =
|
final WorkbasketReport actualResult =
|
||||||
cut.createWorkbasketReportBuilder()
|
cut.createWorkbasketReportBuilder()
|
||||||
.workbasketIdIn(workbasketIds)
|
.workbasketIdIn(workbasketIds)
|
||||||
|
@ -370,7 +379,7 @@ class WorkbasketReportBuilderImplTest {
|
||||||
verify(internalTaskanaEngineMock).openConnection();
|
verify(internalTaskanaEngineMock).openConnection();
|
||||||
verify(taskanaEngineMock).checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
|
verify(taskanaEngineMock).checkRoleMembership(TaskanaRole.MONITOR, TaskanaRole.ADMIN);
|
||||||
verify(taskanaEngineMock).getWorkingDaysToDaysConverter();
|
verify(taskanaEngineMock).getWorkingDaysToDaysConverter();
|
||||||
verify(internalTaskanaEngineMock, times(2)).getEngine();
|
verify(internalTaskanaEngineMock, times(3)).getEngine();
|
||||||
verify(monitorMapperMock)
|
verify(monitorMapperMock)
|
||||||
.getTaskCountOfWorkbaskets(
|
.getTaskCountOfWorkbaskets(
|
||||||
workbasketIds,
|
workbasketIds,
|
||||||
|
@ -383,6 +392,7 @@ class WorkbasketReportBuilderImplTest {
|
||||||
customAttributeFilter,
|
customAttributeFilter,
|
||||||
combinedClassificationFilter);
|
combinedClassificationFilter);
|
||||||
verify(internalTaskanaEngineMock).returnConnection();
|
verify(internalTaskanaEngineMock).returnConnection();
|
||||||
|
verify(taskanaEngineMock).getWorkbasketService();
|
||||||
verifyNoMoreInteractions(internalTaskanaEngineMock, taskanaEngineMock, monitorMapperMock);
|
verifyNoMoreInteractions(internalTaskanaEngineMock, taskanaEngineMock, monitorMapperMock);
|
||||||
|
|
||||||
assertThat(actualResult).isNotNull();
|
assertThat(actualResult).isNotNull();
|
||||||
|
|
|
@ -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: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 );
|
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: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: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' , '' , '' , '' , '' , '' , '' , '' );
|
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' , '' , '' , '' , '' , '' , '' , '' );
|
||||||
|
|
|
@ -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
|
-- 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: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', '', '', '', '', '', '', '');
|
INSERT INTO CLASSIFICATION VALUES('CLI:000000000000000000000000000000000002', 'L10303', '', '', 'EXTERNAL', 'TASK', '', FALSE, RELATIVE_DATE(0) , RELATIVE_DATE(0) , 'Beratungsprotokoll', 'Beratungsprotokoll', 1, 'P2D', '', 'VNR,RVNR,KOLVNR, ANR', '', '', '', '', '', '', '');
|
||||||
|
|
|
@ -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
|
-- 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: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', '', '', '', '', '', '', '');
|
INSERT INTO CLASSIFICATION VALUES('CLI:000000000000000000000000000000000002', 'L10303', '', '', 'EXTERNAL', 'TASK', '', FALSE, RELATIVE_DATE(0) , RELATIVE_DATE(0) , 'Beratungsprotokoll', 'Beratungsprotokoll', 1, 'P2D', '', 'VNR,RVNR,KOLVNR, ANR', '', '', '', '', '', '', '');
|
||||||
|
|
|
@ -107,18 +107,18 @@ public class ReportRepresentationModelAssembler {
|
||||||
|
|
||||||
// iterate over each Row and transform it to a RowResource while keeping the domain key.
|
// iterate over each Row and transform it to a RowResource while keeping the domain key.
|
||||||
List<ReportRepresentationModel.RowResource> rows =
|
List<ReportRepresentationModel.RowResource> rows =
|
||||||
report.getRows().entrySet().stream()
|
report.getRows().values().stream()
|
||||||
.sorted(Comparator.comparing(e -> e.getKey().toLowerCase()))
|
.sorted(Comparator.comparing(e -> e.getKey().toLowerCase()))
|
||||||
.map(
|
.map(
|
||||||
i ->
|
i ->
|
||||||
transformRow(
|
transformRow(
|
||||||
i.getValue(), i.getKey(), new String[report.getRowDesc().length], 0))
|
i, new String[report.getRowDesc().length], 0))
|
||||||
.flatMap(Collection::stream)
|
.flatMap(Collection::stream)
|
||||||
.collect(Collectors.toList());
|
.collect(Collectors.toList());
|
||||||
|
|
||||||
List<ReportRepresentationModel.RowResource> sumRow =
|
List<ReportRepresentationModel.RowResource> sumRow =
|
||||||
transformRow(
|
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);
|
return new ReportRepresentationModel(meta, rows, sumRow);
|
||||||
}
|
}
|
||||||
|
@ -129,36 +129,36 @@ public class ReportRepresentationModelAssembler {
|
||||||
}
|
}
|
||||||
|
|
||||||
private <I extends QueryItem> List<ReportRepresentationModel.RowResource> transformRow(
|
private <I extends QueryItem> List<ReportRepresentationModel.RowResource> transformRow(
|
||||||
Row<I> row, String currentDesc, String[] desc, int depth) {
|
Row<I> row, String[] desc, int depth) {
|
||||||
// This is a very dirty solution.. Personally I'd prefer to use a visitor-like pattern here.
|
// 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
|
// The issue with that: Addition of the visitor code within taskana-core - and having clean code
|
||||||
// is not
|
// is not
|
||||||
// a reason to append code somewhere where it doesn't belong.
|
// a reason to append code somewhere where it doesn't belong.
|
||||||
if (row.getClass() == SingleRow.class) {
|
if (row.getClass() == SingleRow.class) {
|
||||||
return Collections.singletonList(
|
return Collections.singletonList(
|
||||||
transformSingleRow((SingleRow<I>) row, currentDesc, desc, depth));
|
transformSingleRow((SingleRow<I>) row, desc, depth));
|
||||||
}
|
}
|
||||||
return transformFoldableRow((FoldableRow<I>) row, currentDesc, desc, depth);
|
return transformFoldableRow((FoldableRow<I>) row, desc, depth);
|
||||||
}
|
}
|
||||||
|
|
||||||
private <I extends QueryItem> ReportRepresentationModel.RowResource transformSingleRow(
|
private <I extends QueryItem> ReportRepresentationModel.RowResource transformSingleRow(
|
||||||
SingleRow<I> row, String currentDesc, String[] previousRowDesc, int depth) {
|
SingleRow<I> row, String[] previousRowDesc, int depth) {
|
||||||
String[] rowDesc = new String[previousRowDesc.length];
|
String[] rowDesc = new String[previousRowDesc.length];
|
||||||
System.arraycopy(previousRowDesc, 0, rowDesc, 0, depth);
|
System.arraycopy(previousRowDesc, 0, rowDesc, 0, depth);
|
||||||
rowDesc[depth] = currentDesc;
|
rowDesc[depth] = row.getDisplayName();
|
||||||
return new ReportRepresentationModel.RowResource(
|
return new ReportRepresentationModel.RowResource(
|
||||||
row.getCells(), row.getTotalValue(), depth, rowDesc, depth == 0);
|
row.getCells(), row.getTotalValue(), depth, rowDesc, depth == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
private <I extends QueryItem> List<ReportRepresentationModel.RowResource> transformFoldableRow(
|
private <I extends QueryItem> List<ReportRepresentationModel.RowResource> transformFoldableRow(
|
||||||
FoldableRow<I> row, String currentDesc, String[] previousRowDesc, int depth) {
|
FoldableRow<I> row, String[] previousRowDesc, int depth) {
|
||||||
ReportRepresentationModel.RowResource baseRow =
|
ReportRepresentationModel.RowResource baseRow =
|
||||||
transformSingleRow(row, currentDesc, previousRowDesc, depth);
|
transformSingleRow(row, previousRowDesc, depth);
|
||||||
List<ReportRepresentationModel.RowResource> rowList = new LinkedList<>();
|
List<ReportRepresentationModel.RowResource> rowList = new LinkedList<>();
|
||||||
rowList.add(baseRow);
|
rowList.add(baseRow);
|
||||||
row.getFoldableRowKeySet().stream()
|
row.getFoldableRowKeySet().stream()
|
||||||
.sorted(String.CASE_INSENSITIVE_ORDER)
|
.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)
|
.flatMap(Collection::stream)
|
||||||
.forEachOrdered(rowList::add);
|
.forEachOrdered(rowList::add);
|
||||||
return rowList;
|
return rowList;
|
||||||
|
|
|
@ -94,7 +94,8 @@ public class ReportRepresentationModel extends RepresentationModel<ReportReprese
|
||||||
private final String[] rowDesc;
|
private final String[] rowDesc;
|
||||||
private final String totalDesc;
|
private final String totalDesc;
|
||||||
|
|
||||||
public MetaInformation(String name, String date, String[] header, String[] rowDesc, String totalDesc) {
|
public MetaInformation(
|
||||||
|
String name, String date, String[] header, String[] rowDesc, String totalDesc) {
|
||||||
this.name = name;
|
this.name = name;
|
||||||
this.date = date;
|
this.date = date;
|
||||||
this.header = header;
|
this.header = header;
|
||||||
|
|
|
@ -62,7 +62,7 @@ class ReportRepresentationModelTest {
|
||||||
ReportRepresentationModel.MetaInformation meta = resource.getMeta();
|
ReportRepresentationModel.MetaInformation meta = resource.getMeta();
|
||||||
assertEquals("WorkbasketReport", meta.getName());
|
assertEquals("WorkbasketReport", meta.getName());
|
||||||
assertEquals("2019-01-02T00:00:00Z", meta.getDate());
|
assertEquals("2019-01-02T00:00:00Z", meta.getDate());
|
||||||
assertArrayEquals(new String[] {"WORKBASKET KEYS"}, meta.getRowDesc());
|
assertArrayEquals(new String[] {"WORKBASKET"}, meta.getRowDesc());
|
||||||
assertArrayEquals(
|
assertArrayEquals(
|
||||||
headers.stream().map(TimeIntervalColumnHeader::getDisplayName).toArray(), meta.getHeader());
|
headers.stream().map(TimeIntervalColumnHeader::getDisplayName).toArray(), meta.getHeader());
|
||||||
assertEquals("Total", meta.getTotalDesc());
|
assertEquals("Total", meta.getTotalDesc());
|
||||||
|
@ -98,7 +98,7 @@ class ReportRepresentationModelTest {
|
||||||
ReportRepresentationModel.MetaInformation meta = resource.getMeta();
|
ReportRepresentationModel.MetaInformation meta = resource.getMeta();
|
||||||
assertEquals("ClassificationReport", meta.getName());
|
assertEquals("ClassificationReport", meta.getName());
|
||||||
assertEquals("2019-01-02T00:00:00Z", meta.getDate());
|
assertEquals("2019-01-02T00:00:00Z", meta.getDate());
|
||||||
assertArrayEquals(new String[] {"CLASSIFICATION KEYS"}, meta.getRowDesc());
|
assertArrayEquals(new String[] {"CLASSIFICATION"}, meta.getRowDesc());
|
||||||
assertArrayEquals(
|
assertArrayEquals(
|
||||||
headers.stream().map(TimeIntervalColumnHeader::getDisplayName).toArray(), meta.getHeader());
|
headers.stream().map(TimeIntervalColumnHeader::getDisplayName).toArray(), meta.getHeader());
|
||||||
assertEquals("Total", meta.getTotalDesc());
|
assertEquals("Total", meta.getTotalDesc());
|
||||||
|
@ -144,7 +144,7 @@ class ReportRepresentationModelTest {
|
||||||
ReportRepresentationModel.MetaInformation meta = resource.getMeta();
|
ReportRepresentationModel.MetaInformation meta = resource.getMeta();
|
||||||
assertEquals("ClassificationReport", meta.getName());
|
assertEquals("ClassificationReport", meta.getName());
|
||||||
assertEquals("2019-01-02T00:00:00Z", meta.getDate());
|
assertEquals("2019-01-02T00:00:00Z", meta.getDate());
|
||||||
assertArrayEquals(new String[] {"CLASSIFICATION KEYS"}, meta.getRowDesc());
|
assertArrayEquals(new String[] {"CLASSIFICATION"}, meta.getRowDesc());
|
||||||
assertArrayEquals(
|
assertArrayEquals(
|
||||||
headers.stream().map(TimeIntervalColumnHeader::getDisplayName).toArray(), meta.getHeader());
|
headers.stream().map(TimeIntervalColumnHeader::getDisplayName).toArray(), meta.getHeader());
|
||||||
assertEquals("Total", meta.getTotalDesc());
|
assertEquals("Total", meta.getTotalDesc());
|
||||||
|
@ -199,7 +199,7 @@ class ReportRepresentationModelTest {
|
||||||
ReportRepresentationModel.MetaInformation meta = resource.getMeta();
|
ReportRepresentationModel.MetaInformation meta = resource.getMeta();
|
||||||
assertEquals("DetailedClassificationReport", meta.getName());
|
assertEquals("DetailedClassificationReport", meta.getName());
|
||||||
assertEquals("2019-01-02T00:00:00Z", meta.getDate());
|
assertEquals("2019-01-02T00:00:00Z", meta.getDate());
|
||||||
assertArrayEquals(new String[] {"TASK CLASSIFICATION KEYS", "ATTACHMENT"}, meta.getRowDesc());
|
assertArrayEquals(new String[] {"TASK CLASSIFICATION", "ATTACHMENT"}, meta.getRowDesc());
|
||||||
assertArrayEquals(
|
assertArrayEquals(
|
||||||
headers.stream().map(TimeIntervalColumnHeader::getDisplayName).toArray(), meta.getHeader());
|
headers.stream().map(TimeIntervalColumnHeader::getDisplayName).toArray(), meta.getHeader());
|
||||||
assertEquals("Total", meta.getTotalDesc());
|
assertEquals("Total", meta.getTotalDesc());
|
||||||
|
@ -279,7 +279,7 @@ class ReportRepresentationModelTest {
|
||||||
ReportRepresentationModel.MetaInformation meta = resource.getMeta();
|
ReportRepresentationModel.MetaInformation meta = resource.getMeta();
|
||||||
assertEquals("DetailedClassificationReport", meta.getName());
|
assertEquals("DetailedClassificationReport", meta.getName());
|
||||||
assertEquals("2019-01-02T00:00:00Z", meta.getDate());
|
assertEquals("2019-01-02T00:00:00Z", meta.getDate());
|
||||||
assertArrayEquals(new String[] {"TASK CLASSIFICATION KEYS", "ATTACHMENT"}, meta.getRowDesc());
|
assertArrayEquals(new String[] {"TASK CLASSIFICATION", "ATTACHMENT"}, meta.getRowDesc());
|
||||||
assertArrayEquals(
|
assertArrayEquals(
|
||||||
headers.stream().map(TimeIntervalColumnHeader::getDisplayName).toArray(), meta.getHeader());
|
headers.stream().map(TimeIntervalColumnHeader::getDisplayName).toArray(), meta.getHeader());
|
||||||
assertEquals("Total", meta.getTotalDesc());
|
assertEquals("Total", meta.getTotalDesc());
|
||||||
|
|
Loading…
Reference in New Issue