TSK-267: Add category filter to reports

This commit is contained in:
Konstantin Kläger 2018-02-20 11:33:33 +01:00 committed by Marcel Lengl
parent 0ca7d01595
commit 3d3418e44b
9 changed files with 468 additions and 157 deletions

View File

@ -17,17 +17,20 @@ public interface TaskMonitorService {
/** /**
* Returns a {@link Report} for a given list of {@link Workbasket}s and for a given list of {@link TaskState}s. The * Returns a {@link Report} for a given list of {@link Workbasket}s and for a given list of {@link TaskState}s. The
* report only contains the number of all tasks of the respective workbasket as well as the total sum of all tasks. * report only contains the number of all tasks of the respective workbasket as well as the total sum of all tasks.
* Only tasks with a state in the list of TaskStates are provided. Task with Timestamp DUE = null are not * Only tasks with a state in the list of TaskStates and a category in the list of categories are provided. Task
* considered. * with Timestamp DUE = null are not considered.
* *
* @param workbaskets * @param workbaskets
* a list of {@link Workbasket} objects that should be listed in the report * a list of {@link Workbasket} objects that should be listed in the report
* @param states * @param states
* a list of {@link TaskState} objects that specify the states of the tasks that are provided * a list of {@link TaskState} objects that specify the states of the tasks that are provided
* @param categories
* a list of categories. Only tasks with a classification of this these categories are listed in the
* report
* @return a {@link Report} object that only contains the number of all tasks of the respective workbasket as well * @return a {@link Report} object that only contains the number of all tasks of the respective workbasket as well
* as the total number of all tasks * as the total number of all tasks
*/ */
Report getWorkbasketLevelReport(List<Workbasket> workbaskets, List<TaskState> states); Report getWorkbasketLevelReport(List<Workbasket> workbaskets, List<TaskState> states, List<String> categories);
/** /**
* Returns a {@link Report} for a given list of {@link Workbasket}s, a given list of {@link TaskState}s and a given * Returns a {@link Report} for a given list of {@link Workbasket}s, a given list of {@link TaskState}s and a given
@ -40,6 +43,9 @@ public interface TaskMonitorService {
* a list of {@link Workbasket} objects that should be listed in the report * a list of {@link Workbasket} objects that should be listed in the report
* @param states * @param states
* a list of {@link TaskState} objects that specify the states of the tasks that are provided * a list of {@link TaskState} objects that specify the states of the tasks that are provided
* @param categories
* a list of categories. Only tasks with a classification of this these categories are listed in the
* report
* @param reportLineItemDefinitions * @param reportLineItemDefinitions
* a list of {@link ReportLineItemDefinition} objects that specify the subdivision into different cluster * a list of {@link ReportLineItemDefinition} objects that specify the subdivision into different cluster
* of due dates. Days in past are represented as negative values and days in the future are represented * of due dates. Days in past are represented as negative values and days in the future are represented
@ -49,7 +55,7 @@ public interface TaskMonitorService {
* @return a {@link Report} object that represents an overview of all tasks in the * @return a {@link Report} object that represents an overview of all tasks in the
*/ */
Report getWorkbasketLevelReport(List<Workbasket> workbaskets, List<TaskState> states, Report getWorkbasketLevelReport(List<Workbasket> workbaskets, List<TaskState> states,
List<ReportLineItemDefinition> reportLineItemDefinitions); List<String> categories, List<ReportLineItemDefinition> reportLineItemDefinitions);
/** /**
* Returns a {@link Report} for a given list of {@link Workbasket}s, a given list of {@link TaskState}s and a given * Returns a {@link Report} for a given list of {@link Workbasket}s, a given list of {@link TaskState}s and a given
@ -61,6 +67,9 @@ public interface TaskMonitorService {
* a list of {@link Workbasket} objects that should be listed in the report * a list of {@link Workbasket} objects that should be listed in the report
* @param states * @param states
* a list of {@link TaskState} objects that specify the states of the tasks that are provided * a list of {@link TaskState} objects that specify the states of the tasks that are provided
* @param categories
* a list of categories. Only tasks with a classification of this these categories are listed in the
* report
* @param reportLineItemDefinitions * @param reportLineItemDefinitions
* a list of {@link ReportLineItemDefinition} objects that specify the subdivision into different cluster * a list of {@link ReportLineItemDefinition} objects that specify the subdivision into different cluster
* of due dates. Days in past are represented as negative values and days in the future are represented * of due dates. Days in past are represented as negative values and days in the future are represented
@ -73,7 +82,7 @@ public interface TaskMonitorService {
* @return a {@link Report} object that represents an overview of all tasks in the * @return a {@link Report} object that represents an overview of all tasks in the
*/ */
Report getWorkbasketLevelReport(List<Workbasket> workbaskets, List<TaskState> states, Report getWorkbasketLevelReport(List<Workbasket> workbaskets, List<TaskState> states,
List<ReportLineItemDefinition> reportLineItemDefinitions, boolean inWorkingDays); List<String> categories, List<ReportLineItemDefinition> reportLineItemDefinitions, boolean inWorkingDays);
/** /**
* Returns a {@link Report} with categories for a given list of {@link Workbasket}s and for a given list of * Returns a {@link Report} with categories for a given list of {@link Workbasket}s and for a given list of
@ -82,13 +91,16 @@ public interface TaskMonitorService {
* null are not considered. * null are not considered.
* *
* @param workbaskets * @param workbaskets
* a list of {@link Workbasket} objects whose task should be considered in the report * a list of {@link Workbasket} objects whose tasks should be considered in the report
* @param states * @param states
* a list of {@link TaskState} objects that specify the states of the tasks that are provided * a list of {@link TaskState} objects that specify the states of the tasks that are provided
* @param categories
* a list of categories. Only tasks with a classification of this these categories are listed in the
* report
* @return a {@link Report} object that only contains the number of all tasks of the respective category as well as * @return a {@link Report} object that only contains the number of all tasks of the respective category as well as
* the total number of all tasks * the total number of all tasks
*/ */
Report getCategoryReport(List<Workbasket> workbaskets, List<TaskState> states); Report getCategoryReport(List<Workbasket> workbaskets, List<TaskState> states, List<String> categories);
/** /**
* Returns a {@link Report} with categories for a given list of {@link Workbasket}s, a given list of * Returns a {@link Report} with categories for a given list of {@link Workbasket}s, a given list of
@ -98,9 +110,12 @@ public interface TaskMonitorService {
* Tasks with Timestamp DUE = null are not considered. * Tasks with Timestamp DUE = null are not considered.
* *
* @param workbaskets * @param workbaskets
* a list of {@link Workbasket} objects whose task should be considered in the report * a list of {@link Workbasket} objects whose tasks should be considered in the report
* @param states * @param states
* a list of {@link TaskState} objects that specify the states of the tasks that are provided * a list of {@link TaskState} objects that specify the states of the tasks that are provided
* @param categories
* a list of categories. Only tasks with a classification of this these categories are listed in the
* report
* @param reportLineItemDefinitions * @param reportLineItemDefinitions
* a list of {@link ReportLineItemDefinition} objects that specify the subdivision into different cluster * a list of {@link ReportLineItemDefinition} objects that specify the subdivision into different cluster
* of due dates. Days in past are represented as negative values and days in the future are represented * of due dates. Days in past are represented as negative values and days in the future are represented
@ -109,7 +124,7 @@ public interface TaskMonitorService {
* should represent a single day, lowerLimit and upperLimit have to be equal. * should represent a single day, lowerLimit and upperLimit have to be equal.
* @return a {@link Report} object that represents an overview of all tasks of the respective category * @return a {@link Report} object that represents an overview of all tasks of the respective category
*/ */
Report getCategoryReport(List<Workbasket> workbaskets, List<TaskState> states, Report getCategoryReport(List<Workbasket> workbaskets, List<TaskState> states, List<String> categories,
List<ReportLineItemDefinition> reportLineItemDefinitions); List<ReportLineItemDefinition> reportLineItemDefinitions);
/** /**
@ -119,9 +134,12 @@ public interface TaskMonitorService {
* with a state in the list of TaskStates are provided. Tasks with Timestamp DUE = null are not considered. * with a state in the list of TaskStates are provided. Tasks with Timestamp DUE = null are not considered.
* *
* @param workbaskets * @param workbaskets
* a list of {@link Workbasket} objects whose task should be considered in the report * a list of {@link Workbasket} objects whose tasks should be considered in the report
* @param states * @param states
* a list of {@link TaskState} objects that specify the states of the tasks that are provided * a list of {@link TaskState} objects that specify the states of the tasks that are provided
* @param categories
* a list of categories. Only tasks with a classification of this these categories are listed in the
* report
* @param reportLineItemDefinitions * @param reportLineItemDefinitions
* a list of {@link ReportLineItemDefinition} objects that specify the subdivision into different cluster * a list of {@link ReportLineItemDefinition} objects that specify the subdivision into different cluster
* of due dates. Days in past are represented as negative values and days in the future are represented * of due dates. Days in past are represented as negative values and days in the future are represented
@ -133,7 +151,7 @@ public interface TaskMonitorService {
* working days. * working days.
* @return a {@link Report} object that represents an overview of all tasks of the respective category * @return a {@link Report} object that represents an overview of all tasks of the respective category
*/ */
Report getCategoryReport(List<Workbasket> workbaskets, List<TaskState> states, Report getCategoryReport(List<Workbasket> workbaskets, List<TaskState> states, List<String> categories,
List<ReportLineItemDefinition> reportLineItemDefinitions, boolean inWorkingDays); List<ReportLineItemDefinition> reportLineItemDefinitions, boolean inWorkingDays);
/** /**
@ -143,13 +161,17 @@ public interface TaskMonitorService {
* provided. Task with Timestamp DUE = null are not considered. * provided. Task with Timestamp DUE = null are not considered.
* *
* @param workbaskets * @param workbaskets
* a list of {@link Workbasket} objects whose task should be considered in the report * a list of {@link Workbasket} objects whose tasks should be considered in the report
* @param states * @param states
* a list of {@link TaskState} objects that specify the states of the tasks that are provided * a list of {@link TaskState} objects that specify the states of the tasks that are provided
* @param categories
* a list of categories. Only tasks with a classification of this these categories are listed in the
* report
* @return a {@link ClassificationReport} object that only contains the number of all tasks of the respective * @return a {@link ClassificationReport} object that only contains the number of all tasks of the respective
* classification as well as the total number of all tasks * classification as well as the total number of all tasks
*/ */
ClassificationReport getClassificationReport(List<Workbasket> workbaskets, List<TaskState> states); ClassificationReport getClassificationReport(List<Workbasket> workbaskets, List<TaskState> states,
List<String> categories);
/** /**
* Returns a {@link ClassificationReport} grouped by classifications for a given list of {@link Workbasket}s, a * Returns a {@link ClassificationReport} grouped by classifications for a given list of {@link Workbasket}s, a
@ -159,9 +181,12 @@ public interface TaskMonitorService {
* TaskStates are provided. Tasks with Timestamp DUE = null are not considered. * TaskStates are provided. Tasks with Timestamp DUE = null are not considered.
* *
* @param workbaskets * @param workbaskets
* a list of {@link Workbasket} objects whose task should be considered in the report * a list of {@link Workbasket} objects whose tasks should be considered in the report
* @param states * @param states
* a list of {@link TaskState} objects that specify the states of the tasks that are provided * a list of {@link TaskState} objects that specify the states of the tasks that are provided
* @param categories
* a list of categories. Only tasks with a classification of this these categories are listed in the
* report
* @param reportLineItemDefinitions * @param reportLineItemDefinitions
* a list of {@link ReportLineItemDefinition} objects that specify the subdivision into different cluster * a list of {@link ReportLineItemDefinition} objects that specify the subdivision into different cluster
* of due dates. Days in past are represented as negative values and days in the future are represented * of due dates. Days in past are represented as negative values and days in the future are represented
@ -172,7 +197,7 @@ public interface TaskMonitorService {
* classification * classification
*/ */
ClassificationReport getClassificationReport(List<Workbasket> workbaskets, List<TaskState> states, ClassificationReport getClassificationReport(List<Workbasket> workbaskets, List<TaskState> states,
List<ReportLineItemDefinition> reportLineItemDefinitions); List<String> categories, List<ReportLineItemDefinition> reportLineItemDefinitions);
/** /**
* Returns a {@link DetailedClassificationReport} grouped by classifications for a given list of * Returns a {@link DetailedClassificationReport} grouped by classifications for a given list of
@ -182,9 +207,12 @@ public interface TaskMonitorService {
* Timestamp DUE = null are not considered. * Timestamp DUE = null are not considered.
* *
* @param workbaskets * @param workbaskets
* a list of {@link Workbasket} objects whose task should be considered in the report * a list of {@link Workbasket} objects whose tasks should be considered in the report
* @param states * @param states
* a list of {@link TaskState} objects that specify the states of the tasks that are provided * a list of {@link TaskState} objects that specify the states of the tasks that are provided
* @param categories
* a list of categories. Only tasks with a classification of this these categories are listed in the
* report
* @param reportLineItemDefinitions * @param reportLineItemDefinitions
* a list of {@link ReportLineItemDefinition} objects that specify the subdivision into different cluster * a list of {@link ReportLineItemDefinition} objects that specify the subdivision into different cluster
* of due dates. Days in past are represented as negative values and days in the future are represented * of due dates. Days in past are represented as negative values and days in the future are represented
@ -198,7 +226,7 @@ public interface TaskMonitorService {
* classification * classification
*/ */
DetailedClassificationReport getDetailedClassificationReport(List<Workbasket> workbaskets, List<TaskState> states, DetailedClassificationReport getDetailedClassificationReport(List<Workbasket> workbaskets, List<TaskState> states,
List<ReportLineItemDefinition> reportLineItemDefinitions, boolean inWorkingDays); List<String> categories, List<ReportLineItemDefinition> reportLineItemDefinitions, boolean inWorkingDays);
/** /**
* Returns a {@link DetailedClassificationReport} grouped by classifications for a given list of {@link Workbasket}s * Returns a {@link DetailedClassificationReport} grouped by classifications for a given list of {@link Workbasket}s
@ -207,13 +235,17 @@ public interface TaskMonitorService {
* provided. Task with Timestamp DUE = null are not considered. * provided. Task with Timestamp DUE = null are not considered.
* *
* @param workbaskets * @param workbaskets
* a list of {@link Workbasket} objects whose task should be considered in the report * a list of {@link Workbasket} objects whose tasks should be considered in the report
* @param states * @param states
* a list of {@link TaskState} objects that specify the states of the tasks that are provided * a list of {@link TaskState} objects that specify the states of the tasks that are provided
* @param categories
* a list of categories. Only tasks with a classification of this these categories are listed in the
* report
* @return a {@link DetailedClassificationReport} object that only contains the number of all tasks of the * @return a {@link DetailedClassificationReport} object that only contains the number of all tasks of the
* respective classification as well as the total number of all tasks * respective classification as well as the total number of all tasks
*/ */
DetailedClassificationReport getDetailedClassificationReport(List<Workbasket> workbaskets, List<TaskState> states); DetailedClassificationReport getDetailedClassificationReport(List<Workbasket> workbaskets, List<TaskState> states,
List<String> categories);
/** /**
* Returns a {@link DetailedClassificationReport} grouped by classifications for a given list of * Returns a {@link DetailedClassificationReport} grouped by classifications for a given list of
@ -223,9 +255,12 @@ public interface TaskMonitorService {
* state in the list of TaskStates are provided. Tasks with Timestamp DUE = null are not considered. * state in the list of TaskStates are provided. Tasks with Timestamp DUE = null are not considered.
* *
* @param workbaskets * @param workbaskets
* a list of {@link Workbasket} objects whose task should be considered in the report * a list of {@link Workbasket} objects whose tasks should be considered in the report
* @param states * @param states
* a list of {@link TaskState} objects that specify the states of the tasks that are provided * a list of {@link TaskState} objects that specify the states of the tasks that are provided
* @param categories
* a list of categories. Only tasks with a classification of this these categories are listed in the
* report
* @param reportLineItemDefinitions * @param reportLineItemDefinitions
* a list of {@link ReportLineItemDefinition} objects that specify the subdivision into different cluster * a list of {@link ReportLineItemDefinition} objects that specify the subdivision into different cluster
* of due dates. Days in past are represented as negative values and days in the future are represented * of due dates. Days in past are represented as negative values and days in the future are represented
@ -236,7 +271,7 @@ public interface TaskMonitorService {
* classification * classification
*/ */
DetailedClassificationReport getDetailedClassificationReport(List<Workbasket> workbaskets, List<TaskState> states, DetailedClassificationReport getDetailedClassificationReport(List<Workbasket> workbaskets, List<TaskState> states,
List<ReportLineItemDefinition> reportLineItemDefinitions); List<String> categories, List<ReportLineItemDefinition> reportLineItemDefinitions);
/** /**
* Returns a {@link ClassificationReport} grouped by classifications for a given list of {@link Workbasket}s, a * Returns a {@link ClassificationReport} grouped by classifications for a given list of {@link Workbasket}s, a
@ -246,9 +281,12 @@ public interface TaskMonitorService {
* considered. * considered.
* *
* @param workbaskets * @param workbaskets
* a list of {@link Workbasket} objects whose task should be considered in the report * a list of {@link Workbasket} objects whose tasks should be considered in the report
* @param states * @param states
* a list of {@link TaskState} objects that specify the states of the tasks that are provided * a list of {@link TaskState} objects that specify the states of the tasks that are provided
* @param categories
* a list of categories. Only tasks with a classification of this these categories are listed in the
* report
* @param reportLineItemDefinitions * @param reportLineItemDefinitions
* a list of {@link ReportLineItemDefinition} objects that specify the subdivision into different cluster * a list of {@link ReportLineItemDefinition} objects that specify the subdivision into different cluster
* of due dates. Days in past are represented as negative values and days in the future are represented * of due dates. Days in past are represented as negative values and days in the future are represented
@ -262,7 +300,7 @@ public interface TaskMonitorService {
* classification * classification
*/ */
ClassificationReport getClassificationReport(List<Workbasket> workbaskets, List<TaskState> states, ClassificationReport getClassificationReport(List<Workbasket> workbaskets, List<TaskState> states,
List<ReportLineItemDefinition> reportLineItemDefinitions, boolean inWorkingDays); List<String> categories, List<ReportLineItemDefinition> reportLineItemDefinitions, boolean inWorkingDays);
/** /**
* Returns a {@link Report} grouped by the value of a certain {@link CustomField} for a given list of * Returns a {@link Report} grouped by the value of a certain {@link CustomField} for a given list of
@ -271,15 +309,19 @@ public interface TaskMonitorService {
* list of TaskStates are provided. Task with Timestamp DUE = null are not considered. * list of TaskStates are provided. Task with Timestamp DUE = null are not considered.
* *
* @param workbaskets * @param workbaskets
* a list of {@link Workbasket} objects whose task should be considered in the report * a list of {@link Workbasket} objects whose tasks should be considered in the report
* @param states * @param states
* a list of {@link TaskState} objects that specify the states of the tasks that are provided * a list of {@link TaskState} objects that specify the states of the tasks that are provided
* @param categories
* a list of categories. Only tasks with a classification of this these categories are listed in the
* report
* @param customField * @param customField
* a {@link CustomField} whose values should be listed in the report * a {@link CustomField} whose values should be listed in the report
* @return a {@link Report} object that only contains the number of all tasks of the respective value of the custom * @return a {@link Report} object that only contains the number of all tasks of the respective value of the custom
* field as well as the total number of all tasks * field as well as the total number of all tasks
*/ */
Report getCustomFieldValueReport(List<Workbasket> workbaskets, List<TaskState> states, CustomField customField); Report getCustomFieldValueReport(List<Workbasket> workbaskets, List<TaskState> states, List<String> categories,
CustomField customField);
/** /**
* Returns a {@link Report} grouped by the value of a certain {@link CustomField} for a given list of * Returns a {@link Report} grouped by the value of a certain {@link CustomField} for a given list of
@ -289,9 +331,12 @@ public interface TaskMonitorService {
* with a state in the list of TaskStates are provided. Tasks with Timestamp DUE = null are not considered. * with a state in the list of TaskStates are provided. Tasks with Timestamp DUE = null are not considered.
* *
* @param workbaskets * @param workbaskets
* a list of {@link Workbasket} objects whose task should be considered in the report * a list of {@link Workbasket} objects whose tasks should be considered in the report
* @param states * @param states
* a list of {@link TaskState} objects that specify the states of the tasks that are provided * a list of {@link TaskState} objects that specify the states of the tasks that are provided
* @param categories
* a list of categories. Only tasks with a classification of this these categories are listed in the
* report
* @param customField * @param customField
* a {@link CustomField} whose values should be listed in the report * a {@link CustomField} whose values should be listed in the report
* @param reportLineItemDefinitions * @param reportLineItemDefinitions
@ -304,8 +349,8 @@ public interface TaskMonitorService {
* @return a {@link Report} object that represents an overview of all tasks of the respective value of the custom * @return a {@link Report} object that represents an overview of all tasks of the respective value of the custom
* field * field
*/ */
Report getCustomFieldValueReport(List<Workbasket> workbaskets, List<TaskState> states, CustomField customField, Report getCustomFieldValueReport(List<Workbasket> workbaskets, List<TaskState> states, List<String> categories,
List<ReportLineItemDefinition> reportLineItemDefinitions); CustomField customField, List<ReportLineItemDefinition> reportLineItemDefinitions);
/** /**
* Returns a {@link Report} grouped by the value of a certain {@link CustomField} for a given list of * Returns a {@link Report} grouped by the value of a certain {@link CustomField} for a given list of
@ -315,9 +360,12 @@ public interface TaskMonitorService {
* with Timestamp DUE = null are not considered. * with Timestamp DUE = null are not considered.
* *
* @param workbaskets * @param workbaskets
* a list of {@link Workbasket} objects whose task should be considered in the report * a list of {@link Workbasket} objects whose tasks should be considered in the report
* @param states * @param states
* a list of {@link TaskState} objects that specify the states of the tasks that are provided * a list of {@link TaskState} objects that specify the states of the tasks that are provided
* @param categories
* a list of categories. Only tasks with a classification of this these categories are listed in the
* report
* @param customField * @param customField
* a {@link CustomField} whose values should be listed in the report * a {@link CustomField} whose values should be listed in the report
* @param reportLineItemDefinitions * @param reportLineItemDefinitions
@ -332,6 +380,6 @@ public interface TaskMonitorService {
* @return a {@link Report} object that represents an overview of all tasks of the respective value of the custom * @return a {@link Report} object that represents an overview of all tasks of the respective value of the custom
* field * field
*/ */
Report getCustomFieldValueReport(List<Workbasket> workbaskets, List<TaskState> states, CustomField customField, Report getCustomFieldValueReport(List<Workbasket> workbaskets, List<TaskState> states, List<String> categories,
List<ReportLineItemDefinition> reportLineItemDefinitions, boolean inWorkingDays); CustomField customField, List<ReportLineItemDefinition> reportLineItemDefinitions, boolean inWorkingDays);
} }

View File

@ -27,19 +27,20 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
} }
@Override @Override
public Report getWorkbasketLevelReport(List<Workbasket> workbaskets, List<TaskState> states) { public Report getWorkbasketLevelReport(List<Workbasket> workbaskets, List<TaskState> states,
return getWorkbasketLevelReport(workbaskets, states, null, false); List<String> categories) {
return getWorkbasketLevelReport(workbaskets, states, categories, null, false);
} }
@Override @Override
public Report getWorkbasketLevelReport(List<Workbasket> workbaskets, List<TaskState> states, public Report getWorkbasketLevelReport(List<Workbasket> workbaskets, List<TaskState> states,
List<ReportLineItemDefinition> reportLineItemDefinitions) { List<String> categories, List<ReportLineItemDefinition> reportLineItemDefinitions) {
return getWorkbasketLevelReport(workbaskets, states, reportLineItemDefinitions, true); return getWorkbasketLevelReport(workbaskets, states, categories, reportLineItemDefinitions, true);
} }
@Override @Override
public Report getWorkbasketLevelReport(List<Workbasket> workbaskets, List<TaskState> states, public Report getWorkbasketLevelReport(List<Workbasket> workbaskets, List<TaskState> states,
List<ReportLineItemDefinition> reportLineItemDefinitions, boolean inWorkingDays) { List<String> categories, List<ReportLineItemDefinition> reportLineItemDefinitions, boolean inWorkingDays) {
if (LOGGER.isDebugEnabled()) { if (LOGGER.isDebugEnabled()) {
LOGGER.debug( LOGGER.debug(
"entry to getWorkbasketLevelReport(workbaskets = {}, states = {}, reportLineItemDefinitions = {}," "entry to getWorkbasketLevelReport(workbaskets = {}, states = {}, reportLineItemDefinitions = {},"
@ -52,7 +53,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
Report report = new Report(); Report report = new Report();
List<MonitorQueryItem> monitorQueryItems = taskMonitorMapper List<MonitorQueryItem> monitorQueryItems = taskMonitorMapper
.getTaskCountOfWorkbasketsByWorkbasketsAndStates(workbaskets, states); .getTaskCountOfWorkbasketsByWorkbasketsAndStates(workbaskets, states, categories);
report.addMonitoringQueryItems(monitorQueryItems, reportLineItemDefinitions, inWorkingDays); report.addMonitoringQueryItems(monitorQueryItems, reportLineItemDefinitions, inWorkingDays);
return report; return report;
@ -64,18 +65,18 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
} }
@Override @Override
public Report getCategoryReport(List<Workbasket> workbaskets, List<TaskState> states) { public Report getCategoryReport(List<Workbasket> workbaskets, List<TaskState> states, List<String> categories) {
return getCategoryReport(workbaskets, states, null, false); return getCategoryReport(workbaskets, states, categories, null, false);
} }
@Override @Override
public Report getCategoryReport(List<Workbasket> workbaskets, List<TaskState> states, public Report getCategoryReport(List<Workbasket> workbaskets, List<TaskState> states, List<String> categories,
List<ReportLineItemDefinition> reportLineItemDefinitions) { List<ReportLineItemDefinition> reportLineItemDefinitions) {
return getCategoryReport(workbaskets, states, reportLineItemDefinitions, true); return getCategoryReport(workbaskets, states, categories, reportLineItemDefinitions, true);
} }
@Override @Override
public Report getCategoryReport(List<Workbasket> workbaskets, List<TaskState> states, public Report getCategoryReport(List<Workbasket> workbaskets, List<TaskState> states, List<String> categories,
List<ReportLineItemDefinition> reportLineItemDefinitions, boolean inWorkingDays) { List<ReportLineItemDefinition> reportLineItemDefinitions, boolean inWorkingDays) {
if (LOGGER.isDebugEnabled()) { if (LOGGER.isDebugEnabled()) {
LOGGER.debug( LOGGER.debug(
@ -89,7 +90,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
Report report = new Report(); Report report = new Report();
List<MonitorQueryItem> monitorQueryItems = taskMonitorMapper List<MonitorQueryItem> monitorQueryItems = taskMonitorMapper
.getTaskCountOfCategoriesByWorkbasketsAndStates(workbaskets, states); .getTaskCountOfCategoriesByWorkbasketsAndStates(workbaskets, states, categories);
report.addMonitoringQueryItems(monitorQueryItems, reportLineItemDefinitions, inWorkingDays); report.addMonitoringQueryItems(monitorQueryItems, reportLineItemDefinitions, inWorkingDays);
return report; return report;
@ -100,19 +101,20 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
} }
@Override @Override
public ClassificationReport getClassificationReport(List<Workbasket> workbaskets, List<TaskState> states) { public ClassificationReport getClassificationReport(List<Workbasket> workbaskets, List<TaskState> states,
return getClassificationReport(workbaskets, states, null, false); List<String> categories) {
return getClassificationReport(workbaskets, states, categories, null, false);
} }
@Override @Override
public ClassificationReport getClassificationReport(List<Workbasket> workbaskets, List<TaskState> states, public ClassificationReport getClassificationReport(List<Workbasket> workbaskets, List<TaskState> states,
List<ReportLineItemDefinition> reportLineItemDefinitions) { List<String> categories, List<ReportLineItemDefinition> reportLineItemDefinitions) {
return getClassificationReport(workbaskets, states, reportLineItemDefinitions, true); return getClassificationReport(workbaskets, states, categories, reportLineItemDefinitions, true);
} }
@Override @Override
public ClassificationReport getClassificationReport(List<Workbasket> workbaskets, List<TaskState> states, public ClassificationReport getClassificationReport(List<Workbasket> workbaskets, List<TaskState> states,
List<ReportLineItemDefinition> reportLineItemDefinitions, boolean inWorkingDays) { List<String> categories, List<ReportLineItemDefinition> reportLineItemDefinitions, boolean inWorkingDays) {
if (LOGGER.isDebugEnabled()) { if (LOGGER.isDebugEnabled()) {
LOGGER.debug( LOGGER.debug(
"entry to getClassificationReport(workbaskets = {}, states = {}, reportLineItemDefinitions = {}," "entry to getClassificationReport(workbaskets = {}, states = {}, reportLineItemDefinitions = {},"
@ -125,7 +127,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
ClassificationReport report = new ClassificationReport(); ClassificationReport report = new ClassificationReport();
List<MonitorQueryItem> monitorQueryItems = taskMonitorMapper List<MonitorQueryItem> monitorQueryItems = taskMonitorMapper
.getTaskCountOfClassificationsByWorkbasketsAndStates(workbaskets, states); .getTaskCountOfClassificationsByWorkbasketsAndStates(workbaskets, states, categories);
report.addMonitoringQueryItems(monitorQueryItems, reportLineItemDefinitions, inWorkingDays); report.addMonitoringQueryItems(monitorQueryItems, reportLineItemDefinitions, inWorkingDays);
return report; return report;
@ -137,19 +139,20 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
@Override @Override
public DetailedClassificationReport getDetailedClassificationReport(List<Workbasket> workbaskets, public DetailedClassificationReport getDetailedClassificationReport(List<Workbasket> workbaskets,
List<TaskState> states) { List<TaskState> states, List<String> categories) {
return getDetailedClassificationReport(workbaskets, states, null, false); return getDetailedClassificationReport(workbaskets, states, categories, null, false);
} }
@Override @Override
public DetailedClassificationReport getDetailedClassificationReport(List<Workbasket> workbaskets, public DetailedClassificationReport getDetailedClassificationReport(List<Workbasket> workbaskets,
List<TaskState> states, List<ReportLineItemDefinition> reportLineItemDefinitions) { List<TaskState> states, List<String> categories, List<ReportLineItemDefinition> reportLineItemDefinitions) {
return getDetailedClassificationReport(workbaskets, states, reportLineItemDefinitions, true); return getDetailedClassificationReport(workbaskets, states, categories, reportLineItemDefinitions, true);
} }
@Override @Override
public DetailedClassificationReport getDetailedClassificationReport(List<Workbasket> workbaskets, public DetailedClassificationReport getDetailedClassificationReport(List<Workbasket> workbaskets,
List<TaskState> states, List<ReportLineItemDefinition> reportLineItemDefinitions, boolean inWorkingDays) { List<TaskState> states, List<String> categories, List<ReportLineItemDefinition> reportLineItemDefinitions,
boolean inWorkingDays) {
if (LOGGER.isDebugEnabled()) { if (LOGGER.isDebugEnabled()) {
LOGGER.debug( LOGGER.debug(
@ -163,7 +166,7 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
DetailedClassificationReport report = new DetailedClassificationReport(); DetailedClassificationReport report = new DetailedClassificationReport();
List<DetailedMonitorQueryItem> detailedMonitorQueryItems = taskMonitorMapper List<DetailedMonitorQueryItem> detailedMonitorQueryItems = taskMonitorMapper
.getTaskCountOfDetailedClassificationsByWorkbasketsAndStates(workbaskets, states); .getTaskCountOfDetailedClassificationsByWorkbasketsAndStates(workbaskets, states, categories);
report.addDetailedMonitoringQueryItems(detailedMonitorQueryItems, reportLineItemDefinitions, report.addDetailedMonitoringQueryItems(detailedMonitorQueryItems, reportLineItemDefinitions,
inWorkingDays); inWorkingDays);
return report; return report;
@ -176,19 +179,20 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
@Override @Override
public Report getCustomFieldValueReport(List<Workbasket> workbaskets, List<TaskState> states, public Report getCustomFieldValueReport(List<Workbasket> workbaskets, List<TaskState> states,
CustomField customField) { List<String> categories, CustomField customField) {
return getCustomFieldValueReport(workbaskets, states, customField, null, false); return getCustomFieldValueReport(workbaskets, states, categories, customField, null, false);
} }
@Override @Override
public Report getCustomFieldValueReport(List<Workbasket> workbaskets, List<TaskState> states, public Report getCustomFieldValueReport(List<Workbasket> workbaskets, List<TaskState> states,
CustomField customField, List<ReportLineItemDefinition> reportLineItemDefinitions) { List<String> categories, CustomField customField, List<ReportLineItemDefinition> reportLineItemDefinitions) {
return getCustomFieldValueReport(workbaskets, states, customField, reportLineItemDefinitions, true); return getCustomFieldValueReport(workbaskets, states, categories, customField, reportLineItemDefinitions, true);
} }
@Override @Override
public Report getCustomFieldValueReport(List<Workbasket> workbaskets, List<TaskState> states, public Report getCustomFieldValueReport(List<Workbasket> workbaskets, List<TaskState> states,
CustomField customField, List<ReportLineItemDefinition> reportLineItemDefinitions, boolean inWorkingDays) { List<String> categories, CustomField customField, List<ReportLineItemDefinition> reportLineItemDefinitions,
boolean inWorkingDays) {
if (LOGGER.isDebugEnabled()) { if (LOGGER.isDebugEnabled()) {
LOGGER.debug( LOGGER.debug(
"entry to getCustomFieldValueReport(workbaskets = {}, states = {}, customField = {}, " "entry to getCustomFieldValueReport(workbaskets = {}, states = {}, customField = {}, "
@ -201,7 +205,8 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
Report report = new Report(); Report report = new Report();
List<MonitorQueryItem> monitorQueryItems = taskMonitorMapper List<MonitorQueryItem> monitorQueryItems = taskMonitorMapper
.getTaskCountOfCustomFieldValuesByWorkbasketsAndStatesAndCustomField(workbaskets, states, customField); .getTaskCountOfCustomFieldValuesByWorkbasketsAndStatesAndCustomField(workbaskets, states, categories,
customField);
report.addMonitoringQueryItems(monitorQueryItems, reportLineItemDefinitions, inWorkingDays); report.addMonitoringQueryItems(monitorQueryItems, reportLineItemDefinitions, inWorkingDays);
return report; return report;

View File

@ -24,6 +24,7 @@ public interface TaskMonitorMapper {
+ "FROM TASK " + "FROM TASK "
+ "WHERE WORKBASKET_KEY IN (<foreach collection='workbaskets' item='workbasket' separator=','>#{workbasket.key}</foreach>) " + "WHERE WORKBASKET_KEY IN (<foreach collection='workbaskets' item='workbasket' separator=','>#{workbasket.key}</foreach>) "
+ "AND STATE IN (<foreach collection='states' item='state' separator=','>#{state}</foreach>) " + "AND STATE IN (<foreach collection='states' item='state' separator=','>#{state}</foreach>) "
+ "AND CLASSIFICATION_CATEGORY IN (<foreach collection='categories' item='category' separator=','>#{category}</foreach>) "
+ "AND DUE IS NOT NULL " + "AND DUE IS NOT NULL "
+ "<if test=\"_databaseId == 'db2'\">GROUP BY WORKBASKET_KEY, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP))</if> " + "<if test=\"_databaseId == 'db2'\">GROUP BY WORKBASKET_KEY, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP))</if> "
+ "<if test=\"_databaseId == 'h2'\">GROUP BY WORKBASKET_KEY, DATEDIFF('DAY', CURRENT_TIMESTAMP, DUE)</if> " + "<if test=\"_databaseId == 'h2'\">GROUP BY WORKBASKET_KEY, DATEDIFF('DAY', CURRENT_TIMESTAMP, DUE)</if> "
@ -34,25 +35,28 @@ public interface TaskMonitorMapper {
@Result(column = "NUMBER_OF_TASKS", property = "numberOfTasks") }) @Result(column = "NUMBER_OF_TASKS", property = "numberOfTasks") })
List<MonitorQueryItem> getTaskCountOfWorkbasketsByWorkbasketsAndStates( List<MonitorQueryItem> getTaskCountOfWorkbasketsByWorkbasketsAndStates(
@Param("workbaskets") List<Workbasket> workbaskets, @Param("workbaskets") List<Workbasket> workbaskets,
@Param("states") List<TaskState> states); @Param("states") List<TaskState> states,
@Param("categories") List<String> categories);
@Select("<script>" @Select("<script>"
+ "<if test=\"_databaseId == 'db2'\">SELECT C.CATEGORY as CATEGORY_NAME, (DAYS(T.DUE) - DAYS(CURRENT_TIMESTAMP)) as AGE_IN_DAYS, COUNT(*) as NUMBER_OF_TASKS</if> " + "<if test=\"_databaseId == 'db2'\">SELECT CLASSIFICATION_CATEGORY, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP)) as AGE_IN_DAYS, COUNT(*) as NUMBER_OF_TASKS</if> "
+ "<if test=\"_databaseId == 'h2'\">SELECT C.CATEGORY as CATEGORY_NAME, DATEDIFF('DAY', CURRENT_TIMESTAMP, T.DUE) as AGE_IN_DAYS, COUNT(*) as NUMBER_OF_TASKS</if> " + "<if test=\"_databaseId == 'h2'\">SELECT CLASSIFICATION_CATEGORY, DATEDIFF('DAY', CURRENT_TIMESTAMP, DUE) as AGE_IN_DAYS, COUNT(*) as NUMBER_OF_TASKS</if> "
+ "FROM TASK AS T JOIN CLASSIFICATION AS C ON T.CLASSIFICATION_KEY = C.KEY " + "FROM TASK "
+ "WHERE T.WORKBASKET_KEY IN (<foreach collection='workbaskets' item='workbasket' separator=','>#{workbasket.key}</foreach>) " + "WHERE WORKBASKET_KEY IN (<foreach collection='workbaskets' item='workbasket' separator=','>#{workbasket.key}</foreach>) "
+ "AND T.STATE IN (<foreach collection='states' item='state' separator=','>#{state}</foreach>) " + "AND STATE IN (<foreach collection='states' item='state' separator=','>#{state}</foreach>) "
+ "AND T.DUE IS NOT NULL " + "AND CLASSIFICATION_CATEGORY IN (<foreach collection='categories' item='category' separator=','>#{category}</foreach>) "
+ "<if test=\"_databaseId == 'db2'\">GROUP BY C.CATEGORY, (DAYS(T.DUE) - DAYS(CURRENT_TIMESTAMP))</if> " + "AND DUE IS NOT NULL "
+ "<if test=\"_databaseId == 'h2'\">GROUP BY C.CATEGORY, DATEDIFF('DAY', CURRENT_TIMESTAMP, T.DUE)</if> " + "<if test=\"_databaseId == 'db2'\">GROUP BY CLASSIFICATION_CATEGORY, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP))</if> "
+ "<if test=\"_databaseId == 'h2'\">GROUP BY CLASSIFICATION_CATEGORY, DATEDIFF('DAY', CURRENT_TIMESTAMP, DUE)</if> "
+ "</script>") + "</script>")
@Results({ @Results({
@Result(column = "CATEGORY_NAME", property = "key"), @Result(column = "CLASSIFICATION_CATEGORY", property = "key"),
@Result(column = "AGE_IN_DAYS", property = "ageInDays"), @Result(column = "AGE_IN_DAYS", property = "ageInDays"),
@Result(column = "NUMBER_OF_TASKS", property = "numberOfTasks") }) @Result(column = "NUMBER_OF_TASKS", property = "numberOfTasks") })
List<MonitorQueryItem> getTaskCountOfCategoriesByWorkbasketsAndStates( List<MonitorQueryItem> getTaskCountOfCategoriesByWorkbasketsAndStates(
@Param("workbaskets") List<Workbasket> workbaskets, @Param("workbaskets") List<Workbasket> workbaskets,
@Param("states") List<TaskState> states); @Param("states") List<TaskState> states,
@Param("categories") List<String> categories);
@Select("<script>" @Select("<script>"
+ "<if test=\"_databaseId == 'db2'\">SELECT CLASSIFICATION_KEY, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP)) as AGE_IN_DAYS, COUNT(*) as NUMBER_OF_TASKS</if> " + "<if test=\"_databaseId == 'db2'\">SELECT CLASSIFICATION_KEY, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP)) as AGE_IN_DAYS, COUNT(*) as NUMBER_OF_TASKS</if> "
@ -60,6 +64,7 @@ public interface TaskMonitorMapper {
+ "FROM TASK " + "FROM TASK "
+ "WHERE WORKBASKET_KEY IN (<foreach collection='workbaskets' item='workbasket' separator=','>#{workbasket.key}</foreach>) " + "WHERE WORKBASKET_KEY IN (<foreach collection='workbaskets' item='workbasket' separator=','>#{workbasket.key}</foreach>) "
+ "AND STATE IN (<foreach collection='states' item='state' separator=','>#{state}</foreach>) " + "AND STATE IN (<foreach collection='states' item='state' separator=','>#{state}</foreach>) "
+ "AND CLASSIFICATION_CATEGORY IN (<foreach collection='categories' item='category' separator=','>#{category}</foreach>) "
+ "AND DUE IS NOT NULL " + "AND DUE IS NOT NULL "
+ "<if test=\"_databaseId == 'db2'\">GROUP BY CLASSIFICATION_KEY, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP))</if> " + "<if test=\"_databaseId == 'db2'\">GROUP BY CLASSIFICATION_KEY, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP))</if> "
+ "<if test=\"_databaseId == 'h2'\">GROUP BY CLASSIFICATION_KEY, DATEDIFF('DAY', CURRENT_TIMESTAMP, DUE)</if> " + "<if test=\"_databaseId == 'h2'\">GROUP BY CLASSIFICATION_KEY, DATEDIFF('DAY', CURRENT_TIMESTAMP, DUE)</if> "
@ -70,14 +75,16 @@ public interface TaskMonitorMapper {
@Result(column = "NUMBER_OF_TASKS", property = "numberOfTasks") }) @Result(column = "NUMBER_OF_TASKS", property = "numberOfTasks") })
List<MonitorQueryItem> getTaskCountOfClassificationsByWorkbasketsAndStates( List<MonitorQueryItem> getTaskCountOfClassificationsByWorkbasketsAndStates(
@Param("workbaskets") List<Workbasket> workbaskets, @Param("workbaskets") List<Workbasket> workbaskets,
@Param("states") List<TaskState> states); @Param("states") List<TaskState> states,
@Param("categories") List<String> categories);
@Select("<script>" @Select("<script>"
+ "<if test=\"_databaseId == 'db2'\">SELECT T.CLASSIFICATION_KEY as TASK_CLASSIFICATION_KEY, A.CLASSIFICATION_KEY as ATTACHMENT_CLASSIFICATION_KEY, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP)) as AGE_IN_DAYS, COUNT(*) as NUMBER_OF_TASKS</if> " + "<if test=\"_databaseId == 'db2'\">SELECT T.CLASSIFICATION_KEY as TASK_CLASSIFICATION_KEY, A.CLASSIFICATION_KEY as ATTACHMENT_CLASSIFICATION_KEY, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP)) as AGE_IN_DAYS, COUNT(*) as NUMBER_OF_TASKS</if> "
+ "<if test=\"_databaseId == 'h2'\">SELECT T.CLASSIFICATION_KEY as TASK_CLASSIFICATION_KEY, A.CLASSIFICATION_KEY as ATTACHMENT_CLASSIFICATION_KEY, DATEDIFF('DAY', CURRENT_TIMESTAMP, DUE) as AGE_IN_DAYS, COUNT(*) as NUMBER_OF_TASKS</if> " + "<if test=\"_databaseId == 'h2'\">SELECT T.CLASSIFICATION_KEY as TASK_CLASSIFICATION_KEY, A.CLASSIFICATION_KEY as ATTACHMENT_CLASSIFICATION_KEY, DATEDIFF('DAY', CURRENT_TIMESTAMP, DUE) as AGE_IN_DAYS, COUNT(*) as NUMBER_OF_TASKS</if> "
+ "FROM TASK AS T LEFT JOIN ATTACHMENT AS A ON T.ID = A.TASK_ID " + "FROM TASK AS T LEFT JOIN ATTACHMENT AS A ON T.ID = A.TASK_ID "
+ "WHERE WORKBASKET_KEY IN (<foreach collection='workbaskets' item='workbasket' separator=','>#{workbasket.key}</foreach>) " + "WHERE T.WORKBASKET_KEY IN (<foreach collection='workbaskets' item='workbasket' separator=','>#{workbasket.key}</foreach>) "
+ "AND STATE IN (<foreach collection='states' item='state' separator=','>#{state}</foreach>) " + "AND STATE IN (<foreach collection='states' item='state' separator=','>#{state}</foreach>) "
+ "AND CLASSIFICATION_CATEGORY IN (<foreach collection='categories' item='category' separator=','>#{category}</foreach>) "
+ "AND DUE IS NOT NULL " + "AND DUE IS NOT NULL "
+ "<if test=\"_databaseId == 'db2'\">GROUP BY T.CLASSIFICATION_KEY, A.CLASSIFICATION_KEY, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP))</if> " + "<if test=\"_databaseId == 'db2'\">GROUP BY T.CLASSIFICATION_KEY, A.CLASSIFICATION_KEY, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP))</if> "
+ "<if test=\"_databaseId == 'h2'\">GROUP BY T.CLASSIFICATION_KEY, A.CLASSIFICATION_KEY, DATEDIFF('DAY', CURRENT_TIMESTAMP, DUE)</if> " + "<if test=\"_databaseId == 'h2'\">GROUP BY T.CLASSIFICATION_KEY, A.CLASSIFICATION_KEY, DATEDIFF('DAY', CURRENT_TIMESTAMP, DUE)</if> "
@ -89,7 +96,8 @@ public interface TaskMonitorMapper {
@Result(column = "NUMBER_OF_TASKS", property = "numberOfTasks") }) @Result(column = "NUMBER_OF_TASKS", property = "numberOfTasks") })
List<DetailedMonitorQueryItem> getTaskCountOfDetailedClassificationsByWorkbasketsAndStates( List<DetailedMonitorQueryItem> getTaskCountOfDetailedClassificationsByWorkbasketsAndStates(
@Param("workbaskets") List<Workbasket> workbaskets, @Param("workbaskets") List<Workbasket> workbaskets,
@Param("states") List<TaskState> states); @Param("states") List<TaskState> states,
@Param("categories") List<String> categories);
@Select("<script>" @Select("<script>"
+ "<if test=\"_databaseId == 'db2'\">SELECT ${customField} as CUSTOM_FIELD, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP)) as AGE_IN_DAYS, COUNT(*) as NUMBER_OF_TASKS</if> " + "<if test=\"_databaseId == 'db2'\">SELECT ${customField} as CUSTOM_FIELD, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP)) as AGE_IN_DAYS, COUNT(*) as NUMBER_OF_TASKS</if> "
@ -97,6 +105,7 @@ public interface TaskMonitorMapper {
+ "FROM TASK " + "FROM TASK "
+ "WHERE WORKBASKET_KEY IN (<foreach collection='workbaskets' item='workbasket' separator=','>#{workbasket.key}</foreach>) " + "WHERE WORKBASKET_KEY IN (<foreach collection='workbaskets' item='workbasket' separator=','>#{workbasket.key}</foreach>) "
+ "AND STATE IN (<foreach collection='states' item='state' separator=','>#{state}</foreach>) " + "AND STATE IN (<foreach collection='states' item='state' separator=','>#{state}</foreach>) "
+ "AND CLASSIFICATION_CATEGORY IN (<foreach collection='categories' item='category' separator=','>#{category}</foreach>) "
+ "AND DUE IS NOT NULL " + "AND DUE IS NOT NULL "
+ "AND ${customField} IS NOT NULL " + "AND ${customField} IS NOT NULL "
+ "<if test=\"_databaseId == 'db2'\">GROUP BY ${customField}, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP))</if> " + "<if test=\"_databaseId == 'db2'\">GROUP BY ${customField}, (DAYS(DUE) - DAYS(CURRENT_TIMESTAMP))</if> "
@ -109,6 +118,7 @@ public interface TaskMonitorMapper {
List<MonitorQueryItem> getTaskCountOfCustomFieldValuesByWorkbasketsAndStatesAndCustomField( List<MonitorQueryItem> getTaskCountOfCustomFieldValuesByWorkbasketsAndStatesAndCustomField(
@Param("workbaskets") List<Workbasket> workbaskets, @Param("workbaskets") List<Workbasket> workbaskets,
@Param("states") List<TaskState> states, @Param("states") List<TaskState> states,
@Param("categories") List<String> categories,
@Param("customField") CustomField customField); @Param("customField") CustomField customField);
} }

View File

@ -24,9 +24,11 @@ import pro.taskana.Workbasket;
import pro.taskana.WorkbasketService; import pro.taskana.WorkbasketService;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.configuration.TaskanaEngineConfiguration;
import pro.taskana.database.TestDataGenerator; import pro.taskana.database.TestDataGenerator;
import pro.taskana.exceptions.ClassificationNotFoundException;
import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.exceptions.WorkbasketNotFoundException; import pro.taskana.exceptions.WorkbasketNotFoundException;
import pro.taskana.impl.Report; import pro.taskana.impl.Report;
import pro.taskana.impl.ReportLineItem;
import pro.taskana.impl.ReportLineItemDefinition; import pro.taskana.impl.ReportLineItemDefinition;
import pro.taskana.impl.TaskState; import pro.taskana.impl.TaskState;
import pro.taskana.impl.TaskanaEngineImpl; import pro.taskana.impl.TaskanaEngineImpl;
@ -73,7 +75,7 @@ public class ProvideCategoryReportAccTest {
List<Workbasket> workbaskets = getListOfWorkbaskets(); List<Workbasket> workbaskets = getListOfWorkbaskets();
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED); List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL"); List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL");
Report report = taskMonitorService.getCategoryReport(workbaskets, states); Report report = taskMonitorService.getCategoryReport(workbaskets, states, categories);
assertNotNull(report); assertNotNull(report);
assertEquals(33, report.getReportLines().get(categories.get(0)).getTotalNumberOfTasks()); assertEquals(33, report.getReportLines().get(categories.get(0)).getTotalNumberOfTasks());
@ -98,7 +100,8 @@ public class ProvideCategoryReportAccTest {
List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL"); List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL");
List<ReportLineItemDefinition> reportLineItemDefinitions = getListOfReportLineItemDefinitions(); List<ReportLineItemDefinition> reportLineItemDefinitions = getListOfReportLineItemDefinitions();
Report report = taskMonitorService.getCategoryReport(workbaskets, states, reportLineItemDefinitions); Report report = taskMonitorService.getCategoryReport(workbaskets, states, categories,
reportLineItemDefinitions);
int sumLineCount = report.getSumLine().getLineItems().get(0).getNumberOfTasks() int sumLineCount = report.getSumLine().getLineItems().get(0).getNumberOfTasks()
+ report.getSumLine().getLineItems().get(1).getNumberOfTasks() + report.getSumLine().getLineItems().get(1).getNumberOfTasks()
@ -130,6 +133,38 @@ public class ProvideCategoryReportAccTest {
} }
@WithAccessId(userName = "monitor_user_1")
@Test
public void testEachItemOfCategoryReportWithCategoryFilter()
throws WorkbasketNotFoundException, NotAuthorizedException, ClassificationNotFoundException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<Workbasket> workbaskets = getListOfWorkbaskets();
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<String> categories = Arrays.asList("AUTOMATIC", "MANUAL");
List<ReportLineItemDefinition> reportLineItemDefinitions = getShortListOfReportLineItemDefinitions();
Report report = taskMonitorService.getCategoryReport(workbaskets, states, categories,
reportLineItemDefinitions);
List<ReportLineItem> line1 = report.getReportLines().get("AUTOMATIC").getLineItems();
assertEquals(2, line1.get(0).getNumberOfTasks());
assertEquals(1, line1.get(1).getNumberOfTasks());
assertEquals(0, line1.get(2).getNumberOfTasks());
assertEquals(1, line1.get(3).getNumberOfTasks());
assertEquals(3, line1.get(4).getNumberOfTasks());
List<ReportLineItem> line2 = report.getReportLines().get("MANUAL").getLineItems();
assertEquals(2, line2.get(0).getNumberOfTasks());
assertEquals(2, line2.get(1).getNumberOfTasks());
assertEquals(2, line2.get(2).getNumberOfTasks());
assertEquals(0, line2.get(3).getNumberOfTasks());
assertEquals(4, line2.get(4).getNumberOfTasks());
assertEquals(2, report.getReportLines().size());
}
private List<Workbasket> getListOfWorkbaskets() throws WorkbasketNotFoundException, NotAuthorizedException { private List<Workbasket> getListOfWorkbaskets() throws WorkbasketNotFoundException, NotAuthorizedException {
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService(); WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
@ -159,6 +194,16 @@ public class ProvideCategoryReportAccTest {
return reportLineItemDefinitions; return reportLineItemDefinitions;
} }
private List<ReportLineItemDefinition> getShortListOfReportLineItemDefinitions() {
List<ReportLineItemDefinition> reportLineItemDefinitions = new ArrayList<>();
reportLineItemDefinitions.add(new ReportLineItemDefinition(Integer.MIN_VALUE, -6));
reportLineItemDefinitions.add(new ReportLineItemDefinition(-5, -1));
reportLineItemDefinitions.add(new ReportLineItemDefinition(0));
reportLineItemDefinitions.add(new ReportLineItemDefinition(1, 5));
reportLineItemDefinitions.add(new ReportLineItemDefinition(6, Integer.MAX_VALUE));
return reportLineItemDefinitions;
}
@AfterClass @AfterClass
public static void cleanUpClass() { public static void cleanUpClass() {
FileUtils.deleteRecursive("~/data", true); FileUtils.deleteRecursive("~/data", true);

View File

@ -17,8 +17,6 @@ import org.junit.BeforeClass;
import org.junit.Test; import org.junit.Test;
import org.junit.runner.RunWith; import org.junit.runner.RunWith;
import pro.taskana.Classification;
import pro.taskana.ClassificationService;
import pro.taskana.TaskMonitorService; import pro.taskana.TaskMonitorService;
import pro.taskana.TaskanaEngine; import pro.taskana.TaskanaEngine;
import pro.taskana.TaskanaEngine.ConnectionManagementMode; import pro.taskana.TaskanaEngine.ConnectionManagementMode;
@ -29,7 +27,6 @@ import pro.taskana.database.TestDataGenerator;
import pro.taskana.exceptions.ClassificationNotFoundException; import pro.taskana.exceptions.ClassificationNotFoundException;
import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.exceptions.WorkbasketNotFoundException; import pro.taskana.exceptions.WorkbasketNotFoundException;
import pro.taskana.impl.ClassificationImpl;
import pro.taskana.impl.Report; import pro.taskana.impl.Report;
import pro.taskana.impl.ReportLineItem; import pro.taskana.impl.ReportLineItem;
import pro.taskana.impl.ReportLineItemDefinition; import pro.taskana.impl.ReportLineItemDefinition;
@ -76,22 +73,22 @@ public class ProvideClassificationReportAccTest {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService(); TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<Workbasket> workbaskets = getListOfWorkbaskets(); List<Workbasket> workbaskets = getListOfWorkbaskets();
List<Classification> classifications = getListOfClassifications();
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED); List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL");
Report report = taskMonitorService.getClassificationReport(workbaskets, states); Report report = taskMonitorService.getClassificationReport(workbaskets, states, categories);
assertNotNull(report); assertNotNull(report);
assertEquals(10, report.getReportLines().get(classifications.get(0).getKey()).getTotalNumberOfTasks()); assertEquals(10, report.getReportLines().get("L10000").getTotalNumberOfTasks());
assertEquals(10, report.getReportLines().get(classifications.get(1).getKey()).getTotalNumberOfTasks()); assertEquals(10, report.getReportLines().get("L20000").getTotalNumberOfTasks());
assertEquals(7, report.getReportLines().get(classifications.get(2).getKey()).getTotalNumberOfTasks()); assertEquals(7, report.getReportLines().get("L30000").getTotalNumberOfTasks());
assertEquals(10, report.getReportLines().get(classifications.get(3).getKey()).getTotalNumberOfTasks()); assertEquals(10, report.getReportLines().get("L40000").getTotalNumberOfTasks());
assertEquals(13, report.getReportLines().get(classifications.get(4).getKey()).getTotalNumberOfTasks()); assertEquals(13, report.getReportLines().get("L50000").getTotalNumberOfTasks());
assertEquals(0, report.getReportLines().get(classifications.get(0).getKey()).getLineItems().size()); assertEquals(0, report.getReportLines().get("L10000").getLineItems().size());
assertEquals(0, report.getReportLines().get(classifications.get(1).getKey()).getLineItems().size()); assertEquals(0, report.getReportLines().get("L20000").getLineItems().size());
assertEquals(0, report.getReportLines().get(classifications.get(2).getKey()).getLineItems().size()); assertEquals(0, report.getReportLines().get("L30000").getLineItems().size());
assertEquals(0, report.getReportLines().get(classifications.get(3).getKey()).getLineItems().size()); assertEquals(0, report.getReportLines().get("L40000").getLineItems().size());
assertEquals(0, report.getReportLines().get(classifications.get(4).getKey()).getLineItems().size()); assertEquals(0, report.getReportLines().get("L50000").getLineItems().size());
assertEquals(50, report.getSumLine().getTotalNumberOfTasks()); assertEquals(50, report.getSumLine().getTotalNumberOfTasks());
} }
@ -104,10 +101,11 @@ public class ProvideClassificationReportAccTest {
List<Workbasket> workbaskets = getListOfWorkbaskets(); List<Workbasket> workbaskets = getListOfWorkbaskets();
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED); List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<Classification> classifications = getListOfClassifications(); List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL");
List<ReportLineItemDefinition> reportLineItemDefinitions = getListOfReportLineItemDefinitions(); List<ReportLineItemDefinition> reportLineItemDefinitions = getListOfReportLineItemDefinitions();
Report report = taskMonitorService.getClassificationReport(workbaskets, states, reportLineItemDefinitions); Report report = taskMonitorService.getClassificationReport(workbaskets, states, categories,
reportLineItemDefinitions);
int sumLineCount = report.getSumLine().getLineItems().get(0).getNumberOfTasks() int sumLineCount = report.getSumLine().getLineItems().get(0).getNumberOfTasks()
+ report.getSumLine().getLineItems().get(1).getNumberOfTasks() + report.getSumLine().getLineItems().get(1).getNumberOfTasks()
@ -121,11 +119,11 @@ public class ProvideClassificationReportAccTest {
assertNotNull(report); assertNotNull(report);
assertEquals(10, report.getReportLines().get(classifications.get(0).getKey()).getTotalNumberOfTasks()); assertEquals(10, report.getReportLines().get("L10000").getTotalNumberOfTasks());
assertEquals(10, report.getReportLines().get(classifications.get(1).getKey()).getTotalNumberOfTasks()); assertEquals(10, report.getReportLines().get("L20000").getTotalNumberOfTasks());
assertEquals(7, report.getReportLines().get(classifications.get(2).getKey()).getTotalNumberOfTasks()); assertEquals(7, report.getReportLines().get("L30000").getTotalNumberOfTasks());
assertEquals(10, report.getReportLines().get(classifications.get(3).getKey()).getTotalNumberOfTasks()); assertEquals(10, report.getReportLines().get("L40000").getTotalNumberOfTasks());
assertEquals(13, report.getReportLines().get(classifications.get(4).getKey()).getTotalNumberOfTasks()); assertEquals(13, report.getReportLines().get("L50000").getTotalNumberOfTasks());
assertEquals(10, report.getSumLine().getLineItems().get(0).getNumberOfTasks()); assertEquals(10, report.getSumLine().getLineItems().get(0).getNumberOfTasks());
assertEquals(9, report.getSumLine().getLineItems().get(1).getNumberOfTasks()); assertEquals(9, report.getSumLine().getLineItems().get(1).getNumberOfTasks());
@ -149,40 +147,41 @@ public class ProvideClassificationReportAccTest {
List<Workbasket> workbaskets = getListOfWorkbaskets(); List<Workbasket> workbaskets = getListOfWorkbaskets();
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED); List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<Classification> classifications = getListOfClassifications(); List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL");
List<ReportLineItemDefinition> reportLineItemDefinitions = getShortListOfReportLineItemDefinitions(); List<ReportLineItemDefinition> reportLineItemDefinitions = getShortListOfReportLineItemDefinitions();
Report report = taskMonitorService.getClassificationReport(workbaskets, states, reportLineItemDefinitions); Report report = taskMonitorService.getClassificationReport(workbaskets, states, categories,
reportLineItemDefinitions);
List<ReportLineItem> line1 = report.getReportLines().get(classifications.get(0).getKey()).getLineItems(); List<ReportLineItem> line1 = report.getReportLines().get("L10000").getLineItems();
assertEquals(7, line1.get(0).getNumberOfTasks()); assertEquals(7, line1.get(0).getNumberOfTasks());
assertEquals(2, line1.get(1).getNumberOfTasks()); assertEquals(2, line1.get(1).getNumberOfTasks());
assertEquals(1, line1.get(2).getNumberOfTasks()); assertEquals(1, line1.get(2).getNumberOfTasks());
assertEquals(0, line1.get(3).getNumberOfTasks()); assertEquals(0, line1.get(3).getNumberOfTasks());
assertEquals(0, line1.get(4).getNumberOfTasks()); assertEquals(0, line1.get(4).getNumberOfTasks());
List<ReportLineItem> line2 = report.getReportLines().get(classifications.get(1).getKey()).getLineItems(); List<ReportLineItem> line2 = report.getReportLines().get("L20000").getLineItems();
assertEquals(5, line2.get(0).getNumberOfTasks()); assertEquals(5, line2.get(0).getNumberOfTasks());
assertEquals(3, line2.get(1).getNumberOfTasks()); assertEquals(3, line2.get(1).getNumberOfTasks());
assertEquals(1, line2.get(2).getNumberOfTasks()); assertEquals(1, line2.get(2).getNumberOfTasks());
assertEquals(1, line2.get(3).getNumberOfTasks()); assertEquals(1, line2.get(3).getNumberOfTasks());
assertEquals(0, line2.get(4).getNumberOfTasks()); assertEquals(0, line2.get(4).getNumberOfTasks());
List<ReportLineItem> line3 = report.getReportLines().get(classifications.get(2).getKey()).getLineItems(); List<ReportLineItem> line3 = report.getReportLines().get("L30000").getLineItems();
assertEquals(2, line3.get(0).getNumberOfTasks()); assertEquals(2, line3.get(0).getNumberOfTasks());
assertEquals(1, line3.get(1).getNumberOfTasks()); assertEquals(1, line3.get(1).getNumberOfTasks());
assertEquals(0, line3.get(2).getNumberOfTasks()); assertEquals(0, line3.get(2).getNumberOfTasks());
assertEquals(1, line3.get(3).getNumberOfTasks()); assertEquals(1, line3.get(3).getNumberOfTasks());
assertEquals(3, line3.get(4).getNumberOfTasks()); assertEquals(3, line3.get(4).getNumberOfTasks());
List<ReportLineItem> line4 = report.getReportLines().get(classifications.get(3).getKey()).getLineItems(); List<ReportLineItem> line4 = report.getReportLines().get("L40000").getLineItems();
assertEquals(2, line4.get(0).getNumberOfTasks()); assertEquals(2, line4.get(0).getNumberOfTasks());
assertEquals(2, line4.get(1).getNumberOfTasks()); assertEquals(2, line4.get(1).getNumberOfTasks());
assertEquals(2, line4.get(2).getNumberOfTasks()); assertEquals(2, line4.get(2).getNumberOfTasks());
assertEquals(0, line4.get(3).getNumberOfTasks()); assertEquals(0, line4.get(3).getNumberOfTasks());
assertEquals(4, line4.get(4).getNumberOfTasks()); assertEquals(4, line4.get(4).getNumberOfTasks());
List<ReportLineItem> line5 = report.getReportLines().get(classifications.get(4).getKey()).getLineItems(); List<ReportLineItem> line5 = report.getReportLines().get("L50000").getLineItems();
assertEquals(3, line5.get(0).getNumberOfTasks()); assertEquals(3, line5.get(0).getNumberOfTasks());
assertEquals(3, line5.get(1).getNumberOfTasks()); assertEquals(3, line5.get(1).getNumberOfTasks());
assertEquals(0, line5.get(2).getNumberOfTasks()); assertEquals(0, line5.get(2).getNumberOfTasks());
@ -190,6 +189,38 @@ public class ProvideClassificationReportAccTest {
assertEquals(2, line5.get(4).getNumberOfTasks()); assertEquals(2, line5.get(4).getNumberOfTasks());
} }
@WithAccessId(userName = "monitor_user_1")
@Test
public void testEachItemOfClassificationReportWithCategoryFilter()
throws WorkbasketNotFoundException, NotAuthorizedException, ClassificationNotFoundException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<Workbasket> workbaskets = getListOfWorkbaskets();
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<String> categories = Arrays.asList("AUTOMATIC", "MANUAL");
List<ReportLineItemDefinition> reportLineItemDefinitions = getShortListOfReportLineItemDefinitions();
Report report = taskMonitorService.getClassificationReport(workbaskets, states, categories,
reportLineItemDefinitions);
List<ReportLineItem> line1 = report.getReportLines().get("L30000").getLineItems();
assertEquals(2, line1.get(0).getNumberOfTasks());
assertEquals(1, line1.get(1).getNumberOfTasks());
assertEquals(0, line1.get(2).getNumberOfTasks());
assertEquals(1, line1.get(3).getNumberOfTasks());
assertEquals(3, line1.get(4).getNumberOfTasks());
List<ReportLineItem> line2 = report.getReportLines().get("L40000").getLineItems();
assertEquals(2, line2.get(0).getNumberOfTasks());
assertEquals(2, line2.get(1).getNumberOfTasks());
assertEquals(2, line2.get(2).getNumberOfTasks());
assertEquals(0, line2.get(3).getNumberOfTasks());
assertEquals(4, line2.get(4).getNumberOfTasks());
assertEquals(2, report.getReportLines().size());
}
private List<Workbasket> getListOfWorkbaskets() throws WorkbasketNotFoundException, NotAuthorizedException { private List<Workbasket> getListOfWorkbaskets() throws WorkbasketNotFoundException, NotAuthorizedException {
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService(); WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
@ -205,16 +236,6 @@ public class ProvideClassificationReportAccTest {
return Arrays.asList(workbasket1, workbasket2, workbasket3, workbasket4); return Arrays.asList(workbasket1, workbasket2, workbasket3, workbasket4);
} }
private List<Classification> getListOfClassifications() throws ClassificationNotFoundException {
ClassificationService classificationService = taskanaEngine.getClassificationService();
ClassificationImpl c1 = (ClassificationImpl) classificationService.getClassification("L10000", "DOMAIN_A");
ClassificationImpl c2 = (ClassificationImpl) classificationService.getClassification("L20000", "DOMAIN_A");
ClassificationImpl c3 = (ClassificationImpl) classificationService.getClassification("L30000", "DOMAIN_A");
ClassificationImpl c4 = (ClassificationImpl) classificationService.getClassification("L40000", "DOMAIN_A");
ClassificationImpl c5 = (ClassificationImpl) classificationService.getClassification("L50000", "DOMAIN_A");
return Arrays.asList(c1, c2, c3, c4, c5);
}
private List<ReportLineItemDefinition> getListOfReportLineItemDefinitions() { private List<ReportLineItemDefinition> getListOfReportLineItemDefinitions() {
List<ReportLineItemDefinition> reportLineItemDefinitions = new ArrayList<>(); List<ReportLineItemDefinition> reportLineItemDefinitions = new ArrayList<>();
reportLineItemDefinitions.add(new ReportLineItemDefinition(Integer.MIN_VALUE, -11)); reportLineItemDefinitions.add(new ReportLineItemDefinition(Integer.MIN_VALUE, -11));

View File

@ -75,13 +75,14 @@ public class ProvideCustomFieldValueReportAccTest {
List<Workbasket> workbaskets = getListOfWorkbaskets(); List<Workbasket> workbaskets = getListOfWorkbaskets();
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED); List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL");
CustomField customField = CustomField.CUSTOM_1; CustomField customField = CustomField.CUSTOM_1;
String customFieldValue1 = "Geschaeftsstelle A"; String customFieldValue1 = "Geschaeftsstelle A";
String customFieldValue2 = "Geschaeftsstelle B"; String customFieldValue2 = "Geschaeftsstelle B";
String customFieldValue3 = "Geschaeftsstelle C"; String customFieldValue3 = "Geschaeftsstelle C";
Report report = taskMonitorService.getCustomFieldValueReport(workbaskets, states, customField); Report report = taskMonitorService.getCustomFieldValueReport(workbaskets, states, categories, customField);
assertNotNull(report); assertNotNull(report);
assertEquals(25, report.getReportLines().get(customFieldValue1).getTotalNumberOfTasks()); assertEquals(25, report.getReportLines().get(customFieldValue1).getTotalNumberOfTasks());
@ -103,12 +104,13 @@ public class ProvideCustomFieldValueReportAccTest {
List<Workbasket> workbaskets = getListOfWorkbaskets(); List<Workbasket> workbaskets = getListOfWorkbaskets();
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED); List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL");
CustomField customField = CustomField.CUSTOM_2; CustomField customField = CustomField.CUSTOM_2;
String customFieldValue1 = "Vollkasko"; String customFieldValue1 = "Vollkasko";
String customFieldValue2 = "Teilkasko"; String customFieldValue2 = "Teilkasko";
Report report = taskMonitorService.getCustomFieldValueReport(workbaskets, states, customField); Report report = taskMonitorService.getCustomFieldValueReport(workbaskets, states, categories, customField);
assertNotNull(report); assertNotNull(report);
assertEquals(21, report.getReportLines().get(customFieldValue1).getTotalNumberOfTasks()); assertEquals(21, report.getReportLines().get(customFieldValue1).getTotalNumberOfTasks());
assertEquals(29, report.getReportLines().get(customFieldValue2).getTotalNumberOfTasks()); assertEquals(29, report.getReportLines().get(customFieldValue2).getTotalNumberOfTasks());
@ -129,6 +131,7 @@ public class ProvideCustomFieldValueReportAccTest {
List<Workbasket> workbaskets = getListOfWorkbaskets(); List<Workbasket> workbaskets = getListOfWorkbaskets();
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED); List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL");
List<ReportLineItemDefinition> reportLineItemDefinitions = getListOfReportLineItemDefinitions(); List<ReportLineItemDefinition> reportLineItemDefinitions = getListOfReportLineItemDefinitions();
@ -137,7 +140,7 @@ public class ProvideCustomFieldValueReportAccTest {
String customFieldValue2 = "Geschaeftsstelle B"; String customFieldValue2 = "Geschaeftsstelle B";
String customFieldValue3 = "Geschaeftsstelle C"; String customFieldValue3 = "Geschaeftsstelle C";
Report report = taskMonitorService.getCustomFieldValueReport(workbaskets, states, customField, Report report = taskMonitorService.getCustomFieldValueReport(workbaskets, states, categories, customField,
reportLineItemDefinitions); reportLineItemDefinitions);
assertNotNull(report); assertNotNull(report);
@ -169,6 +172,7 @@ public class ProvideCustomFieldValueReportAccTest {
List<Workbasket> workbaskets = getListOfWorkbaskets(); List<Workbasket> workbaskets = getListOfWorkbaskets();
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED); List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL");
List<ReportLineItemDefinition> reportLineItemDefinitions = getListOfReportLineItemDefinitions(); List<ReportLineItemDefinition> reportLineItemDefinitions = getListOfReportLineItemDefinitions();
@ -177,7 +181,7 @@ public class ProvideCustomFieldValueReportAccTest {
String customFieldValue2 = "Geschaeftsstelle B"; String customFieldValue2 = "Geschaeftsstelle B";
String customFieldValue3 = "Geschaeftsstelle C"; String customFieldValue3 = "Geschaeftsstelle C";
Report report = taskMonitorService.getCustomFieldValueReport(workbaskets, states, customField, Report report = taskMonitorService.getCustomFieldValueReport(workbaskets, states, categories, customField,
reportLineItemDefinitions, false); reportLineItemDefinitions, false);
assertNotNull(report); assertNotNull(report);
@ -209,6 +213,7 @@ public class ProvideCustomFieldValueReportAccTest {
List<Workbasket> workbaskets = getListOfWorkbaskets(); List<Workbasket> workbaskets = getListOfWorkbaskets();
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED); List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL");
List<ReportLineItemDefinition> reportLineItemDefinitions = getShortListOfReportLineItemDefinitions(); List<ReportLineItemDefinition> reportLineItemDefinitions = getShortListOfReportLineItemDefinitions();
CustomField customField = CustomField.CUSTOM_1; CustomField customField = CustomField.CUSTOM_1;
@ -216,7 +221,7 @@ public class ProvideCustomFieldValueReportAccTest {
String customFieldValue2 = "Geschaeftsstelle B"; String customFieldValue2 = "Geschaeftsstelle B";
String customFieldValue3 = "Geschaeftsstelle C"; String customFieldValue3 = "Geschaeftsstelle C";
Report report = taskMonitorService.getCustomFieldValueReport(workbaskets, states, customField, Report report = taskMonitorService.getCustomFieldValueReport(workbaskets, states, categories, customField,
reportLineItemDefinitions); reportLineItemDefinitions);
List<ReportLineItem> line1 = report.getReportLines().get(customFieldValue1).getLineItems(); List<ReportLineItem> line1 = report.getReportLines().get(customFieldValue1).getLineItems();
@ -241,6 +246,48 @@ public class ProvideCustomFieldValueReportAccTest {
assertEquals(6, line3.get(4).getNumberOfTasks()); assertEquals(6, line3.get(4).getNumberOfTasks());
} }
@WithAccessId(userName = "monitor_user_1")
@Test
public void testEachItemOfCustomFieldValueReportWithCategoryFilter()
throws WorkbasketNotFoundException, NotAuthorizedException, ClassificationNotFoundException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<Workbasket> workbaskets = getListOfWorkbaskets();
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<String> categories = Arrays.asList("AUTOMATIC", "MANUAL");
List<ReportLineItemDefinition> reportLineItemDefinitions = getShortListOfReportLineItemDefinitions();
CustomField customField = CustomField.CUSTOM_1;
String customFieldValue1 = "Geschaeftsstelle A";
String customFieldValue2 = "Geschaeftsstelle B";
String customFieldValue3 = "Geschaeftsstelle C";
Report report = taskMonitorService.getCustomFieldValueReport(workbaskets, states, categories, customField,
reportLineItemDefinitions);
List<ReportLineItem> line1 = report.getReportLines().get(customFieldValue1).getLineItems();
assertEquals(2, line1.get(0).getNumberOfTasks());
assertEquals(1, line1.get(1).getNumberOfTasks());
assertEquals(2, line1.get(2).getNumberOfTasks());
assertEquals(1, line1.get(3).getNumberOfTasks());
assertEquals(3, line1.get(4).getNumberOfTasks());
List<ReportLineItem> line2 = report.getReportLines().get(customFieldValue2).getLineItems();
assertEquals(2, line2.get(0).getNumberOfTasks());
assertEquals(0, line2.get(1).getNumberOfTasks());
assertEquals(0, line2.get(2).getNumberOfTasks());
assertEquals(0, line2.get(3).getNumberOfTasks());
assertEquals(0, line2.get(4).getNumberOfTasks());
List<ReportLineItem> line3 = report.getReportLines().get(customFieldValue3).getLineItems();
assertEquals(0, line3.get(0).getNumberOfTasks());
assertEquals(2, line3.get(1).getNumberOfTasks());
assertEquals(0, line3.get(2).getNumberOfTasks());
assertEquals(0, line3.get(3).getNumberOfTasks());
assertEquals(4, line3.get(4).getNumberOfTasks());
}
private List<Workbasket> getListOfWorkbaskets() throws WorkbasketNotFoundException, NotAuthorizedException { private List<Workbasket> getListOfWorkbaskets() throws WorkbasketNotFoundException, NotAuthorizedException {
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService(); WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();

View File

@ -75,8 +75,10 @@ public class ProvideDetailedClassificationReportAccTest {
List<Workbasket> workbaskets = getListOfWorkbaskets(); List<Workbasket> workbaskets = getListOfWorkbaskets();
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED); List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL");
DetailedClassificationReport report = taskMonitorService.getDetailedClassificationReport(workbaskets, states); DetailedClassificationReport report = taskMonitorService.getDetailedClassificationReport(workbaskets, states,
categories);
assertNotNull(report); assertNotNull(report);
@ -126,10 +128,11 @@ public class ProvideDetailedClassificationReportAccTest {
List<Workbasket> workbaskets = getListOfWorkbaskets(); List<Workbasket> workbaskets = getListOfWorkbaskets();
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED); List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL");
List<ReportLineItemDefinition> reportLineItemDefinitions = getListOfReportLineItemDefinitions(); List<ReportLineItemDefinition> reportLineItemDefinitions = getListOfReportLineItemDefinitions();
DetailedClassificationReport report = taskMonitorService.getDetailedClassificationReport(workbaskets, states, DetailedClassificationReport report = taskMonitorService.getDetailedClassificationReport(workbaskets, states,
reportLineItemDefinitions); categories, reportLineItemDefinitions);
assertNotNull(report); assertNotNull(report);
@ -160,11 +163,12 @@ public class ProvideDetailedClassificationReportAccTest {
List<Workbasket> workbaskets = getListOfWorkbaskets(); List<Workbasket> workbaskets = getListOfWorkbaskets();
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED); List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL");
List<ReportLineItemDefinition> reportLineItemDefinitions = getShortListOfReportLineItemDefinitions(); List<ReportLineItemDefinition> reportLineItemDefinitions = getShortListOfReportLineItemDefinitions();
DetailedClassificationReport report = taskMonitorService.getDetailedClassificationReport(workbaskets, states, DetailedClassificationReport report = taskMonitorService.getDetailedClassificationReport(workbaskets, states,
reportLineItemDefinitions); categories, reportLineItemDefinitions);
DetailedReportLine line1 = (DetailedReportLine) report.getReportLines().get("L10000"); DetailedReportLine line1 = (DetailedReportLine) report.getReportLines().get("L10000");
assertEquals(7, line1.getLineItems().get(0).getNumberOfTasks()); assertEquals(7, line1.getLineItems().get(0).getNumberOfTasks());
@ -265,6 +269,66 @@ public class ProvideDetailedClassificationReportAccTest {
assertEquals(2, detailedLineNoAttachment5.getLineItems().get(4).getNumberOfTasks()); assertEquals(2, detailedLineNoAttachment5.getLineItems().get(4).getNumberOfTasks());
} }
@WithAccessId(userName = "monitor_user_1")
@Test
public void testEachItemOfClassificationReportWithCategoryFilter()
throws WorkbasketNotFoundException, NotAuthorizedException, ClassificationNotFoundException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<Workbasket> workbaskets = getListOfWorkbaskets();
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<String> categories = Arrays.asList("AUTOMATIC", "MANUAL");
List<ReportLineItemDefinition> reportLineItemDefinitions = getShortListOfReportLineItemDefinitions();
DetailedClassificationReport report = taskMonitorService.getDetailedClassificationReport(workbaskets, states,
categories, reportLineItemDefinitions);
DetailedReportLine line1 = (DetailedReportLine) report.getReportLines().get("L30000");
assertEquals(2, line1.getLineItems().get(0).getNumberOfTasks());
assertEquals(1, line1.getLineItems().get(1).getNumberOfTasks());
assertEquals(0, line1.getLineItems().get(2).getNumberOfTasks());
assertEquals(1, line1.getLineItems().get(3).getNumberOfTasks());
assertEquals(3, line1.getLineItems().get(4).getNumberOfTasks());
ReportLine detailedLine1a = line1.getDetailLines().get("L33000");
assertEquals(0, detailedLine1a.getLineItems().get(0).getNumberOfTasks());
assertEquals(1, detailedLine1a.getLineItems().get(1).getNumberOfTasks());
assertEquals(0, detailedLine1a.getLineItems().get(2).getNumberOfTasks());
assertEquals(1, detailedLine1a.getLineItems().get(3).getNumberOfTasks());
assertEquals(1, detailedLine1a.getLineItems().get(4).getNumberOfTasks());
ReportLine detailedLine1b = line1.getDetailLines().get("L99000");
assertEquals(0, detailedLine1b.getLineItems().get(0).getNumberOfTasks());
assertEquals(0, detailedLine1b.getLineItems().get(1).getNumberOfTasks());
assertEquals(0, detailedLine1b.getLineItems().get(2).getNumberOfTasks());
assertEquals(0, detailedLine1b.getLineItems().get(3).getNumberOfTasks());
assertEquals(1, detailedLine1b.getLineItems().get(4).getNumberOfTasks());
ReportLine detailedLine1WithoutAttachment = line1.getDetailLines().get("N/A");
assertEquals(2, detailedLine1WithoutAttachment.getLineItems().get(0).getNumberOfTasks());
assertEquals(0, detailedLine1WithoutAttachment.getLineItems().get(1).getNumberOfTasks());
assertEquals(0, detailedLine1WithoutAttachment.getLineItems().get(2).getNumberOfTasks());
assertEquals(0, detailedLine1WithoutAttachment.getLineItems().get(3).getNumberOfTasks());
assertEquals(1, detailedLine1WithoutAttachment.getLineItems().get(4).getNumberOfTasks());
DetailedReportLine line2 = (DetailedReportLine) report.getReportLines().get("L40000");
assertEquals(2, line2.getLineItems().get(0).getNumberOfTasks());
assertEquals(2, line2.getLineItems().get(1).getNumberOfTasks());
assertEquals(2, line2.getLineItems().get(2).getNumberOfTasks());
assertEquals(0, line2.getLineItems().get(3).getNumberOfTasks());
assertEquals(4, line2.getLineItems().get(4).getNumberOfTasks());
ReportLine detailedLine2WithoutAttachment = line2.getDetailLines().get("N/A");
assertEquals(2, detailedLine2WithoutAttachment.getLineItems().get(0).getNumberOfTasks());
assertEquals(2, detailedLine2WithoutAttachment.getLineItems().get(1).getNumberOfTasks());
assertEquals(2, detailedLine2WithoutAttachment.getLineItems().get(2).getNumberOfTasks());
assertEquals(0, detailedLine2WithoutAttachment.getLineItems().get(3).getNumberOfTasks());
assertEquals(4, detailedLine2WithoutAttachment.getLineItems().get(4).getNumberOfTasks());
assertEquals(2, report.getReportLines().size());
}
private List<Workbasket> getListOfWorkbaskets() throws WorkbasketNotFoundException, NotAuthorizedException { private List<Workbasket> getListOfWorkbaskets() throws WorkbasketNotFoundException, NotAuthorizedException {
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService(); WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();

View File

@ -24,9 +24,11 @@ import pro.taskana.Workbasket;
import pro.taskana.WorkbasketService; import pro.taskana.WorkbasketService;
import pro.taskana.configuration.TaskanaEngineConfiguration; import pro.taskana.configuration.TaskanaEngineConfiguration;
import pro.taskana.database.TestDataGenerator; import pro.taskana.database.TestDataGenerator;
import pro.taskana.exceptions.ClassificationNotFoundException;
import pro.taskana.exceptions.NotAuthorizedException; import pro.taskana.exceptions.NotAuthorizedException;
import pro.taskana.exceptions.WorkbasketNotFoundException; import pro.taskana.exceptions.WorkbasketNotFoundException;
import pro.taskana.impl.Report; import pro.taskana.impl.Report;
import pro.taskana.impl.ReportLineItem;
import pro.taskana.impl.ReportLineItemDefinition; import pro.taskana.impl.ReportLineItemDefinition;
import pro.taskana.impl.TaskState; import pro.taskana.impl.TaskState;
import pro.taskana.impl.TaskanaEngineImpl; import pro.taskana.impl.TaskanaEngineImpl;
@ -72,7 +74,8 @@ public class ProvideWorkbasketLevelReportAccTest {
List<Workbasket> workbaskets = getListOfWorkbaskets(); List<Workbasket> workbaskets = getListOfWorkbaskets();
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED); List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
Report report = taskMonitorService.getWorkbasketLevelReport(workbaskets, states); List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL");
Report report = taskMonitorService.getWorkbasketLevelReport(workbaskets, states, categories);
assertNotNull(report); assertNotNull(report);
assertEquals(20, report.getReportLines().get(workbaskets.get(0).getKey()).getTotalNumberOfTasks()); assertEquals(20, report.getReportLines().get(workbaskets.get(0).getKey()).getTotalNumberOfTasks());
@ -91,9 +94,11 @@ public class ProvideWorkbasketLevelReportAccTest {
List<Workbasket> workbaskets = getListOfWorkbaskets(); List<Workbasket> workbaskets = getListOfWorkbaskets();
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED); List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL");
List<ReportLineItemDefinition> reportLineItemDefinitions = getListOfReportLineItemDefinitions(); List<ReportLineItemDefinition> reportLineItemDefinitions = getListOfReportLineItemDefinitions();
Report report = taskMonitorService.getWorkbasketLevelReport(workbaskets, states, reportLineItemDefinitions); Report report = taskMonitorService.getWorkbasketLevelReport(workbaskets, states, categories,
reportLineItemDefinitions);
int sumLineCount = report.getSumLine().getLineItems().get(0).getNumberOfTasks() int sumLineCount = report.getSumLine().getLineItems().get(0).getNumberOfTasks()
+ report.getSumLine().getLineItems().get(1).getNumberOfTasks() + report.getSumLine().getLineItems().get(1).getNumberOfTasks()
@ -137,12 +142,52 @@ public class ProvideWorkbasketLevelReportAccTest {
.getWorkbasket("WBI:000000000000000000000000000000000004"); .getWorkbasket("WBI:000000000000000000000000000000000004");
workbaskets.add(workbasket); workbaskets.add(workbasket);
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED); List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
Report report = taskMonitorService.getWorkbasketLevelReport(workbaskets, states); List<String> categories = Arrays.asList("EXTERN", "AUTOMATIC", "MANUAL");
Report report = taskMonitorService.getWorkbasketLevelReport(workbaskets, states, categories);
assertNotNull(report); assertNotNull(report);
assertEquals(0, report.getSumLine().getTotalNumberOfTasks()); assertEquals(0, report.getSumLine().getTotalNumberOfTasks());
} }
@WithAccessId(userName = "monitor_user_1")
@Test
public void testEachItemOfWorkbasketLevelReportWithCategoryFilter()
throws WorkbasketNotFoundException, NotAuthorizedException, ClassificationNotFoundException {
TaskMonitorService taskMonitorService = taskanaEngine.getTaskMonitorService();
List<Workbasket> workbaskets = getListOfWorkbaskets();
List<TaskState> states = Arrays.asList(TaskState.READY, TaskState.CLAIMED);
List<String> categories = Arrays.asList("AUTOMATIC", "MANUAL");
List<ReportLineItemDefinition> reportLineItemDefinitions = getShortListOfReportLineItemDefinitions();
Report report = taskMonitorService.getWorkbasketLevelReport(workbaskets, states, categories,
reportLineItemDefinitions);
List<ReportLineItem> line1 = report.getReportLines().get(workbaskets.get(0).getKey()).getLineItems();
assertEquals(3, line1.get(0).getNumberOfTasks());
assertEquals(1, line1.get(1).getNumberOfTasks());
assertEquals(1, line1.get(2).getNumberOfTasks());
assertEquals(1, line1.get(3).getNumberOfTasks());
assertEquals(2, line1.get(4).getNumberOfTasks());
List<ReportLineItem> line2 = report.getReportLines().get(workbaskets.get(1).getKey()).getLineItems();
assertEquals(1, line2.get(0).getNumberOfTasks());
assertEquals(1, line2.get(1).getNumberOfTasks());
assertEquals(1, line2.get(2).getNumberOfTasks());
assertEquals(0, line2.get(3).getNumberOfTasks());
assertEquals(1, line2.get(4).getNumberOfTasks());
List<ReportLineItem> line3 = report.getReportLines().get(workbaskets.get(2).getKey()).getLineItems();
assertEquals(0, line3.get(0).getNumberOfTasks());
assertEquals(1, line3.get(1).getNumberOfTasks());
assertEquals(0, line3.get(2).getNumberOfTasks());
assertEquals(0, line3.get(3).getNumberOfTasks());
assertEquals(4, line3.get(4).getNumberOfTasks());
assertEquals(3, report.getReportLines().size());
}
private List<Workbasket> getListOfWorkbaskets() throws WorkbasketNotFoundException, NotAuthorizedException { private List<Workbasket> getListOfWorkbaskets() throws WorkbasketNotFoundException, NotAuthorizedException {
WorkbasketService workbasketService = taskanaEngine.getWorkbasketService(); WorkbasketService workbasketService = taskanaEngine.getWorkbasketService();
@ -172,6 +217,16 @@ public class ProvideWorkbasketLevelReportAccTest {
return reportLineItemDefinitions; return reportLineItemDefinitions;
} }
private List<ReportLineItemDefinition> getShortListOfReportLineItemDefinitions() {
List<ReportLineItemDefinition> reportLineItemDefinitions = new ArrayList<>();
reportLineItemDefinitions.add(new ReportLineItemDefinition(Integer.MIN_VALUE, -6));
reportLineItemDefinitions.add(new ReportLineItemDefinition(-5, -1));
reportLineItemDefinitions.add(new ReportLineItemDefinition(0));
reportLineItemDefinitions.add(new ReportLineItemDefinition(1, 5));
reportLineItemDefinitions.add(new ReportLineItemDefinition(6, Integer.MAX_VALUE));
return reportLineItemDefinitions;
}
@AfterClass @AfterClass
public static void cleanUpClass() { public static void cleanUpClass() {
FileUtils.deleteRecursive("~/data", true); FileUtils.deleteRecursive("~/data", true);

View File

@ -68,6 +68,7 @@ public class TaskMonitorServiceImplTest {
workbasket.setKey("wb1"); workbasket.setKey("wb1");
List<Workbasket> workbaskets = Arrays.asList(workbasket); List<Workbasket> workbaskets = Arrays.asList(workbasket);
List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY); List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY);
List<String> categories = Arrays.asList("EXTERN");
List<MonitorQueryItem> expectedResult = new ArrayList<>(); List<MonitorQueryItem> expectedResult = new ArrayList<>();
MonitorQueryItem monitorQueryItem = new MonitorQueryItem(); MonitorQueryItem monitorQueryItem = new MonitorQueryItem();
@ -75,12 +76,12 @@ public class TaskMonitorServiceImplTest {
monitorQueryItem.setNumberOfTasks(1); monitorQueryItem.setNumberOfTasks(1);
expectedResult.add(monitorQueryItem); expectedResult.add(monitorQueryItem);
doReturn(expectedResult).when(taskMonitorMapperMock).getTaskCountOfWorkbasketsByWorkbasketsAndStates( doReturn(expectedResult).when(taskMonitorMapperMock).getTaskCountOfWorkbasketsByWorkbasketsAndStates(
workbaskets, states); workbaskets, states, categories);
Report actualResult = cut.getWorkbasketLevelReport(workbaskets, states); Report actualResult = cut.getWorkbasketLevelReport(workbaskets, states, categories);
verify(taskanaEngineImpl, times(1)).openConnection(); verify(taskanaEngineImpl, times(1)).openConnection();
verify(taskMonitorMapperMock, times(1)).getTaskCountOfWorkbasketsByWorkbasketsAndStates(any(), any()); verify(taskMonitorMapperMock, times(1)).getTaskCountOfWorkbasketsByWorkbasketsAndStates(any(), any(), any());
verify(taskanaEngineImpl, times(1)).returnConnection(); verify(taskanaEngineImpl, times(1)).returnConnection();
verifyNoMoreInteractions(taskanaEngineConfigurationMock, taskanaEngineMock, taskanaEngineImpl, verifyNoMoreInteractions(taskanaEngineConfigurationMock, taskanaEngineMock, taskanaEngineImpl,
taskMonitorMapperMock, objectReferenceMapperMock, workbasketServiceMock); taskMonitorMapperMock, objectReferenceMapperMock, workbasketServiceMock);
@ -97,6 +98,8 @@ public class TaskMonitorServiceImplTest {
workbasket.setKey("wb1"); workbasket.setKey("wb1");
List<Workbasket> workbaskets = Arrays.asList(workbasket); List<Workbasket> workbaskets = Arrays.asList(workbasket);
List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY); List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY);
List<String> categories = Arrays.asList("EXTERN");
List<ReportLineItemDefinition> reportLineItemDefinitions = Arrays.asList(new ReportLineItemDefinition(), List<ReportLineItemDefinition> reportLineItemDefinitions = Arrays.asList(new ReportLineItemDefinition(),
new ReportLineItemDefinition()); new ReportLineItemDefinition());
@ -107,12 +110,12 @@ public class TaskMonitorServiceImplTest {
monitorQueryItem.setNumberOfTasks(1); monitorQueryItem.setNumberOfTasks(1);
expectedResult.add(monitorQueryItem); expectedResult.add(monitorQueryItem);
doReturn(expectedResult).when(taskMonitorMapperMock).getTaskCountOfWorkbasketsByWorkbasketsAndStates( doReturn(expectedResult).when(taskMonitorMapperMock).getTaskCountOfWorkbasketsByWorkbasketsAndStates(
workbaskets, states); workbaskets, states, categories);
Report actualResult = cut.getWorkbasketLevelReport(workbaskets, states, reportLineItemDefinitions); Report actualResult = cut.getWorkbasketLevelReport(workbaskets, states, categories, reportLineItemDefinitions);
verify(taskanaEngineImpl, times(1)).openConnection(); verify(taskanaEngineImpl, times(1)).openConnection();
verify(taskMonitorMapperMock, times(1)).getTaskCountOfWorkbasketsByWorkbasketsAndStates(any(), any()); verify(taskMonitorMapperMock, times(1)).getTaskCountOfWorkbasketsByWorkbasketsAndStates(any(), any(), any());
verify(taskanaEngineImpl, times(1)).returnConnection(); verify(taskanaEngineImpl, times(1)).returnConnection();
verifyNoMoreInteractions(taskanaEngineConfigurationMock, taskanaEngineMock, taskanaEngineImpl, verifyNoMoreInteractions(taskanaEngineConfigurationMock, taskanaEngineMock, taskanaEngineImpl,
taskMonitorMapperMock, objectReferenceMapperMock, workbasketServiceMock); taskMonitorMapperMock, objectReferenceMapperMock, workbasketServiceMock);
@ -131,6 +134,7 @@ public class TaskMonitorServiceImplTest {
workbasket.setKey("wb1"); workbasket.setKey("wb1");
List<Workbasket> workbaskets = Arrays.asList(workbasket); List<Workbasket> workbaskets = Arrays.asList(workbasket);
List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY); List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY);
List<String> categories = Arrays.asList("EXTERN");
List<MonitorQueryItem> expectedResult = new ArrayList<>(); List<MonitorQueryItem> expectedResult = new ArrayList<>();
MonitorQueryItem monitorQueryItem = new MonitorQueryItem(); MonitorQueryItem monitorQueryItem = new MonitorQueryItem();
@ -138,12 +142,12 @@ public class TaskMonitorServiceImplTest {
monitorQueryItem.setNumberOfTasks(1); monitorQueryItem.setNumberOfTasks(1);
expectedResult.add(monitorQueryItem); expectedResult.add(monitorQueryItem);
doReturn(expectedResult).when(taskMonitorMapperMock).getTaskCountOfCategoriesByWorkbasketsAndStates( doReturn(expectedResult).when(taskMonitorMapperMock).getTaskCountOfCategoriesByWorkbasketsAndStates(
workbaskets, states); workbaskets, states, categories);
Report actualResult = cut.getCategoryReport(workbaskets, states); Report actualResult = cut.getCategoryReport(workbaskets, states, categories);
verify(taskanaEngineImpl, times(1)).openConnection(); verify(taskanaEngineImpl, times(1)).openConnection();
verify(taskMonitorMapperMock, times(1)).getTaskCountOfCategoriesByWorkbasketsAndStates(any(), any()); verify(taskMonitorMapperMock, times(1)).getTaskCountOfCategoriesByWorkbasketsAndStates(any(), any(), any());
verify(taskanaEngineImpl, times(1)).returnConnection(); verify(taskanaEngineImpl, times(1)).returnConnection();
verifyNoMoreInteractions(taskanaEngineConfigurationMock, taskanaEngineMock, taskanaEngineImpl, verifyNoMoreInteractions(taskanaEngineConfigurationMock, taskanaEngineMock, taskanaEngineImpl,
taskMonitorMapperMock, objectReferenceMapperMock, workbasketServiceMock); taskMonitorMapperMock, objectReferenceMapperMock, workbasketServiceMock);
@ -160,6 +164,8 @@ public class TaskMonitorServiceImplTest {
workbasket.setKey("wb1"); workbasket.setKey("wb1");
List<Workbasket> workbaskets = Arrays.asList(workbasket); List<Workbasket> workbaskets = Arrays.asList(workbasket);
List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY); List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY);
List<String> categories = Arrays.asList("EXTERN");
List<ReportLineItemDefinition> reportLineItemDefinitions = Arrays.asList(new ReportLineItemDefinition(), List<ReportLineItemDefinition> reportLineItemDefinitions = Arrays.asList(new ReportLineItemDefinition(),
new ReportLineItemDefinition()); new ReportLineItemDefinition());
@ -170,12 +176,12 @@ public class TaskMonitorServiceImplTest {
monitorQueryItem.setNumberOfTasks(1); monitorQueryItem.setNumberOfTasks(1);
expectedResult.add(monitorQueryItem); expectedResult.add(monitorQueryItem);
doReturn(expectedResult).when(taskMonitorMapperMock).getTaskCountOfCategoriesByWorkbasketsAndStates( doReturn(expectedResult).when(taskMonitorMapperMock).getTaskCountOfCategoriesByWorkbasketsAndStates(
workbaskets, states); workbaskets, states, categories);
Report actualResult = cut.getCategoryReport(workbaskets, states, reportLineItemDefinitions); Report actualResult = cut.getCategoryReport(workbaskets, states, categories, reportLineItemDefinitions);
verify(taskanaEngineImpl, times(1)).openConnection(); verify(taskanaEngineImpl, times(1)).openConnection();
verify(taskMonitorMapperMock, times(1)).getTaskCountOfCategoriesByWorkbasketsAndStates(any(), any()); verify(taskMonitorMapperMock, times(1)).getTaskCountOfCategoriesByWorkbasketsAndStates(any(), any(), any());
verify(taskanaEngineImpl, times(1)).returnConnection(); verify(taskanaEngineImpl, times(1)).returnConnection();
verifyNoMoreInteractions(taskanaEngineConfigurationMock, taskanaEngineMock, taskanaEngineImpl, verifyNoMoreInteractions(taskanaEngineConfigurationMock, taskanaEngineMock, taskanaEngineImpl,
taskMonitorMapperMock, objectReferenceMapperMock, workbasketServiceMock); taskMonitorMapperMock, objectReferenceMapperMock, workbasketServiceMock);
@ -193,6 +199,7 @@ public class TaskMonitorServiceImplTest {
workbasket.setKey("wb1"); workbasket.setKey("wb1");
List<Workbasket> workbaskets = Arrays.asList(workbasket); List<Workbasket> workbaskets = Arrays.asList(workbasket);
List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY); List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY);
List<String> categories = Arrays.asList("EXTERN");
List<MonitorQueryItem> expectedResult = new ArrayList<>(); List<MonitorQueryItem> expectedResult = new ArrayList<>();
MonitorQueryItem monitorQueryItem = new MonitorQueryItem(); MonitorQueryItem monitorQueryItem = new MonitorQueryItem();
@ -200,12 +207,13 @@ public class TaskMonitorServiceImplTest {
monitorQueryItem.setNumberOfTasks(1); monitorQueryItem.setNumberOfTasks(1);
expectedResult.add(monitorQueryItem); expectedResult.add(monitorQueryItem);
doReturn(expectedResult).when(taskMonitorMapperMock).getTaskCountOfClassificationsByWorkbasketsAndStates( doReturn(expectedResult).when(taskMonitorMapperMock).getTaskCountOfClassificationsByWorkbasketsAndStates(
workbaskets, states); workbaskets, states, categories);
ClassificationReport actualResult = cut.getClassificationReport(workbaskets, states); ClassificationReport actualResult = cut.getClassificationReport(workbaskets, states, categories);
verify(taskanaEngineImpl, times(1)).openConnection(); verify(taskanaEngineImpl, times(1)).openConnection();
verify(taskMonitorMapperMock, times(1)).getTaskCountOfClassificationsByWorkbasketsAndStates(any(), any()); verify(taskMonitorMapperMock, times(1)).getTaskCountOfClassificationsByWorkbasketsAndStates(any(), any(),
any());
verify(taskanaEngineImpl, times(1)).returnConnection(); verify(taskanaEngineImpl, times(1)).returnConnection();
verifyNoMoreInteractions(taskanaEngineConfigurationMock, taskanaEngineMock, taskanaEngineImpl, verifyNoMoreInteractions(taskanaEngineConfigurationMock, taskanaEngineMock, taskanaEngineImpl,
taskMonitorMapperMock, objectReferenceMapperMock, workbasketServiceMock); taskMonitorMapperMock, objectReferenceMapperMock, workbasketServiceMock);
@ -222,6 +230,7 @@ public class TaskMonitorServiceImplTest {
workbasket.setKey("wb1"); workbasket.setKey("wb1");
List<Workbasket> workbaskets = Arrays.asList(workbasket); List<Workbasket> workbaskets = Arrays.asList(workbasket);
List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY); List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY);
List<String> categories = Arrays.asList("EXTERN");
List<ReportLineItemDefinition> reportLineItemDefinitions = Arrays.asList(new ReportLineItemDefinition(), List<ReportLineItemDefinition> reportLineItemDefinitions = Arrays.asList(new ReportLineItemDefinition(),
new ReportLineItemDefinition()); new ReportLineItemDefinition());
@ -232,12 +241,14 @@ public class TaskMonitorServiceImplTest {
monitorQueryItem.setNumberOfTasks(1); monitorQueryItem.setNumberOfTasks(1);
expectedResult.add(monitorQueryItem); expectedResult.add(monitorQueryItem);
doReturn(expectedResult).when(taskMonitorMapperMock).getTaskCountOfClassificationsByWorkbasketsAndStates( doReturn(expectedResult).when(taskMonitorMapperMock).getTaskCountOfClassificationsByWorkbasketsAndStates(
workbaskets, states); workbaskets, states, categories);
ClassificationReport actualResult = cut.getClassificationReport(workbaskets, states, reportLineItemDefinitions); ClassificationReport actualResult = cut.getClassificationReport(workbaskets, states, categories,
reportLineItemDefinitions);
verify(taskanaEngineImpl, times(1)).openConnection(); verify(taskanaEngineImpl, times(1)).openConnection();
verify(taskMonitorMapperMock, times(1)).getTaskCountOfClassificationsByWorkbasketsAndStates(any(), any()); verify(taskMonitorMapperMock, times(1)).getTaskCountOfClassificationsByWorkbasketsAndStates(any(), any(),
any());
verify(taskanaEngineImpl, times(1)).returnConnection(); verify(taskanaEngineImpl, times(1)).returnConnection();
verifyNoMoreInteractions(taskanaEngineConfigurationMock, taskanaEngineMock, taskanaEngineImpl, verifyNoMoreInteractions(taskanaEngineConfigurationMock, taskanaEngineMock, taskanaEngineImpl,
taskMonitorMapperMock, objectReferenceMapperMock, workbasketServiceMock); taskMonitorMapperMock, objectReferenceMapperMock, workbasketServiceMock);
@ -255,6 +266,7 @@ public class TaskMonitorServiceImplTest {
workbasket.setKey("wb1"); workbasket.setKey("wb1");
List<Workbasket> workbaskets = Arrays.asList(workbasket); List<Workbasket> workbaskets = Arrays.asList(workbasket);
List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY); List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY);
List<String> categories = Arrays.asList("EXTERN");
List<DetailedMonitorQueryItem> expectedResult = new ArrayList<>(); List<DetailedMonitorQueryItem> expectedResult = new ArrayList<>();
DetailedMonitorQueryItem detailedMonitorQueryItem = new DetailedMonitorQueryItem(); DetailedMonitorQueryItem detailedMonitorQueryItem = new DetailedMonitorQueryItem();
@ -263,13 +275,14 @@ public class TaskMonitorServiceImplTest {
detailedMonitorQueryItem.setNumberOfTasks(1); detailedMonitorQueryItem.setNumberOfTasks(1);
expectedResult.add(detailedMonitorQueryItem); expectedResult.add(detailedMonitorQueryItem);
doReturn(expectedResult).when(taskMonitorMapperMock) doReturn(expectedResult).when(taskMonitorMapperMock)
.getTaskCountOfDetailedClassificationsByWorkbasketsAndStates(workbaskets, states); .getTaskCountOfDetailedClassificationsByWorkbasketsAndStates(workbaskets, states, categories);
DetailedClassificationReport actualResult = cut.getDetailedClassificationReport(workbaskets, states); DetailedClassificationReport actualResult = cut.getDetailedClassificationReport(workbaskets, states,
categories);
verify(taskanaEngineImpl, times(1)).openConnection(); verify(taskanaEngineImpl, times(1)).openConnection();
verify(taskMonitorMapperMock, times(1)).getTaskCountOfDetailedClassificationsByWorkbasketsAndStates(any(), verify(taskMonitorMapperMock, times(1)).getTaskCountOfDetailedClassificationsByWorkbasketsAndStates(any(),
any()); any(), any());
verify(taskanaEngineImpl, times(1)).returnConnection(); verify(taskanaEngineImpl, times(1)).returnConnection();
verifyNoMoreInteractions(taskanaEngineConfigurationMock, taskanaEngineMock, taskanaEngineImpl, verifyNoMoreInteractions(taskanaEngineConfigurationMock, taskanaEngineMock, taskanaEngineImpl,
taskMonitorMapperMock, objectReferenceMapperMock, workbasketServiceMock); taskMonitorMapperMock, objectReferenceMapperMock, workbasketServiceMock);
@ -288,6 +301,7 @@ public class TaskMonitorServiceImplTest {
workbasket.setKey("wb1"); workbasket.setKey("wb1");
List<Workbasket> workbaskets = Arrays.asList(workbasket); List<Workbasket> workbaskets = Arrays.asList(workbasket);
List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY); List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY);
List<String> categories = Arrays.asList("EXTERN");
List<ReportLineItemDefinition> reportLineItemDefinitions = Arrays.asList(new ReportLineItemDefinition(), List<ReportLineItemDefinition> reportLineItemDefinitions = Arrays.asList(new ReportLineItemDefinition(),
new ReportLineItemDefinition()); new ReportLineItemDefinition());
@ -299,14 +313,14 @@ public class TaskMonitorServiceImplTest {
detailedMonitorQueryItem.setNumberOfTasks(1); detailedMonitorQueryItem.setNumberOfTasks(1);
expectedResult.add(detailedMonitorQueryItem); expectedResult.add(detailedMonitorQueryItem);
doReturn(expectedResult).when(taskMonitorMapperMock) doReturn(expectedResult).when(taskMonitorMapperMock)
.getTaskCountOfDetailedClassificationsByWorkbasketsAndStates(workbaskets, states); .getTaskCountOfDetailedClassificationsByWorkbasketsAndStates(workbaskets, states, categories);
DetailedClassificationReport actualResult = cut.getDetailedClassificationReport(workbaskets, states, DetailedClassificationReport actualResult = cut.getDetailedClassificationReport(workbaskets, states, categories,
reportLineItemDefinitions); reportLineItemDefinitions);
verify(taskanaEngineImpl, times(1)).openConnection(); verify(taskanaEngineImpl, times(1)).openConnection();
verify(taskMonitorMapperMock, times(1)).getTaskCountOfDetailedClassificationsByWorkbasketsAndStates(any(), verify(taskMonitorMapperMock, times(1)).getTaskCountOfDetailedClassificationsByWorkbasketsAndStates(any(),
any()); any(), any());
verify(taskanaEngineImpl, times(1)).returnConnection(); verify(taskanaEngineImpl, times(1)).returnConnection();
verifyNoMoreInteractions(taskanaEngineConfigurationMock, taskanaEngineMock, taskanaEngineImpl, verifyNoMoreInteractions(taskanaEngineConfigurationMock, taskanaEngineMock, taskanaEngineImpl,
taskMonitorMapperMock, objectReferenceMapperMock, workbasketServiceMock); taskMonitorMapperMock, objectReferenceMapperMock, workbasketServiceMock);
@ -328,6 +342,7 @@ public class TaskMonitorServiceImplTest {
workbasket.setKey("wb1"); workbasket.setKey("wb1");
List<Workbasket> workbaskets = Arrays.asList(workbasket); List<Workbasket> workbaskets = Arrays.asList(workbasket);
List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY); List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY);
List<String> categories = Arrays.asList("EXTERN");
List<MonitorQueryItem> expectedResult = new ArrayList<>(); List<MonitorQueryItem> expectedResult = new ArrayList<>();
MonitorQueryItem monitorQueryItem = new MonitorQueryItem(); MonitorQueryItem monitorQueryItem = new MonitorQueryItem();
@ -336,13 +351,13 @@ public class TaskMonitorServiceImplTest {
expectedResult.add(monitorQueryItem); expectedResult.add(monitorQueryItem);
doReturn(expectedResult).when(taskMonitorMapperMock) doReturn(expectedResult).when(taskMonitorMapperMock)
.getTaskCountOfCustomFieldValuesByWorkbasketsAndStatesAndCustomField( .getTaskCountOfCustomFieldValuesByWorkbasketsAndStatesAndCustomField(
workbaskets, states, CustomField.CUSTOM_1); workbaskets, states, categories, CustomField.CUSTOM_1);
Report actualResult = cut.getCustomFieldValueReport(workbaskets, states, CustomField.CUSTOM_1); Report actualResult = cut.getCustomFieldValueReport(workbaskets, states, categories, CustomField.CUSTOM_1);
verify(taskanaEngineImpl, times(1)).openConnection(); verify(taskanaEngineImpl, times(1)).openConnection();
verify(taskMonitorMapperMock, times(1)) verify(taskMonitorMapperMock, times(1))
.getTaskCountOfCustomFieldValuesByWorkbasketsAndStatesAndCustomField(any(), any(), any()); .getTaskCountOfCustomFieldValuesByWorkbasketsAndStatesAndCustomField(any(), any(), any(), any());
verify(taskanaEngineImpl, times(1)).returnConnection(); verify(taskanaEngineImpl, times(1)).returnConnection();
verifyNoMoreInteractions(taskanaEngineConfigurationMock, taskanaEngineMock, taskanaEngineImpl, verifyNoMoreInteractions(taskanaEngineConfigurationMock, taskanaEngineMock, taskanaEngineImpl,
taskMonitorMapperMock, objectReferenceMapperMock, workbasketServiceMock); taskMonitorMapperMock, objectReferenceMapperMock, workbasketServiceMock);
@ -359,6 +374,7 @@ public class TaskMonitorServiceImplTest {
workbasket.setKey("wb1"); workbasket.setKey("wb1");
List<Workbasket> workbaskets = Arrays.asList(workbasket); List<Workbasket> workbaskets = Arrays.asList(workbasket);
List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY); List<TaskState> states = Arrays.asList(TaskState.CLAIMED, TaskState.READY);
List<String> categories = Arrays.asList("EXTERN");
List<ReportLineItemDefinition> reportLineItemDefinitions = Arrays.asList(new ReportLineItemDefinition(), List<ReportLineItemDefinition> reportLineItemDefinitions = Arrays.asList(new ReportLineItemDefinition(),
new ReportLineItemDefinition()); new ReportLineItemDefinition());
@ -370,14 +386,14 @@ public class TaskMonitorServiceImplTest {
expectedResult.add(monitorQueryItem); expectedResult.add(monitorQueryItem);
doReturn(expectedResult).when(taskMonitorMapperMock) doReturn(expectedResult).when(taskMonitorMapperMock)
.getTaskCountOfCustomFieldValuesByWorkbasketsAndStatesAndCustomField( .getTaskCountOfCustomFieldValuesByWorkbasketsAndStatesAndCustomField(
workbaskets, states, CustomField.CUSTOM_1); workbaskets, states, categories, CustomField.CUSTOM_1);
Report actualResult = cut.getCustomFieldValueReport(workbaskets, states, CustomField.CUSTOM_1, Report actualResult = cut.getCustomFieldValueReport(workbaskets, states, categories, CustomField.CUSTOM_1,
reportLineItemDefinitions); reportLineItemDefinitions);
verify(taskanaEngineImpl, times(1)).openConnection(); verify(taskanaEngineImpl, times(1)).openConnection();
verify(taskMonitorMapperMock, times(1)) verify(taskMonitorMapperMock, times(1))
.getTaskCountOfCustomFieldValuesByWorkbasketsAndStatesAndCustomField(any(), any(), any()); .getTaskCountOfCustomFieldValuesByWorkbasketsAndStatesAndCustomField(any(), any(), any(), any());
verify(taskanaEngineImpl, times(1)).returnConnection(); verify(taskanaEngineImpl, times(1)).returnConnection();
verifyNoMoreInteractions(taskanaEngineConfigurationMock, taskanaEngineMock, taskanaEngineImpl, verifyNoMoreInteractions(taskanaEngineConfigurationMock, taskanaEngineMock, taskanaEngineImpl,
taskMonitorMapperMock, objectReferenceMapperMock, workbasketServiceMock); taskMonitorMapperMock, objectReferenceMapperMock, workbasketServiceMock);