From 7b1e3c70f1332c080f0efd544061b0b4c1a60b6d Mon Sep 17 00:00:00 2001 From: Andrea De Matteis Date: Tue, 27 Oct 2020 11:39:21 +0100 Subject: [PATCH] Fixed bug on changing dates from CEST to CET + minor enhancements --- .gitignore | 11 ++++++++--- .idea/encodings.xml | 8 -------- .idea/misc.xml | 16 ---------------- .../net/ddns/andrewnetwork/MainPresenter.java | 3 ++- .../andrewnetwork/helpers/async/AsyncCall.java | 5 +++++ .../helpers/util/time/DateUtil.java | 5 ++++- 6 files changed, 19 insertions(+), 29 deletions(-) delete mode 100644 .idea/encodings.xml delete mode 100644 .idea/misc.xml diff --git a/.gitignore b/.gitignore index 3db9e5e..4ccd098 100644 --- a/.gitignore +++ b/.gitignore @@ -1,4 +1,9 @@ *.iml -/.idea/ -/target/ -/out/ \ No newline at end of file +.idea +target/ +out/ + +*.config +dependency-reduced-pom.xml + +*.json diff --git a/.idea/encodings.xml b/.idea/encodings.xml deleted file mode 100644 index 78bf31c..0000000 --- a/.idea/encodings.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml deleted file mode 100644 index a84aa0b..0000000 --- a/.idea/misc.xml +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - \ No newline at end of file diff --git a/src/main/java/net/ddns/andrewnetwork/MainPresenter.java b/src/main/java/net/ddns/andrewnetwork/MainPresenter.java index 0f45fcb..0fc5fa1 100644 --- a/src/main/java/net/ddns/andrewnetwork/MainPresenter.java +++ b/src/main/java/net/ddns/andrewnetwork/MainPresenter.java @@ -2,6 +2,7 @@ import net.ddns.andrewnetwork.helpers.async.AsyncCall; import net.ddns.andrewnetwork.helpers.util.Wrapper2; +import net.ddns.andrewnetwork.helpers.util.time.DateUtil; import net.ddns.andrewnetwork.model.CovidItaData; import net.ddns.andrewnetwork.model.CovidRegionData; import rx.Observable; @@ -21,7 +22,7 @@ private static void handleAllData(Wrapper2> Set datesRegions = covidRegionDataList.stream().map(CovidItaData::getDate).collect(Collectors.toSet()); - if (!datesRegions.stream().allMatch(dateRegion -> dateRegion.equals(covidItaData.getDate()))) { + if (!datesRegions.stream().allMatch(dateRegion -> DateUtil.isSameDay(dateRegion, covidItaData.getDate()))) { throw new IllegalArgumentException("Dates are not equals. You can't put together CovidItaData and CovidRegionData with different days."); } diff --git a/src/main/java/net/ddns/andrewnetwork/helpers/async/AsyncCall.java b/src/main/java/net/ddns/andrewnetwork/helpers/async/AsyncCall.java index 530d01f..248a19f 100644 --- a/src/main/java/net/ddns/andrewnetwork/helpers/async/AsyncCall.java +++ b/src/main/java/net/ddns/andrewnetwork/helpers/async/AsyncCall.java @@ -56,6 +56,8 @@ public static Observable getAllItalyDataFrom(Date date) { for (CovidItaData covidItaData : newData) { covidItaData = computeVariationsItalyData(covidItaData); + + DateUtil.setMidnight(covidItaData.getDate()); emitter.onNext(covidItaData); } @@ -98,6 +100,9 @@ private static void handleAllRegions(String[] regions, Subscriber covidRegionDataList = regionsByDate.get(keyDate); covidRegionDataList = computeVariationsRegionsData(regions, covidRegionDataList); + + covidRegionDataList.forEach(covidRegionData -> covidRegionData.setDate(DateUtil.setMidnight(covidRegionData.getDate()))); + emitter.onNext(covidRegionDataList); } diff --git a/src/main/java/net/ddns/andrewnetwork/helpers/util/time/DateUtil.java b/src/main/java/net/ddns/andrewnetwork/helpers/util/time/DateUtil.java index 46d31c5..a173576 100644 --- a/src/main/java/net/ddns/andrewnetwork/helpers/util/time/DateUtil.java +++ b/src/main/java/net/ddns/andrewnetwork/helpers/util/time/DateUtil.java @@ -3,12 +3,14 @@ import java.util.Calendar; import java.util.Collection; import java.util.Date; +import java.util.Locale; import java.util.stream.Collectors; import java.util.stream.Stream; public class DateUtil { public static final String DATE_TIME_FORMAT = "yyyy-MM-dd'T'HH:mm:ss"; private static final long DATE_TIME_24 = 24*60*60*1000; + private static final long DATE_TIME_24_CET_TO_CEST = 24*60*60*1000 + 60 * 60 * 1000; public static Date twoHourAfter(Date date) { return minutesAfter(date, 120); @@ -67,7 +69,8 @@ public static boolean isTomorrowDay(Date date1, Date date2) { dateCloned1 = DateUtil.setMidnight(dateCloned1); dateCloned2 = DateUtil.setMidnight(dateCloned2); - return Math.abs(dateCloned1.getTime() - dateCloned2.getTime()) == DATE_TIME_24; + long timeDifference = Math.abs(dateCloned1.getTime() - dateCloned2.getTime()); + return timeDifference == DATE_TIME_24 || timeDifference == DATE_TIME_24_CET_TO_CEST; } public static boolean isTomorrowDay(Calendar date1, Calendar date2) {