From 2d78471e70969acf133136b6889cf3a2bde4fdda Mon Sep 17 00:00:00 2001 From: Philipp Woessner <64482866+pwoessner@users.noreply.github.com> Date: Thu, 2 Jul 2020 15:55:23 +0200 Subject: [PATCH] Correct rounding of active tracing days (#801) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * added a check for manual mode when updating on app start * added logging for conditions * added comments * round the sum of days that were traced up when reaching the half day Co-authored-by: Jakob Möller <jakob.moeller@sap.com> --- .../java/de/rki/coronawarnapp/risk/TimeVariables.kt | 5 +++-- .../rki/coronawarnapp/util/TimeAndDateExtensions.kt | 12 ++++++++++++ 2 files changed, 15 insertions(+), 2 deletions(-) diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/TimeVariables.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/TimeVariables.kt index 1dc1d93d7..3a91a3abb 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/TimeVariables.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/risk/TimeVariables.kt @@ -9,7 +9,7 @@ import de.rki.coronawarnapp.nearby.InternalExposureNotificationClient import de.rki.coronawarnapp.storage.LocalData import de.rki.coronawarnapp.storage.tracing.TracingIntervalRepository import de.rki.coronawarnapp.util.TimeAndDateExtensions.daysToMilliseconds -import java.util.concurrent.TimeUnit +import de.rki.coronawarnapp.util.TimeAndDateExtensions.roundUpMsToDays object TimeVariables { @@ -211,7 +211,8 @@ object TimeVariables { val finalTracingMS = tracingActiveMS - inactiveTracingIntervals .map { it.second - it.first } .sum() - return TimeUnit.MILLISECONDS.toDays(finalTracingMS) + + return finalTracingMS.roundUpMsToDays() } /**************************************************** diff --git a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/TimeAndDateExtensions.kt b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/TimeAndDateExtensions.kt index 2970fbb25..46a40294c 100644 --- a/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/TimeAndDateExtensions.kt +++ b/Corona-Warn-App/src/main/java/de/rki/coronawarnapp/util/TimeAndDateExtensions.kt @@ -1,11 +1,14 @@ package de.rki.coronawarnapp.util import android.content.Context +import com.google.common.math.DoubleMath.roundToLong import org.joda.time.DateTime import org.joda.time.DateTimeZone import org.joda.time.Instant import org.joda.time.chrono.GJChronology import org.joda.time.format.DateTimeFormat +import timber.log.Timber +import java.math.RoundingMode import java.util.Date import java.util.concurrent.TimeUnit @@ -39,6 +42,15 @@ object TimeAndDateExtensions { return this.times(MS_TO_DAYS) } + fun Long.roundUpMsToDays(): Long { + val numberOfDays = this / MS_TO_DAYS.toDouble() + Timber.v("Number of days traced: $numberOfDays") + + return roundToLong(numberOfDays, RoundingMode.HALF_UP).also { + Timber.v("Rounded number of days to display: $it") + } + } + /** * Converts milliseconds to human readable format hh:mm:ss * -- GitLab