TSK-379: Return all matching days in DaysToWorkingDaysConverter
- Now method convertWorkingDaysToDays returns all days that match to the inserted working day to include weekends and holidays
This commit is contained in:
parent
a7c7dec43c
commit
7dc951351d
|
@ -120,33 +120,56 @@ public final class DaysToWorkingDaysConverter {
|
|||
|
||||
/**
|
||||
* Converts an integer, that represents the age in working days, to the age in days by using the table that was
|
||||
* created by initialization. If the age in working days is beyond the limits of the table, the integer will be
|
||||
* returned unchanged.
|
||||
* created by initialization. Because one age in working days could match to more than one age in days, the return
|
||||
* value is a list of all days that match to the input parameter. If the age in working days is beyond the limits of
|
||||
* the table, the integer will be returned unchanged.
|
||||
*
|
||||
* @param ageInWorkingDays
|
||||
* represents the age in working days
|
||||
* @return the age in days
|
||||
* @return a list of age in days
|
||||
*/
|
||||
public int convertWorkingDaysToDays(int ageInWorkingDays) {
|
||||
public ArrayList<Integer> convertWorkingDaysToDays(int ageInWorkingDays) {
|
||||
|
||||
ArrayList<Integer> list = new ArrayList<>();
|
||||
|
||||
int minWorkingDay = negativeDaysToWorkingDays.get(negativeDaysToWorkingDays.size() - 1);
|
||||
int maxWorkingDay = positiveDaysToWorkingDays.get(positiveDaysToWorkingDays.size() - 1);
|
||||
|
||||
int ageInDays = 0;
|
||||
if (ageInWorkingDays >= minWorkingDay && ageInWorkingDays < 0) {
|
||||
while (negativeDaysToWorkingDays.get(ageInDays) > ageInWorkingDays) {
|
||||
ageInDays++;
|
||||
for (int ageInDays = 0; ageInDays < negativeDaysToWorkingDays.size(); ageInDays++) {
|
||||
if (negativeDaysToWorkingDays.get(ageInDays) == ageInWorkingDays) {
|
||||
list.add(-ageInDays);
|
||||
}
|
||||
}
|
||||
return -ageInDays;
|
||||
return list;
|
||||
}
|
||||
if (ageInWorkingDays > 0 && ageInWorkingDays <= maxWorkingDay) {
|
||||
while (positiveDaysToWorkingDays.get(ageInDays) < ageInWorkingDays) {
|
||||
ageInDays++;
|
||||
for (int ageInDays = 0; ageInDays < positiveDaysToWorkingDays.size(); ageInDays++) {
|
||||
if (positiveDaysToWorkingDays.get(ageInDays) == ageInWorkingDays) {
|
||||
list.add(ageInDays);
|
||||
}
|
||||
}
|
||||
return ageInDays;
|
||||
return list;
|
||||
}
|
||||
|
||||
return ageInWorkingDays;
|
||||
if (ageInWorkingDays == 0) {
|
||||
list.add(0);
|
||||
for (int ageInDays = 1; ageInDays < positiveDaysToWorkingDays.size(); ageInDays++) {
|
||||
if (positiveDaysToWorkingDays.get(ageInDays) == ageInWorkingDays) {
|
||||
list.add(ageInDays);
|
||||
}
|
||||
}
|
||||
for (int ageInDays = 1; ageInDays < negativeDaysToWorkingDays.size(); ageInDays++) {
|
||||
if (negativeDaysToWorkingDays.get(ageInDays) == ageInWorkingDays) {
|
||||
list.add(-ageInDays);
|
||||
}
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
// If ageInWorkingDays is beyond the limits of the table, the value is returned unchanged.
|
||||
list.add(ageInWorkingDays);
|
||||
return list;
|
||||
}
|
||||
|
||||
public long convertWorkingDaysToDays(Instant startTime, long numberOfDays) {
|
||||
|
|
|
@ -1,5 +1,6 @@
|
|||
package pro.taskana.impl;
|
||||
|
||||
import java.util.Collections;
|
||||
import java.util.List;
|
||||
|
||||
import org.slf4j.Logger;
|
||||
|
@ -322,8 +323,10 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
|
|||
|
||||
DaysToWorkingDaysConverter instance = DaysToWorkingDaysConverter.initialize(reportLineItemDefinitions);
|
||||
for (SelectedItem selectedItem : selectedItems) {
|
||||
selectedItem.setLowerAgeLimit(instance.convertWorkingDaysToDays(selectedItem.getLowerAgeLimit()));
|
||||
selectedItem.setUpperAgeLimit(instance.convertWorkingDaysToDays(selectedItem.getUpperAgeLimit()));
|
||||
selectedItem
|
||||
.setLowerAgeLimit(Collections.min(instance.convertWorkingDaysToDays(selectedItem.getLowerAgeLimit())));
|
||||
selectedItem
|
||||
.setUpperAgeLimit(Collections.max(instance.convertWorkingDaysToDays(selectedItem.getUpperAgeLimit())));
|
||||
}
|
||||
return selectedItems;
|
||||
}
|
||||
|
|
|
@ -136,32 +136,98 @@ public class DaysToWorkingDaysConverterTest {
|
|||
DaysToWorkingDaysConverter instance = DaysToWorkingDaysConverter
|
||||
.initialize(getLargeListOfReportLineItemDefinitions(), Instant.parse("2018-02-27T00:00:00.000Z"));
|
||||
|
||||
assertEquals(-13, instance.convertWorkingDaysToDays(-13));
|
||||
assertEquals(-12, instance.convertWorkingDaysToDays(-12));
|
||||
assertEquals(Arrays.asList(-13), instance.convertWorkingDaysToDays(-13));
|
||||
assertEquals(Arrays.asList(-12), instance.convertWorkingDaysToDays(-12));
|
||||
|
||||
assertEquals(-12, instance.convertWorkingDaysToDays(-8));
|
||||
assertEquals(-11, instance.convertWorkingDaysToDays(-7));
|
||||
assertEquals(-8, instance.convertWorkingDaysToDays(-6));
|
||||
assertEquals(-7, instance.convertWorkingDaysToDays(-5));
|
||||
assertEquals(-6, instance.convertWorkingDaysToDays(-4));
|
||||
assertEquals(-5, instance.convertWorkingDaysToDays(-3));
|
||||
assertEquals(-4, instance.convertWorkingDaysToDays(-2));
|
||||
assertEquals(-1, instance.convertWorkingDaysToDays(-1));
|
||||
assertEquals(0, instance.convertWorkingDaysToDays(0));
|
||||
assertEquals(1, instance.convertWorkingDaysToDays(1));
|
||||
assertEquals(2, instance.convertWorkingDaysToDays(2));
|
||||
assertEquals(3, instance.convertWorkingDaysToDays(3));
|
||||
assertEquals(6, instance.convertWorkingDaysToDays(4));
|
||||
assertEquals(7, instance.convertWorkingDaysToDays(5));
|
||||
assertEquals(8, instance.convertWorkingDaysToDays(6));
|
||||
assertEquals(9, instance.convertWorkingDaysToDays(7));
|
||||
assertEquals(10, instance.convertWorkingDaysToDays(8));
|
||||
assertEquals(13, instance.convertWorkingDaysToDays(9));
|
||||
assertEquals(14, instance.convertWorkingDaysToDays(10));
|
||||
assertEquals(15, instance.convertWorkingDaysToDays(11));
|
||||
assertEquals(Arrays.asList(-12), instance.convertWorkingDaysToDays(-8));
|
||||
assertEquals(Arrays.asList(-11), instance.convertWorkingDaysToDays(-7));
|
||||
assertEquals(Arrays.asList(-8, -9, -10), instance.convertWorkingDaysToDays(-6));
|
||||
assertEquals(Arrays.asList(-7), instance.convertWorkingDaysToDays(-5));
|
||||
assertEquals(Arrays.asList(-6), instance.convertWorkingDaysToDays(-4));
|
||||
assertEquals(Arrays.asList(-5), instance.convertWorkingDaysToDays(-3));
|
||||
assertEquals(Arrays.asList(-4), instance.convertWorkingDaysToDays(-2));
|
||||
assertEquals(Arrays.asList(-1, -2, -3), instance.convertWorkingDaysToDays(-1));
|
||||
assertEquals(Arrays.asList(0), instance.convertWorkingDaysToDays(0));
|
||||
assertEquals(Arrays.asList(1), instance.convertWorkingDaysToDays(1));
|
||||
assertEquals(Arrays.asList(2), instance.convertWorkingDaysToDays(2));
|
||||
assertEquals(Arrays.asList(3, 4, 5), instance.convertWorkingDaysToDays(3));
|
||||
assertEquals(Arrays.asList(6), instance.convertWorkingDaysToDays(4));
|
||||
assertEquals(Arrays.asList(7), instance.convertWorkingDaysToDays(5));
|
||||
assertEquals(Arrays.asList(8), instance.convertWorkingDaysToDays(6));
|
||||
assertEquals(Arrays.asList(9), instance.convertWorkingDaysToDays(7));
|
||||
assertEquals(Arrays.asList(10, 11, 12), instance.convertWorkingDaysToDays(8));
|
||||
assertEquals(Arrays.asList(13), instance.convertWorkingDaysToDays(9));
|
||||
assertEquals(Arrays.asList(14), instance.convertWorkingDaysToDays(10));
|
||||
assertEquals(Arrays.asList(15), instance.convertWorkingDaysToDays(11));
|
||||
|
||||
assertEquals(12, instance.convertWorkingDaysToDays(12));
|
||||
assertEquals(13, instance.convertWorkingDaysToDays(13));
|
||||
assertEquals(Arrays.asList(12), instance.convertWorkingDaysToDays(12));
|
||||
assertEquals(Arrays.asList(13), instance.convertWorkingDaysToDays(13));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConvertWorkingDaysToDaysAtWeekend() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysConverter instance = DaysToWorkingDaysConverter
|
||||
.initialize(getLargeListOfReportLineItemDefinitions(), Instant.parse("2018-03-10T00:00:00.000Z"));
|
||||
|
||||
assertEquals(Arrays.asList(-13), instance.convertWorkingDaysToDays(-13));
|
||||
assertEquals(Arrays.asList(-12), instance.convertWorkingDaysToDays(-12));
|
||||
|
||||
assertEquals(Arrays.asList(-10), instance.convertWorkingDaysToDays(-8));
|
||||
assertEquals(Arrays.asList(-9), instance.convertWorkingDaysToDays(-7));
|
||||
assertEquals(Arrays.asList(-8), instance.convertWorkingDaysToDays(-6));
|
||||
assertEquals(Arrays.asList(-5, -6, -7), instance.convertWorkingDaysToDays(-5));
|
||||
assertEquals(Arrays.asList(-4), instance.convertWorkingDaysToDays(-4));
|
||||
assertEquals(Arrays.asList(-3), instance.convertWorkingDaysToDays(-3));
|
||||
assertEquals(Arrays.asList(-2), instance.convertWorkingDaysToDays(-2));
|
||||
assertEquals(Arrays.asList(-1), instance.convertWorkingDaysToDays(-1));
|
||||
assertEquals(Arrays.asList(0, 1), instance.convertWorkingDaysToDays(0));
|
||||
assertEquals(Arrays.asList(2), instance.convertWorkingDaysToDays(1));
|
||||
assertEquals(Arrays.asList(3), instance.convertWorkingDaysToDays(2));
|
||||
assertEquals(Arrays.asList(4), instance.convertWorkingDaysToDays(3));
|
||||
assertEquals(Arrays.asList(5), instance.convertWorkingDaysToDays(4));
|
||||
assertEquals(Arrays.asList(6, 7, 8), instance.convertWorkingDaysToDays(5));
|
||||
assertEquals(Arrays.asList(9), instance.convertWorkingDaysToDays(6));
|
||||
assertEquals(Arrays.asList(10), instance.convertWorkingDaysToDays(7));
|
||||
assertEquals(Arrays.asList(11), instance.convertWorkingDaysToDays(8));
|
||||
assertEquals(Arrays.asList(12), instance.convertWorkingDaysToDays(9));
|
||||
assertEquals(Arrays.asList(13, 14, 15), instance.convertWorkingDaysToDays(10));
|
||||
assertEquals(Arrays.asList(16), instance.convertWorkingDaysToDays(11));
|
||||
|
||||
assertEquals(Arrays.asList(12), instance.convertWorkingDaysToDays(12));
|
||||
assertEquals(Arrays.asList(13), instance.convertWorkingDaysToDays(13));
|
||||
}
|
||||
|
||||
@Test
|
||||
public void testConvertWorkingDaysToDaysOnEasterSunday() throws InvalidArgumentException {
|
||||
DaysToWorkingDaysConverter instance = DaysToWorkingDaysConverter
|
||||
.initialize(getLargeListOfReportLineItemDefinitions(), Instant.parse("2018-04-01T00:00:00.000Z"));
|
||||
|
||||
assertEquals(Arrays.asList(-13), instance.convertWorkingDaysToDays(-13));
|
||||
assertEquals(Arrays.asList(-12), instance.convertWorkingDaysToDays(-12));
|
||||
|
||||
assertEquals(Arrays.asList(-12), instance.convertWorkingDaysToDays(-8));
|
||||
assertEquals(Arrays.asList(-11), instance.convertWorkingDaysToDays(-7));
|
||||
assertEquals(Arrays.asList(-10), instance.convertWorkingDaysToDays(-6));
|
||||
assertEquals(Arrays.asList(-9), instance.convertWorkingDaysToDays(-5));
|
||||
assertEquals(Arrays.asList(-6, -7, -8), instance.convertWorkingDaysToDays(-4));
|
||||
assertEquals(Arrays.asList(-5), instance.convertWorkingDaysToDays(-3));
|
||||
assertEquals(Arrays.asList(-4), instance.convertWorkingDaysToDays(-2));
|
||||
assertEquals(Arrays.asList(-3), instance.convertWorkingDaysToDays(-1));
|
||||
assertEquals(Arrays.asList(0, 1, -1, -2), instance.convertWorkingDaysToDays(0));
|
||||
assertEquals(Arrays.asList(2), instance.convertWorkingDaysToDays(1));
|
||||
assertEquals(Arrays.asList(3), instance.convertWorkingDaysToDays(2));
|
||||
assertEquals(Arrays.asList(4), instance.convertWorkingDaysToDays(3));
|
||||
assertEquals(Arrays.asList(5, 6, 7), instance.convertWorkingDaysToDays(4));
|
||||
assertEquals(Arrays.asList(8), instance.convertWorkingDaysToDays(5));
|
||||
assertEquals(Arrays.asList(9), instance.convertWorkingDaysToDays(6));
|
||||
assertEquals(Arrays.asList(10), instance.convertWorkingDaysToDays(7));
|
||||
assertEquals(Arrays.asList(11), instance.convertWorkingDaysToDays(8));
|
||||
assertEquals(Arrays.asList(12, 13, 14), instance.convertWorkingDaysToDays(9));
|
||||
assertEquals(Arrays.asList(15), instance.convertWorkingDaysToDays(10));
|
||||
assertEquals(Arrays.asList(16), instance.convertWorkingDaysToDays(11));
|
||||
|
||||
assertEquals(Arrays.asList(12), instance.convertWorkingDaysToDays(12));
|
||||
assertEquals(Arrays.asList(13), instance.convertWorkingDaysToDays(13));
|
||||
}
|
||||
|
||||
@Test
|
||||
|
|
Loading…
Reference in New Issue