waituntil/src/main/java/de/jotoho/waituntil/Sleep.java

54 lines
2.1 KiB
Java
Raw Normal View History

2021-12-01 14:36:07 +01:00
package de.jotoho.waituntil;
/*
waituntil - a tool for delaying command execution until the specified time
Copyright (C) 2022 Jonas Tobias Hopusch
This program is free software: you can redistribute it and/or modify
it under the terms of the GNU Affero General Public License as
published by the Free Software Foundation, either version 3 of the
License, or (at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU Affero General Public License for more details.
You should have received a copy of the GNU Affero General Public License
along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
2021-12-01 14:36:07 +01:00
import java.time.Instant;
import java.time.ZonedDateTime;
import java.time.format.DateTimeFormatter;
import java.time.format.FormatStyle;
import java.time.temporal.ChronoUnit;
2022-03-12 03:45:06 +01:00
import java.util.TimeZone;
2021-12-01 14:36:07 +01:00
import static java.lang.System.Logger.Level;
2021-12-01 14:36:07 +01:00
public final class Sleep {
public static void waitUntilTimeStamp(ZonedDateTime timestamp) {
try {
Thread.sleep(Math.max(0,
2022-03-12 15:40:06 +01:00
Instant.now()
.until(timestamp, ChronoUnit.MILLIS)));
2021-12-01 14:36:07 +01:00
} catch (final InterruptedException ignored) {
}
2022-03-12 15:40:06 +01:00
final String formattedTimeStamp = DateTimeFormatter.ofLocalizedDateTime(FormatStyle.LONG)
.withZone(TimeZone.getDefault()
.toZoneId())
.format(Instant.now());
2021-12-01 14:36:07 +01:00
final String msg = switch (GlobalConf.applicationOutputLanguage) {
case GlobalConf.langGerman -> "Erfolgreich bis %s gewartet!";
default -> "Successfully waited until %s";
};
final String msgWithData = msg.formatted(formattedTimeStamp);
2022-03-12 15:40:06 +01:00
System.getLogger("sleep")
.log(Level.INFO, msgWithData);
2021-12-01 14:36:07 +01:00
}
}