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
|
* 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
|
* created by initialization. Because one age in working days could match to more than one age in days, the return
|
||||||
* returned unchanged.
|
* 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
|
* @param ageInWorkingDays
|
||||||
* represents the age in working days
|
* 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 minWorkingDay = negativeDaysToWorkingDays.get(negativeDaysToWorkingDays.size() - 1);
|
||||||
int maxWorkingDay = positiveDaysToWorkingDays.get(positiveDaysToWorkingDays.size() - 1);
|
int maxWorkingDay = positiveDaysToWorkingDays.get(positiveDaysToWorkingDays.size() - 1);
|
||||||
|
|
||||||
int ageInDays = 0;
|
|
||||||
if (ageInWorkingDays >= minWorkingDay && ageInWorkingDays < 0) {
|
if (ageInWorkingDays >= minWorkingDay && ageInWorkingDays < 0) {
|
||||||
while (negativeDaysToWorkingDays.get(ageInDays) > ageInWorkingDays) {
|
for (int ageInDays = 0; ageInDays < negativeDaysToWorkingDays.size(); ageInDays++) {
|
||||||
ageInDays++;
|
if (negativeDaysToWorkingDays.get(ageInDays) == ageInWorkingDays) {
|
||||||
|
list.add(-ageInDays);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
return -ageInDays;
|
return list;
|
||||||
}
|
}
|
||||||
if (ageInWorkingDays > 0 && ageInWorkingDays <= maxWorkingDay) {
|
if (ageInWorkingDays > 0 && ageInWorkingDays <= maxWorkingDay) {
|
||||||
while (positiveDaysToWorkingDays.get(ageInDays) < ageInWorkingDays) {
|
for (int ageInDays = 0; ageInDays < positiveDaysToWorkingDays.size(); ageInDays++) {
|
||||||
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) {
|
public long convertWorkingDaysToDays(Instant startTime, long numberOfDays) {
|
||||||
|
|
|
||||||
|
|
@ -1,5 +1,6 @@
|
||||||
package pro.taskana.impl;
|
package pro.taskana.impl;
|
||||||
|
|
||||||
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
import org.slf4j.Logger;
|
import org.slf4j.Logger;
|
||||||
|
|
@ -322,8 +323,10 @@ public class TaskMonitorServiceImpl implements TaskMonitorService {
|
||||||
|
|
||||||
DaysToWorkingDaysConverter instance = DaysToWorkingDaysConverter.initialize(reportLineItemDefinitions);
|
DaysToWorkingDaysConverter instance = DaysToWorkingDaysConverter.initialize(reportLineItemDefinitions);
|
||||||
for (SelectedItem selectedItem : selectedItems) {
|
for (SelectedItem selectedItem : selectedItems) {
|
||||||
selectedItem.setLowerAgeLimit(instance.convertWorkingDaysToDays(selectedItem.getLowerAgeLimit()));
|
selectedItem
|
||||||
selectedItem.setUpperAgeLimit(instance.convertWorkingDaysToDays(selectedItem.getUpperAgeLimit()));
|
.setLowerAgeLimit(Collections.min(instance.convertWorkingDaysToDays(selectedItem.getLowerAgeLimit())));
|
||||||
|
selectedItem
|
||||||
|
.setUpperAgeLimit(Collections.max(instance.convertWorkingDaysToDays(selectedItem.getUpperAgeLimit())));
|
||||||
}
|
}
|
||||||
return selectedItems;
|
return selectedItems;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -136,32 +136,98 @@ public class DaysToWorkingDaysConverterTest {
|
||||||
DaysToWorkingDaysConverter instance = DaysToWorkingDaysConverter
|
DaysToWorkingDaysConverter instance = DaysToWorkingDaysConverter
|
||||||
.initialize(getLargeListOfReportLineItemDefinitions(), Instant.parse("2018-02-27T00:00:00.000Z"));
|
.initialize(getLargeListOfReportLineItemDefinitions(), Instant.parse("2018-02-27T00:00:00.000Z"));
|
||||||
|
|
||||||
assertEquals(-13, instance.convertWorkingDaysToDays(-13));
|
assertEquals(Arrays.asList(-13), instance.convertWorkingDaysToDays(-13));
|
||||||
assertEquals(-12, instance.convertWorkingDaysToDays(-12));
|
assertEquals(Arrays.asList(-12), instance.convertWorkingDaysToDays(-12));
|
||||||
|
|
||||||
assertEquals(-12, instance.convertWorkingDaysToDays(-8));
|
assertEquals(Arrays.asList(-12), instance.convertWorkingDaysToDays(-8));
|
||||||
assertEquals(-11, instance.convertWorkingDaysToDays(-7));
|
assertEquals(Arrays.asList(-11), instance.convertWorkingDaysToDays(-7));
|
||||||
assertEquals(-8, instance.convertWorkingDaysToDays(-6));
|
assertEquals(Arrays.asList(-8, -9, -10), instance.convertWorkingDaysToDays(-6));
|
||||||
assertEquals(-7, instance.convertWorkingDaysToDays(-5));
|
assertEquals(Arrays.asList(-7), instance.convertWorkingDaysToDays(-5));
|
||||||
assertEquals(-6, instance.convertWorkingDaysToDays(-4));
|
assertEquals(Arrays.asList(-6), instance.convertWorkingDaysToDays(-4));
|
||||||
assertEquals(-5, instance.convertWorkingDaysToDays(-3));
|
assertEquals(Arrays.asList(-5), instance.convertWorkingDaysToDays(-3));
|
||||||
assertEquals(-4, instance.convertWorkingDaysToDays(-2));
|
assertEquals(Arrays.asList(-4), instance.convertWorkingDaysToDays(-2));
|
||||||
assertEquals(-1, instance.convertWorkingDaysToDays(-1));
|
assertEquals(Arrays.asList(-1, -2, -3), instance.convertWorkingDaysToDays(-1));
|
||||||
assertEquals(0, instance.convertWorkingDaysToDays(0));
|
assertEquals(Arrays.asList(0), instance.convertWorkingDaysToDays(0));
|
||||||
assertEquals(1, instance.convertWorkingDaysToDays(1));
|
assertEquals(Arrays.asList(1), instance.convertWorkingDaysToDays(1));
|
||||||
assertEquals(2, instance.convertWorkingDaysToDays(2));
|
assertEquals(Arrays.asList(2), instance.convertWorkingDaysToDays(2));
|
||||||
assertEquals(3, instance.convertWorkingDaysToDays(3));
|
assertEquals(Arrays.asList(3, 4, 5), instance.convertWorkingDaysToDays(3));
|
||||||
assertEquals(6, instance.convertWorkingDaysToDays(4));
|
assertEquals(Arrays.asList(6), instance.convertWorkingDaysToDays(4));
|
||||||
assertEquals(7, instance.convertWorkingDaysToDays(5));
|
assertEquals(Arrays.asList(7), instance.convertWorkingDaysToDays(5));
|
||||||
assertEquals(8, instance.convertWorkingDaysToDays(6));
|
assertEquals(Arrays.asList(8), instance.convertWorkingDaysToDays(6));
|
||||||
assertEquals(9, instance.convertWorkingDaysToDays(7));
|
assertEquals(Arrays.asList(9), instance.convertWorkingDaysToDays(7));
|
||||||
assertEquals(10, instance.convertWorkingDaysToDays(8));
|
assertEquals(Arrays.asList(10, 11, 12), instance.convertWorkingDaysToDays(8));
|
||||||
assertEquals(13, instance.convertWorkingDaysToDays(9));
|
assertEquals(Arrays.asList(13), instance.convertWorkingDaysToDays(9));
|
||||||
assertEquals(14, instance.convertWorkingDaysToDays(10));
|
assertEquals(Arrays.asList(14), instance.convertWorkingDaysToDays(10));
|
||||||
assertEquals(15, instance.convertWorkingDaysToDays(11));
|
assertEquals(Arrays.asList(15), instance.convertWorkingDaysToDays(11));
|
||||||
|
|
||||||
assertEquals(12, instance.convertWorkingDaysToDays(12));
|
assertEquals(Arrays.asList(12), instance.convertWorkingDaysToDays(12));
|
||||||
assertEquals(13, instance.convertWorkingDaysToDays(13));
|
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
|
@Test
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue