TSK-321: Change LocalDate to Instant in DaysToWorkingDaysConverter
- The instant is converted back to LocalDateTime to check whether a day is saturday or sunday - Update also the unit test for this converter
This commit is contained in:
parent
4c9dd20f39
commit
11442571f2
|
@ -1,7 +1,10 @@
|
|||
package pro.taskana.impl;
|
||||
|
||||
import java.time.DayOfWeek;
|
||||
import java.time.LocalDate;
|
||||
import java.time.Instant;
|
||||
import java.time.LocalDateTime;
|
||||
import java.time.ZoneId;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -23,10 +26,10 @@ public final class DaysToWorkingDaysConverter {
|
|||
private static DaysToWorkingDaysConverter instance;
|
||||
private static ArrayList<Integer> positiveDaysToWorkingDays;
|
||||
private static ArrayList<Integer> negativeDaysToWorkingDays;
|
||||
private static LocalDate dateCreated;
|
||||
private static Instant dateCreated;
|
||||
|
||||
private DaysToWorkingDaysConverter(List<ReportLineItemDefinition> reportLineItemDefinitions,
|
||||
LocalDate referenceDate) {
|
||||
Instant referenceDate) {
|
||||
positiveDaysToWorkingDays = generatePositiveDaysToWorkingDays(reportLineItemDefinitions, referenceDate);
|
||||
negativeDaysToWorkingDays = generateNegativeDaysToWorkingDays(reportLineItemDefinitions, referenceDate);
|
||||
dateCreated = referenceDate;
|
||||
|
@ -41,7 +44,7 @@ public final class DaysToWorkingDaysConverter {
|
|||
* @return an instance of the DaysToWorkingDaysConverter
|
||||
*/
|
||||
public static DaysToWorkingDaysConverter initialize(List<ReportLineItemDefinition> reportLineItemDefinitions) {
|
||||
return initialize(reportLineItemDefinitions, LocalDate.now());
|
||||
return initialize(reportLineItemDefinitions, Instant.now());
|
||||
}
|
||||
|
||||
/**
|
||||
|
@ -51,11 +54,11 @@ public final class DaysToWorkingDaysConverter {
|
|||
* @param reportLineItemDefinitions
|
||||
* a list of {@link ReportLineItemDefinition}s that determines the size of the table
|
||||
* @param referenceDate
|
||||
* a {@link LocalDate} that represents the current day of the table
|
||||
* a {@link Instant} that represents the current day of the table
|
||||
* @return an instance of the DaysToWorkingDaysConverter
|
||||
*/
|
||||
public static DaysToWorkingDaysConverter initialize(List<ReportLineItemDefinition> reportLineItemDefinitions,
|
||||
LocalDate referenceDate) {
|
||||
Instant referenceDate) {
|
||||
if (LOGGER.isDebugEnabled()) {
|
||||
LOGGER.debug("Initialize DaysToWorkingDaysConverter with reportLineItemDefinitions: {}",
|
||||
LoggerUtils.listToString(reportLineItemDefinitions));
|
||||
|
@ -65,7 +68,7 @@ public final class DaysToWorkingDaysConverter {
|
|||
if (instance == null
|
||||
|| !positiveDaysToWorkingDays.contains(largesLowerLimit)
|
||||
|| !negativeDaysToWorkingDays.contains(smallestUpperLimit)
|
||||
|| !dateCreated.isEqual(referenceDate)) {
|
||||
|| !dateCreated.truncatedTo(ChronoUnit.DAYS).equals(referenceDate.truncatedTo(ChronoUnit.DAYS))) {
|
||||
|
||||
instance = new DaysToWorkingDaysConverter(reportLineItemDefinitions, referenceDate);
|
||||
LOGGER.debug("Create new converter for the values from {} until {} for the date: {}.", largesLowerLimit,
|
||||
|
@ -99,7 +102,7 @@ public final class DaysToWorkingDaysConverter {
|
|||
}
|
||||
|
||||
private ArrayList<Integer> generateNegativeDaysToWorkingDays(
|
||||
List<ReportLineItemDefinition> reportLineItemDefinitions, LocalDate referenceDate) {
|
||||
List<ReportLineItemDefinition> reportLineItemDefinitions, Instant referenceDate) {
|
||||
int minUpperLimit = getSmallestUpperLimit(reportLineItemDefinitions);
|
||||
ArrayList<Integer> daysToWorkingDays = new ArrayList<>();
|
||||
daysToWorkingDays.add(0);
|
||||
|
@ -116,7 +119,7 @@ public final class DaysToWorkingDaysConverter {
|
|||
}
|
||||
|
||||
private ArrayList<Integer> generatePositiveDaysToWorkingDays(
|
||||
List<ReportLineItemDefinition> reportLineItemDefinitions, LocalDate referenceDate) {
|
||||
List<ReportLineItemDefinition> reportLineItemDefinitions, Instant referenceDate) {
|
||||
int maxLowerLimit = getLargestLowerLimit(reportLineItemDefinitions);
|
||||
ArrayList<Integer> daysToWorkingDays = new ArrayList<>();
|
||||
daysToWorkingDays.add(0);
|
||||
|
@ -153,9 +156,11 @@ public final class DaysToWorkingDaysConverter {
|
|||
return greatestLowerLimit;
|
||||
}
|
||||
|
||||
private boolean isWorkingDay(int day, LocalDate referenceDate) {
|
||||
if (referenceDate.plusDays(day).getDayOfWeek().equals(DayOfWeek.SATURDAY)
|
||||
|| referenceDate.plusDays(day).getDayOfWeek().equals(DayOfWeek.SUNDAY)) {
|
||||
private boolean isWorkingDay(int day, Instant referenceDate) {
|
||||
if (LocalDateTime.ofInstant(referenceDate, ZoneId.systemDefault()).plusDays(day).getDayOfWeek().equals(
|
||||
DayOfWeek.SATURDAY)
|
||||
|| LocalDateTime.ofInstant(referenceDate, ZoneId.systemDefault()).plusDays(day).getDayOfWeek().equals(
|
||||
DayOfWeek.SUNDAY)) {
|
||||
return false;
|
||||
}
|
||||
return true;
|
||||
|
|
|
@ -3,7 +3,7 @@ package pro.taskana.impl;
|
|||
import static org.junit.Assert.assertEquals;
|
||||
import static org.junit.Assert.assertNotEquals;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.Instant;
|
||||
import java.util.ArrayList;
|
||||
import java.util.List;
|
||||
|
||||
|
@ -17,11 +17,11 @@ public class DaysToWorkingDaysConverterTest {
|
|||
@Test
|
||||
public void testInitializeForDifferentReportLineItemDefinitions() {
|
||||
DaysToWorkingDaysConverter instance1 = DaysToWorkingDaysConverter
|
||||
.initialize(getShortListOfReportLineItemDefinitions(), LocalDate.of(2018, 02, 03));
|
||||
.initialize(getShortListOfReportLineItemDefinitions(), Instant.parse("2018-02-03T00:00:00.000Z"));
|
||||
DaysToWorkingDaysConverter instance2 = DaysToWorkingDaysConverter
|
||||
.initialize(getShortListOfReportLineItemDefinitions(), LocalDate.of(2018, 02, 03));
|
||||
.initialize(getShortListOfReportLineItemDefinitions(), Instant.parse("2018-02-03T00:00:00.000Z"));
|
||||
DaysToWorkingDaysConverter instance3 = DaysToWorkingDaysConverter
|
||||
.initialize(getLargeListOfReportLineItemDefinitions(), LocalDate.of(2018, 02, 03));
|
||||
.initialize(getLargeListOfReportLineItemDefinitions(), Instant.parse("2018-02-03T00:00:00.000Z"));
|
||||
|
||||
assertEquals(instance1, instance2);
|
||||
assertNotEquals(instance1, instance3);
|
||||
|
@ -30,9 +30,9 @@ public class DaysToWorkingDaysConverterTest {
|
|||
@Test
|
||||
public void testInitializeForDifferentDates() {
|
||||
DaysToWorkingDaysConverter instance1 = DaysToWorkingDaysConverter
|
||||
.initialize(getShortListOfReportLineItemDefinitions(), LocalDate.of(2018, 02, 04));
|
||||
.initialize(getShortListOfReportLineItemDefinitions(), Instant.parse("2018-02-04T00:00:00.000Z"));
|
||||
DaysToWorkingDaysConverter instance2 = DaysToWorkingDaysConverter
|
||||
.initialize(getShortListOfReportLineItemDefinitions(), LocalDate.of(2018, 02, 05));
|
||||
.initialize(getShortListOfReportLineItemDefinitions(), Instant.parse("2018-02-05T00:00:00.000Z"));
|
||||
|
||||
assertNotEquals(instance1, instance2);
|
||||
}
|
||||
|
@ -40,7 +40,7 @@ public class DaysToWorkingDaysConverterTest {
|
|||
@Test
|
||||
public void testConvertDaysToWorkingDays() {
|
||||
DaysToWorkingDaysConverter instance = DaysToWorkingDaysConverter
|
||||
.initialize(getLargeListOfReportLineItemDefinitions(), LocalDate.of(2018, 02, 06));
|
||||
.initialize(getLargeListOfReportLineItemDefinitions(), Instant.parse("2018-02-06T00:00:00.000Z"));
|
||||
|
||||
assertEquals(16, instance.convertDaysToWorkingDays(16));
|
||||
assertEquals(11, instance.convertDaysToWorkingDays(15));
|
||||
|
|
Loading…
Reference in New Issue