From 090616d05d81c8b52d6a1fb2eec16e3c4f9ad452 Mon Sep 17 00:00:00 2001 From: Jonas Tobias Hopusch Date: Thu, 9 Sep 2021 23:09:26 +0200 Subject: [PATCH] Move functions into separate kotlin files --- .../kotlin/de/jotoho/waituntil/sleeping.kt | 25 +++++++++++ .../main/kotlin/de/jotoho/waituntil/start.kt | 41 ++----------------- .../kotlin/de/jotoho/waituntil/timecalc.kt | 41 +++++++++++++++++++ 3 files changed, 69 insertions(+), 38 deletions(-) create mode 100644 app/src/main/kotlin/de/jotoho/waituntil/sleeping.kt create mode 100644 app/src/main/kotlin/de/jotoho/waituntil/timecalc.kt diff --git a/app/src/main/kotlin/de/jotoho/waituntil/sleeping.kt b/app/src/main/kotlin/de/jotoho/waituntil/sleeping.kt new file mode 100644 index 0000000..8feb564 --- /dev/null +++ b/app/src/main/kotlin/de/jotoho/waituntil/sleeping.kt @@ -0,0 +1,25 @@ +package de.jotoho.waituntil + +import java.lang.Math +import java.time.Instant +import java.time.ZonedDateTime +import java.time.format.DateTimeFormatter +import java.time.format.FormatStyle +import java.time.temporal.ChronoUnit +import java.util.TimeZone + +public fun waitUntilTimeStamp(timestamp: ZonedDateTime) { + Thread.sleep(Math.max(Instant.now().until(timestamp, ChronoUnit.MILLIS), 0)) + + val formattedTimeStamp: String = + DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG) + .withZone(TimeZone.getDefault().toZoneId()) + .format(Instant.now()) + + when (applicationOutputLanguage) { + langGerman -> System.err.println("Erfolgreich bis $formattedTimeStamp gewartet!") + else -> { + System.err.println("Successfully waited until $formattedTimeStamp") + } + } +} diff --git a/app/src/main/kotlin/de/jotoho/waituntil/start.kt b/app/src/main/kotlin/de/jotoho/waituntil/start.kt index 32f4911..abfdc68 100644 --- a/app/src/main/kotlin/de/jotoho/waituntil/start.kt +++ b/app/src/main/kotlin/de/jotoho/waituntil/start.kt @@ -2,7 +2,6 @@ package de.jotoho.waituntil import java.util.Locale import java.time.format.DateTimeFormatter -import java.time.format.FormatStyle import java.util.TimeZone import java.time.Instant import java.time.LocalTime @@ -10,6 +9,9 @@ import java.time.LocalDate import java.time.ZonedDateTime import java.time.temporal.ChronoUnit +import de.jotoho.waituntil.waitUntilTimeStamp +import de.jotoho.waituntil.calculateAndAnnounceTargetTime + // This file contains the main function and other utility function necessary for interpreting the terminal arguments. // See README.md and LICENSE.md for license information // Author: Jonas Tobias Hopusch (@jotoho) @@ -19,43 +21,6 @@ val applicationOutputLanguage: String = if (Locale.getDefault().getLanguage().eq Locale.GERMAN.getLanguage() else Locale.ENGLISH.getLanguage(); -fun waitUntilTimeStamp(timestamp: ZonedDateTime) { - Thread.sleep( - Math.max(Instant.now().until(timestamp, ChronoUnit.MILLIS), 0) - ); - - val formattedTimeStamp: String = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG) - .withZone(TimeZone.getDefault().toZoneId()) - .format(Instant.now()); - - when (applicationOutputLanguage) { - langGerman -> System.err.println("Erfolgreich bis $formattedTimeStamp gewartet!"); - else -> { - System.err.println("Successfully waited until $formattedTimeStamp"); - } - } -} - -fun calculateAndAnnounceTargetTime(userTimeInputRaw: String): ZonedDateTime { - val userTimeInputRelative = LocalTime.parse(userTimeInputRaw); - val userTimeInputAbsolute = ZonedDateTime.of(LocalDate.now(), userTimeInputRelative, TimeZone.getDefault().toZoneId()); - - val userTimeInputFinal = if (Instant.now().isBefore(userTimeInputAbsolute.toInstant())) userTimeInputAbsolute else userTimeInputAbsolute.plusDays(1); - - val formattedTimeStamp = userTimeInputFinal.format( - DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG) - ); - - when (applicationOutputLanguage) { - langGerman -> System.err.println("Dieses Program wird bis zum $formattedTimeStamp warten."); - else -> { - println("WaitUntil will suspend until $formattedTimeStamp"); - } - } - - return userTimeInputFinal; -} - fun main(args: Array) { val optionDictionary = mapOf(Pair("-h", "--help")); diff --git a/app/src/main/kotlin/de/jotoho/waituntil/timecalc.kt b/app/src/main/kotlin/de/jotoho/waituntil/timecalc.kt new file mode 100644 index 0000000..36c17a8 --- /dev/null +++ b/app/src/main/kotlin/de/jotoho/waituntil/timecalc.kt @@ -0,0 +1,41 @@ +package de.jotoho.waituntil + +import java.time.Instant +import java.time.LocalDate +import java.time.LocalTime +import java.time.ZonedDateTime +import java.time.format.DateTimeFormatter +import java.time.format.FormatStyle +import java.util.TimeZone + +public fun calculateAndAnnounceTargetTime(userTimeInputRaw: String): ZonedDateTime { + val userTimeInputRelative = LocalTime.parse(userTimeInputRaw) + val userTimeInputAbsolute = + ZonedDateTime.of( + LocalDate.now(), + userTimeInputRelative, + TimeZone.getDefault().toZoneId() + ) + + val userTimeInputFinal = + if (Instant.now().isBefore(userTimeInputAbsolute.toInstant())) + userTimeInputAbsolute + else userTimeInputAbsolute.plusDays(1) + + val formattedTimeStamp = + userTimeInputFinal.format( + DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG) + ) + + when (applicationOutputLanguage) { + langGerman -> + System.err.println( + "Dieses Program wird bis zum $formattedTimeStamp warten." + ) + else -> { + println("WaitUntil will suspend until $formattedTimeStamp") + } + } + + return userTimeInputFinal +}