TSK-271: Add custom holiday support to the monitor

This commit is contained in:
Konstantin Kläger 2018-02-26 13:59:00 +01:00 committed by Holger Hagen
parent 6f6d884e02
commit 603afc8a2d
10 changed files with 315 additions and 15 deletions

View File

@ -1,6 +1,8 @@
package pro.taskana.configuration;
import java.sql.SQLException;
import java.time.LocalDate;
import java.util.List;
import javax.sql.DataSource;
@ -36,6 +38,9 @@ public class TaskanaEngineConfiguration {
protected boolean securityEnabled = true;
protected boolean useManagedTransactions;
private boolean germanPublicHolidaysEnabled;
private List<LocalDate> customHolidays;
public TaskanaEngineConfiguration(boolean enableSecurity) {
this.securityEnabled = enableSecurity;
}
@ -134,6 +139,22 @@ public class TaskanaEngineConfiguration {
this.propertiesSeparator = propertiesSeparator;
}
public boolean isGermanPublicHolidaysEnabled() {
return this.germanPublicHolidaysEnabled;
}
public void setGermanPublicHolidaysEnabled(boolean germanPublicHolidaysEnabled) {
this.germanPublicHolidaysEnabled = germanPublicHolidaysEnabled;
}
public List<LocalDate> getCustomHolidays() {
return customHolidays;
}
public void setCustomHolidays(List<LocalDate> customHolidays) {
this.customHolidays = customHolidays;
}
/**
* Helper method to determine whether all access ids (user Id and group ids) should be used in lower case.
*

View File

@ -2,6 +2,7 @@ package pro.taskana.impl;
import java.time.DayOfWeek;
import java.time.Instant;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.temporal.ChronoUnit;
@ -27,12 +28,16 @@ public final class DaysToWorkingDaysConverter {
private static ArrayList<Integer> positiveDaysToWorkingDays;
private static ArrayList<Integer> negativeDaysToWorkingDays;
private static Instant dateCreated;
private static LocalDate easterSunday;
private static boolean germanHolidaysEnabled;
private static List<LocalDate> customHolidays;
private DaysToWorkingDaysConverter(List<ReportLineItemDefinition> reportLineItemDefinitions,
Instant referenceDate) {
easterSunday = getEasterSunday(LocalDateTime.ofInstant(referenceDate, ZoneId.systemDefault()).getYear());
dateCreated = referenceDate;
positiveDaysToWorkingDays = generatePositiveDaysToWorkingDays(reportLineItemDefinitions, referenceDate);
negativeDaysToWorkingDays = generateNegativeDaysToWorkingDays(reportLineItemDefinitions, referenceDate);
dateCreated = referenceDate;
}
/**
@ -160,10 +165,77 @@ public final class DaysToWorkingDaysConverter {
if (LocalDateTime.ofInstant(referenceDate, ZoneId.systemDefault()).plusDays(day).getDayOfWeek().equals(
DayOfWeek.SATURDAY)
|| LocalDateTime.ofInstant(referenceDate, ZoneId.systemDefault()).plusDays(day).getDayOfWeek().equals(
DayOfWeek.SUNDAY)) {
DayOfWeek.SUNDAY)
|| isHoliday(LocalDateTime.ofInstant(referenceDate, ZoneId.systemDefault()).plusDays(day).toLocalDate())) {
return false;
}
return true;
}
private boolean isHoliday(LocalDate date) {
if (germanHolidaysEnabled) {
// Fix and movable holidays that are valid throughout Germany: New years day, Labour Day, Day of German
// Unity, Christmas, Good Friday, Easter Monday, Ascension Day, Whit Monday.
if (date.getDayOfMonth() == 1 && date.getMonthValue() == 1
|| date.getDayOfMonth() == 1 && date.getMonthValue() == 5
|| date.getDayOfMonth() == 3 && date.getMonthValue() == 10
|| date.getDayOfMonth() == 25 && date.getMonthValue() == 12
|| date.getDayOfMonth() == 26 && date.getMonthValue() == 12
|| easterSunday.minusDays(2).equals(date)
|| easterSunday.plusDays(1).equals(date)
|| easterSunday.plusDays(39).equals(date)
|| easterSunday.plusDays(50).equals(date)) {
return true;
}
}
if (customHolidays != null) {
// Custom holidays that can be configured in the TaskanaEngineConfiguration
for (LocalDate customHoliday : customHolidays) {
if (date.equals(customHoliday)) {
return true;
}
}
}
return false;
}
public LocalDate getEasterSunday(int year) {
// Formula to compute Easter Sunday by Gauss.
int a = year % 19;
int b = year % 4;
int c = year % 7;
int k = year / 100;
int p = (13 + 8 * k) / 25;
int q = k / 4;
int m = (15 - p + k - q) % 30;
int n = (4 + k - q) % 7;
int d = (19 * a + m) % 30;
int e = (2 * b + 4 * c + 6 * d + n) % 7;
if (d == 29 && e == 6) {
return LocalDate.of(year, 3, 15).plusDays(d + e);
}
if (d == 28 && e == 6 && (11 * m + 11) % 30 < 19) {
return LocalDate.of(year, 3, 15).plusDays(d + e);
}
return LocalDate.of(year, 3, 22).plusDays(d + e);
}
public static void setCustomHolidays(List<LocalDate> holidays) {
customHolidays = holidays;
}
public List<LocalDate> getCustomHolidays() {
return customHolidays;
}
public static void setGermanPublicHolidaysEnabled(boolean germanPublicHolidaysEnabled) {
germanHolidaysEnabled = germanPublicHolidaysEnabled;
}
public boolean isGermanPublicHolidayEnabled() {
return germanHolidaysEnabled;
}
}

View File

@ -52,6 +52,8 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
try {
taskanaEngineImpl.openConnection();
configureDaysToWorkingDaysConverter();
Report report = new Report();
List<MonitorQueryItem> monitorQueryItems = taskMonitorMapper
.getTaskCountOfWorkbasketsByWorkbasketsAndStates(workbasketIds, states, categories, domains);
@ -61,7 +63,6 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
} finally {
taskanaEngineImpl.returnConnection();
LOGGER.debug("exit from getWorkbasketLevelReport().");
}
}
@ -91,6 +92,8 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
try {
taskanaEngineImpl.openConnection();
configureDaysToWorkingDaysConverter();
Report report = new Report();
List<MonitorQueryItem> monitorQueryItems = taskMonitorMapper
.getTaskCountOfCategoriesByWorkbasketsAndStates(workbasketIds, states, categories, domains);
@ -130,6 +133,8 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
try {
taskanaEngineImpl.openConnection();
configureDaysToWorkingDaysConverter();
ClassificationReport report = new ClassificationReport();
List<MonitorQueryItem> monitorQueryItems = taskMonitorMapper
.getTaskCountOfClassificationsByWorkbasketsAndStates(workbasketIds, states, categories, domains);
@ -173,6 +178,8 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
try {
taskanaEngineImpl.openConnection();
configureDaysToWorkingDaysConverter();
DetailedClassificationReport report = new DetailedClassificationReport();
List<DetailedMonitorQueryItem> detailedMonitorQueryItems = taskMonitorMapper
.getTaskCountOfDetailedClassificationsByWorkbasketsAndStates(workbasketIds, states, categories,
@ -217,6 +224,8 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
try {
taskanaEngineImpl.openConnection();
configureDaysToWorkingDaysConverter();
Report report = new Report();
List<MonitorQueryItem> monitorQueryItems = taskMonitorMapper
.getTaskCountOfCustomFieldValuesByWorkbasketsAndStatesAndCustomField(workbasketIds, states, categories,
@ -230,4 +239,10 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
}
}
private void configureDaysToWorkingDaysConverter() {
DaysToWorkingDaysConverter.setCustomHolidays(taskanaEngineImpl.getConfiguration().getCustomHolidays());
DaysToWorkingDaysConverter.setGermanPublicHolidaysEnabled(
this.taskanaEngineImpl.getConfiguration().isGermanPublicHolidaysEnabled());
}
}

View File

@ -51,6 +51,7 @@ public class ProvideCategoryReportAccTest {
cleaner.clearDb(dataSource, true);
dataSource = TaskanaEngineConfigurationTest.getDataSource();
taskanaEngineConfiguration = new TaskanaEngineConfiguration(dataSource, false);
taskanaEngineConfiguration.setGermanPublicHolidaysEnabled(false);
taskanaEngine = taskanaEngineConfiguration.buildTaskanaEngine();
((TaskanaEngineImpl) taskanaEngine).setConnectionManagementMode(ConnectionManagementMode.AUTOCOMMIT);
cleaner.clearDb(dataSource, false);

View File

@ -51,6 +51,7 @@ public class ProvideClassificationReportAccTest {
cleaner.clearDb(dataSource, true);
dataSource = TaskanaEngineConfigurationTest.getDataSource();
taskanaEngineConfiguration = new TaskanaEngineConfiguration(dataSource, false);
taskanaEngineConfiguration.setGermanPublicHolidaysEnabled(false);
taskanaEngine = taskanaEngineConfiguration.buildTaskanaEngine();
((TaskanaEngineImpl) taskanaEngine).setConnectionManagementMode(ConnectionManagementMode.AUTOCOMMIT);
cleaner.clearDb(dataSource, false);

View File

@ -52,6 +52,7 @@ public class ProvideCustomFieldValueReportAccTest {
cleaner.clearDb(dataSource, true);
dataSource = TaskanaEngineConfigurationTest.getDataSource();
taskanaEngineConfiguration = new TaskanaEngineConfiguration(dataSource, false);
taskanaEngineConfiguration.setGermanPublicHolidaysEnabled(false);
taskanaEngine = taskanaEngineConfiguration.buildTaskanaEngine();
((TaskanaEngineImpl) taskanaEngine).setConnectionManagementMode(ConnectionManagementMode.AUTOCOMMIT);
cleaner.clearDb(dataSource, false);

View File

@ -54,6 +54,7 @@ public class ProvideDetailedClassificationReportAccTest {
cleaner.clearDb(dataSource, true);
dataSource = TaskanaEngineConfigurationTest.getDataSource();
taskanaEngineConfiguration = new TaskanaEngineConfiguration(dataSource, false);
taskanaEngineConfiguration.setGermanPublicHolidaysEnabled(false);
taskanaEngine = taskanaEngineConfiguration.buildTaskanaEngine();
((TaskanaEngineImpl) taskanaEngine).setConnectionManagementMode(ConnectionManagementMode.AUTOCOMMIT);
cleaner.clearDb(dataSource, false);

View File

@ -51,6 +51,7 @@ public class ProvideWorkbasketLevelReportAccTest {
cleaner.clearDb(dataSource, true);
dataSource = TaskanaEngineConfigurationTest.getDataSource();
taskanaEngineConfiguration = new TaskanaEngineConfiguration(dataSource, false);
taskanaEngineConfiguration.setGermanPublicHolidaysEnabled(false);
taskanaEngine = taskanaEngineConfiguration.buildTaskanaEngine();
((TaskanaEngineImpl) taskanaEngine).setConnectionManagementMode(ConnectionManagementMode.AUTOCOMMIT);
cleaner.clearDb(dataSource, false);

View File

@ -4,9 +4,12 @@ import static org.junit.Assert.assertEquals;
import static org.junit.Assert.assertNotEquals;
import java.time.Instant;
import java.time.LocalDate;
import java.util.ArrayList;
import java.util.Arrays;
import java.util.List;
import org.junit.BeforeClass;
import org.junit.Test;
/**
@ -14,6 +17,14 @@ import org.junit.Test;
*/
public class DaysToWorkingDaysConverterTest {
@BeforeClass
public static void setup() {
DaysToWorkingDaysConverter.setGermanPublicHolidaysEnabled(true);
LocalDate dayOfReformation = LocalDate.of(2018, 10, 31);
LocalDate allSaintsDays = LocalDate.of(2018, 11, 1);
DaysToWorkingDaysConverter.setCustomHolidays(Arrays.asList(dayOfReformation, allSaintsDays));
}
@Test
public void testInitializeForDifferentReportLineItemDefinitions() {
DaysToWorkingDaysConverter instance1 = DaysToWorkingDaysConverter
@ -61,6 +72,146 @@ public class DaysToWorkingDaysConverterTest {
assertEquals(16, instance.convertDaysToWorkingDays(16));
}
@Test
public void testEasterHolidays() {
DaysToWorkingDaysConverter instance = DaysToWorkingDaysConverter
.initialize(getLargeListOfReportLineItemDefinitions(), Instant.parse("2018-03-28T00:00:00.000Z"));
assertEquals(0, instance.convertDaysToWorkingDays(0));
assertEquals(1, instance.convertDaysToWorkingDays(1));
assertEquals(1, instance.convertDaysToWorkingDays(2));
assertEquals(1, instance.convertDaysToWorkingDays(3));
assertEquals(1, instance.convertDaysToWorkingDays(4));
assertEquals(1, instance.convertDaysToWorkingDays(5));
assertEquals(2, instance.convertDaysToWorkingDays(6));
}
@Test
public void testWhitsunHolidays() {
DaysToWorkingDaysConverter instance = DaysToWorkingDaysConverter
.initialize(getLargeListOfReportLineItemDefinitions(), Instant.parse("2018-05-16T00:00:00.000Z"));
assertEquals(0, instance.convertDaysToWorkingDays(0));
assertEquals(1, instance.convertDaysToWorkingDays(1));
assertEquals(2, instance.convertDaysToWorkingDays(2));
assertEquals(2, instance.convertDaysToWorkingDays(3));
assertEquals(2, instance.convertDaysToWorkingDays(4));
assertEquals(2, instance.convertDaysToWorkingDays(5));
assertEquals(3, instance.convertDaysToWorkingDays(6));
}
@Test
public void testLabourDayHoliday() {
DaysToWorkingDaysConverter instance = DaysToWorkingDaysConverter
.initialize(getLargeListOfReportLineItemDefinitions(), Instant.parse("2018-04-26T00:00:00.000Z"));
assertEquals(0, instance.convertDaysToWorkingDays(0));
assertEquals(1, instance.convertDaysToWorkingDays(1));
assertEquals(1, instance.convertDaysToWorkingDays(2));
assertEquals(1, instance.convertDaysToWorkingDays(3));
assertEquals(2, instance.convertDaysToWorkingDays(4));
assertEquals(2, instance.convertDaysToWorkingDays(5));
assertEquals(3, instance.convertDaysToWorkingDays(6));
assertEquals(4, instance.convertDaysToWorkingDays(7));
}
@Test
public void testAscensionDayHoliday() {
DaysToWorkingDaysConverter instance = DaysToWorkingDaysConverter
.initialize(getLargeListOfReportLineItemDefinitions(), Instant.parse("2018-05-07T00:00:00.000Z"));
assertEquals(0, instance.convertDaysToWorkingDays(0));
assertEquals(1, instance.convertDaysToWorkingDays(1));
assertEquals(2, instance.convertDaysToWorkingDays(2));
assertEquals(2, instance.convertDaysToWorkingDays(3));
assertEquals(3, instance.convertDaysToWorkingDays(4));
assertEquals(3, instance.convertDaysToWorkingDays(5));
assertEquals(3, instance.convertDaysToWorkingDays(6));
assertEquals(4, instance.convertDaysToWorkingDays(7));
}
@Test
public void testDayOfGermanUnityHoliday() {
DaysToWorkingDaysConverter instance = DaysToWorkingDaysConverter
.initialize(getLargeListOfReportLineItemDefinitions(), Instant.parse("2018-10-01T00:00:00.000Z"));
assertEquals(0, instance.convertDaysToWorkingDays(0));
assertEquals(1, instance.convertDaysToWorkingDays(1));
assertEquals(1, instance.convertDaysToWorkingDays(2));
assertEquals(2, instance.convertDaysToWorkingDays(3));
assertEquals(3, instance.convertDaysToWorkingDays(4));
assertEquals(3, instance.convertDaysToWorkingDays(5));
assertEquals(3, instance.convertDaysToWorkingDays(6));
assertEquals(4, instance.convertDaysToWorkingDays(7));
}
@Test
public void testChristmasAndNewYearHolidays() {
DaysToWorkingDaysConverter instance = DaysToWorkingDaysConverter
.initialize(getLargeListOfReportLineItemDefinitions(), Instant.parse("2018-12-20T00:00:00.000Z"));
assertEquals(0, instance.convertDaysToWorkingDays(0));
assertEquals(1, instance.convertDaysToWorkingDays(1));
assertEquals(1, instance.convertDaysToWorkingDays(2));
assertEquals(1, instance.convertDaysToWorkingDays(3));
assertEquals(2, instance.convertDaysToWorkingDays(4));
assertEquals(2, instance.convertDaysToWorkingDays(5));
assertEquals(2, instance.convertDaysToWorkingDays(6));
assertEquals(3, instance.convertDaysToWorkingDays(7));
assertEquals(4, instance.convertDaysToWorkingDays(8));
assertEquals(4, instance.convertDaysToWorkingDays(9));
assertEquals(4, instance.convertDaysToWorkingDays(10));
assertEquals(5, instance.convertDaysToWorkingDays(11));
assertEquals(5, instance.convertDaysToWorkingDays(12));
assertEquals(6, instance.convertDaysToWorkingDays(13));
assertEquals(7, instance.convertDaysToWorkingDays(14));
}
@Test
public void testCustomHolidaysWithDayOfReformationAndAllSaintsDay() {
DaysToWorkingDaysConverter instance = DaysToWorkingDaysConverter
.initialize(getLargeListOfReportLineItemDefinitions(), Instant.parse("2018-10-26T00:00:00.000Z"));
assertEquals(0, instance.convertDaysToWorkingDays(0));
assertEquals(0, instance.convertDaysToWorkingDays(1));
assertEquals(0, instance.convertDaysToWorkingDays(2));
assertEquals(1, instance.convertDaysToWorkingDays(3));
assertEquals(2, instance.convertDaysToWorkingDays(4));
assertEquals(2, instance.convertDaysToWorkingDays(5));
assertEquals(2, instance.convertDaysToWorkingDays(6));
assertEquals(3, instance.convertDaysToWorkingDays(7));
}
@Test
public void testgetEasterSunday() {
DaysToWorkingDaysConverter instance = DaysToWorkingDaysConverter
.initialize(getShortListOfReportLineItemDefinitions(), Instant.parse("2018-02-27T00:00:00.000Z"));
assertEquals(LocalDate.of(2018, 4, 1), instance.getEasterSunday(2018));
assertEquals(LocalDate.of(2019, 4, 21), instance.getEasterSunday(2019));
assertEquals(LocalDate.of(2020, 4, 12), instance.getEasterSunday(2020));
assertEquals(LocalDate.of(2021, 4, 4), instance.getEasterSunday(2021));
assertEquals(LocalDate.of(2022, 4, 17), instance.getEasterSunday(2022));
assertEquals(LocalDate.of(2023, 4, 9), instance.getEasterSunday(2023));
assertEquals(LocalDate.of(2024, 3, 31), instance.getEasterSunday(2024));
assertEquals(LocalDate.of(2025, 4, 20), instance.getEasterSunday(2025));
assertEquals(LocalDate.of(2026, 4, 5), instance.getEasterSunday(2026));
assertEquals(LocalDate.of(2027, 3, 28), instance.getEasterSunday(2027));
assertEquals(LocalDate.of(2028, 4, 16), instance.getEasterSunday(2028));
assertEquals(LocalDate.of(2029, 4, 1), instance.getEasterSunday(2029));
assertEquals(LocalDate.of(2030, 4, 21), instance.getEasterSunday(2030));
assertEquals(LocalDate.of(2031, 4, 13), instance.getEasterSunday(2031));
assertEquals(LocalDate.of(2032, 3, 28), instance.getEasterSunday(2032));
assertEquals(LocalDate.of(2033, 4, 17), instance.getEasterSunday(2033));
assertEquals(LocalDate.of(2034, 4, 9), instance.getEasterSunday(2034));
assertEquals(LocalDate.of(2035, 3, 25), instance.getEasterSunday(2035));
assertEquals(LocalDate.of(2040, 4, 1), instance.getEasterSunday(2040));
assertEquals(LocalDate.of(2050, 4, 10), instance.getEasterSunday(2050));
assertEquals(LocalDate.of(2100, 3, 28), instance.getEasterSunday(2100));
}
private List<ReportLineItemDefinition> getShortListOfReportLineItemDefinitions() {
List<ReportLineItemDefinition> reportLineItemDefinitions = new ArrayList<>();
reportLineItemDefinitions.add(new ReportLineItemDefinition(Integer.MIN_VALUE, -3));

View File

@ -21,6 +21,7 @@ import org.mockito.Mockito;
import org.mockito.MockitoAnnotations;
import org.mockito.junit.MockitoJUnitRunner;
import pro.taskana.configuration.TaskanaEngineConfiguration;
import pro.taskana.mappings.TaskMonitorMapper;
/**
@ -35,6 +36,9 @@ public class TaskMonitorServiceImplTest {
@Mock
private TaskanaEngineImpl taskanaEngineImplMock;
@Mock
private TaskanaEngineConfiguration taskanaEngineConfiguration;
@Mock
private TaskMonitorMapper taskMonitorMapperMock;
@ -43,6 +47,9 @@ public class TaskMonitorServiceImplTest {
MockitoAnnotations.initMocks(this);
Mockito.doNothing().when(taskanaEngineImplMock).openConnection();
Mockito.doNothing().when(taskanaEngineImplMock).returnConnection();
doReturn(taskanaEngineConfiguration).when(taskanaEngineImplMock).getConfiguration();
doReturn(true).when(taskanaEngineConfiguration).isGermanPublicHolidaysEnabled();
doReturn(null).when(taskanaEngineConfiguration).getCustomHolidays();
}
@Test
@ -63,10 +70,13 @@ public class TaskMonitorServiceImplTest {
Report actualResult = cut.getWorkbasketLevelReport(workbasketIds, states, categories, domains);
verify(taskanaEngineImplMock, times(1)).openConnection();
verify(taskanaEngineImplMock, times(2)).getConfiguration();
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
verify(taskMonitorMapperMock, times(1)).getTaskCountOfWorkbasketsByWorkbasketsAndStates(any(), any(), any(),
any());
verify(taskanaEngineImplMock, times(1)).returnConnection();
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock);
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
assertNotNull(actualResult);
assertEquals(
@ -96,10 +106,13 @@ public class TaskMonitorServiceImplTest {
reportLineItemDefinitions);
verify(taskanaEngineImplMock, times(1)).openConnection();
verify(taskanaEngineImplMock, times(2)).getConfiguration();
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
verify(taskMonitorMapperMock, times(1)).getTaskCountOfWorkbasketsByWorkbasketsAndStates(any(), any(), any(),
any());
verify(taskanaEngineImplMock, times(1)).returnConnection();
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock);
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
assertNotNull(actualResult);
assertEquals(
@ -132,10 +145,13 @@ public class TaskMonitorServiceImplTest {
Report actualResult = cut.getCategoryReport(workbasketIds, states, categories, domains);
verify(taskanaEngineImplMock, times(1)).openConnection();
verify(taskanaEngineImplMock, times(2)).getConfiguration();
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
verify(taskMonitorMapperMock, times(1)).getTaskCountOfCategoriesByWorkbasketsAndStates(any(), any(), any(),
any());
verify(taskanaEngineImplMock, times(1)).returnConnection();
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock);
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
assertNotNull(actualResult);
assertEquals(actualResult.getReportLines().get("EXTERN").getTotalNumberOfTasks(), 1);
@ -164,10 +180,13 @@ public class TaskMonitorServiceImplTest {
reportLineItemDefinitions);
verify(taskanaEngineImplMock, times(1)).openConnection();
verify(taskanaEngineImplMock, times(2)).getConfiguration();
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
verify(taskMonitorMapperMock, times(1)).getTaskCountOfCategoriesByWorkbasketsAndStates(any(), any(), any(),
any());
verify(taskanaEngineImplMock, times(1)).returnConnection();
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock);
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
assertNotNull(actualResult);
assertEquals(actualResult.getReportLines().get("EXTERN").getTotalNumberOfTasks(), 1);
@ -193,10 +212,13 @@ public class TaskMonitorServiceImplTest {
ClassificationReport actualResult = cut.getClassificationReport(workbasketIds, states, categories, domains);
verify(taskanaEngineImplMock, times(1)).openConnection();
verify(taskanaEngineImplMock, times(2)).getConfiguration();
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
verify(taskMonitorMapperMock, times(1)).getTaskCountOfClassificationsByWorkbasketsAndStates(any(), any(), any(),
any());
verify(taskanaEngineImplMock, times(1)).returnConnection();
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock);
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
assertNotNull(actualResult);
assertEquals(
@ -226,10 +248,13 @@ public class TaskMonitorServiceImplTest {
reportLineItemDefinitions);
verify(taskanaEngineImplMock, times(1)).openConnection();
verify(taskanaEngineImplMock, times(2)).getConfiguration();
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
verify(taskMonitorMapperMock, times(1)).getTaskCountOfClassificationsByWorkbasketsAndStates(any(), any(), any(),
any());
verify(taskanaEngineImplMock, times(1)).returnConnection();
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock);
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
assertNotNull(actualResult);
assertEquals(
@ -262,10 +287,13 @@ public class TaskMonitorServiceImplTest {
categories, domains);
verify(taskanaEngineImplMock, times(1)).openConnection();
verify(taskanaEngineImplMock, times(2)).getConfiguration();
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
verify(taskMonitorMapperMock, times(1)).getTaskCountOfDetailedClassificationsByWorkbasketsAndStates(any(),
any(), any(), any());
verify(taskanaEngineImplMock, times(1)).returnConnection();
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock);
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
DetailedReportLine line = (DetailedReportLine) actualResult.getReportLines()
.get("CLI:000000000000000000000000000000000001");
@ -295,14 +323,16 @@ public class TaskMonitorServiceImplTest {
.getTaskCountOfDetailedClassificationsByWorkbasketsAndStates(workbasketIds, states, categories, domains);
DetailedClassificationReport actualResult = cut.getDetailedClassificationReport(workbasketIds, states,
categories,
domains, reportLineItemDefinitions);
categories, domains, reportLineItemDefinitions);
verify(taskanaEngineImplMock, times(1)).openConnection();
verify(taskanaEngineImplMock, times(2)).getConfiguration();
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
verify(taskMonitorMapperMock, times(1)).getTaskCountOfDetailedClassificationsByWorkbasketsAndStates(any(),
any(), any(), any());
verify(taskanaEngineImplMock, times(1)).returnConnection();
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock);
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
DetailedReportLine line = (DetailedReportLine) actualResult.getReportLines()
.get("CLI:000000000000000000000000000000000001");
@ -339,10 +369,13 @@ public class TaskMonitorServiceImplTest {
CustomField.CUSTOM_1);
verify(taskanaEngineImplMock, times(1)).openConnection();
verify(taskanaEngineImplMock, times(2)).getConfiguration();
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
verify(taskMonitorMapperMock, times(1))
.getTaskCountOfCustomFieldValuesByWorkbasketsAndStatesAndCustomField(any(), any(), any(), any(), any());
verify(taskanaEngineImplMock, times(1)).returnConnection();
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock);
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
assertNotNull(actualResult);
assertEquals(actualResult.getReportLines().get("Geschaeftsstelle A").getTotalNumberOfTasks(), 1);
@ -372,10 +405,13 @@ public class TaskMonitorServiceImplTest {
CustomField.CUSTOM_1, reportLineItemDefinitions);
verify(taskanaEngineImplMock, times(1)).openConnection();
verify(taskanaEngineImplMock, times(2)).getConfiguration();
verify(taskanaEngineConfiguration, times(1)).isGermanPublicHolidaysEnabled();
verify(taskanaEngineConfiguration, times(1)).getCustomHolidays();
verify(taskMonitorMapperMock, times(1))
.getTaskCountOfCustomFieldValuesByWorkbasketsAndStatesAndCustomField(any(), any(), any(), any(), any());
verify(taskanaEngineImplMock, times(1)).returnConnection();
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock);
verifyNoMoreInteractions(taskanaEngineImplMock, taskMonitorMapperMock, taskanaEngineConfiguration);
assertNotNull(actualResult);
assertEquals(actualResult.getReportLines().get("Geschaeftsstelle A").getTotalNumberOfTasks(), 1);