helper methods for printing to stdout

This commit is contained in:
2025-07-07 09:03:48 +02:00
parent f8ed1d185b
commit e0750ef26f

View File

@ -75,7 +75,7 @@ public class LoadingBar {
private static void askParametersAndRun() throws IOException { private static void askParametersAndRun() throws IOException {
var br = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8)); var br = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8));
System.out.print("Ankunftszeit: "); print("Ankunftszeit: ");
String startTimeRaw = br.readLine(); String startTimeRaw = br.readLine();
var startTime = LocalTime.parse(startTimeRaw, TIME_FORMATTER).truncatedTo(ChronoUnit.MINUTES); var startTime = LocalTime.parse(startTimeRaw, TIME_FORMATTER).truncatedTo(ChronoUnit.MINUTES);
handleMittagspause(br, startTime); handleMittagspause(br, startTime);
@ -83,16 +83,25 @@ public class LoadingBar {
} }
private static void println(Object o) {
System.out.println(o);
}
private static void print(Object o) {
System.out.print(o);
}
private static void handleMittagspause(BufferedReader br, LocalTime startTime) throws IOException { private static void handleMittagspause(BufferedReader br, LocalTime startTime) throws IOException {
System.out.print("Mittagspause verschieben um (optional): "); print("Mittagspause verschieben um (optional): ");
String mittagspauseOffsetRaw = br.readLine(); String mittagspauseOffsetRaw = br.readLine();
if (mittagspauseOffsetRaw != null && !mittagspauseOffsetRaw.isBlank()) { if (mittagspauseOffsetRaw != null && !mittagspauseOffsetRaw.isBlank()) {
var mittagspauseOffset = Integer.parseInt(mittagspauseOffsetRaw); var mittagspauseOffset = Integer.parseInt(mittagspauseOffsetRaw);
showLoadingBarMittagspause(startTime, mittagspauseOffset); showLoadingBarMittagspause(startTime, mittagspauseOffset);
return; return;
} }
System.out.print("Mittagspause um (optional): "); print("Mittagspause um (optional): ");
String manualMittagspauseRaw = br.readLine(); String manualMittagspauseRaw = br.readLine();
if (manualMittagspauseRaw != null && !manualMittagspauseRaw.isBlank()) { if (manualMittagspauseRaw != null && !manualMittagspauseRaw.isBlank()) {
var manualMittagspause = LocalTime.parse(manualMittagspauseRaw, TIME_FORMATTER).truncatedTo(ChronoUnit.MINUTES); var manualMittagspause = LocalTime.parse(manualMittagspauseRaw, TIME_FORMATTER).truncatedTo(ChronoUnit.MINUTES);
@ -104,13 +113,13 @@ public class LoadingBar {
private static void handleZapfenstreich(BufferedReader br, LocalTime startTime) throws IOException { private static void handleZapfenstreich(BufferedReader br, LocalTime startTime) throws IOException {
System.out.print("Mittagspause hat gedauert (optional): "); print("Mittagspause hat gedauert (optional): ");
String mittagspauseDurationRaw = br.readLine(); String mittagspauseDurationRaw = br.readLine();
Integer mittagspauseDuration = null; Integer mittagspauseDuration = null;
if (mittagspauseDurationRaw != null && !mittagspauseDurationRaw.isBlank()) { if (mittagspauseDurationRaw != null && !mittagspauseDurationRaw.isBlank()) {
mittagspauseDuration = Integer.valueOf(mittagspauseDurationRaw); mittagspauseDuration = Integer.valueOf(mittagspauseDurationRaw);
} }
System.out.print("Feierabend verschieben um (optional): "); print("Feierabend verschieben um (optional): ");
String zapfenstreichOffsetRaw = br.readLine(); String zapfenstreichOffsetRaw = br.readLine();
Integer zapfenstreichOffset = null; Integer zapfenstreichOffset = null;
if (zapfenstreichOffsetRaw != null && !zapfenstreichOffsetRaw.isBlank()) { if (zapfenstreichOffsetRaw != null && !zapfenstreichOffsetRaw.isBlank()) {
@ -118,7 +127,7 @@ public class LoadingBar {
showLoadingBarZapfenstreich(startTime, mittagspauseDuration, zapfenstreichOffset); showLoadingBarZapfenstreich(startTime, mittagspauseDuration, zapfenstreichOffset);
return; return;
} }
System.out.print("Manuelle Uhrzeit Feierabend (optional): "); print("Manuelle Uhrzeit Feierabend (optional): ");
String manualZapfenstreichRaw = br.readLine(); String manualZapfenstreichRaw = br.readLine();
LocalTime manualZapfenstreich = null; LocalTime manualZapfenstreich = null;
if (manualZapfenstreichRaw != null && !manualZapfenstreichRaw.isBlank()) { if (manualZapfenstreichRaw != null && !manualZapfenstreichRaw.isBlank()) {
@ -195,7 +204,7 @@ public class LoadingBar {
} }
nextArg = args[3]; nextArg = args[3];
if (lunchDuration == null) { if (lunchDuration == null) {
System.out.println("Letztes Argument darf nur auf Mittagspausendauer folgen."); println("Letztes Argument darf nur auf Mittagspausendauer folgen.");
System.exit(1); System.exit(1);
} }
if (maxZapfenstreich == null && !OFFSET_PATTERN.matcher(nextArg).matches()) { if (maxZapfenstreich == null && !OFFSET_PATTERN.matcher(nextArg).matches()) {
@ -214,7 +223,7 @@ public class LoadingBar {
if (args.length >= 2) { if (args.length >= 2) {
return; return;
} }
System.out.println("Mindestens 2 Argumente müssen gegeben sein."); println("Mindestens 2 Argumente müssen gegeben sein.");
printHelp(); printHelp();
System.exit(1); System.exit(1);
} }
@ -241,7 +250,7 @@ public class LoadingBar {
} // FSFIXME fine tune message -> HH:mm, mm, -+mm } // FSFIXME fine tune message -> HH:mm, mm, -+mm
var firstInputPart = timeInput ? "Uhrzeitformat (" + TIME_FORMAT + ")" : "Minutenanzahl (" + LUNCH_DURATION_PATTERN + ")"; var firstInputPart = timeInput ? "Uhrzeitformat (" + TIME_FORMAT + ")" : "Minutenanzahl (" + LUNCH_DURATION_PATTERN + ")";
var possibleTimeInputPart = !timeInput && timeInputPossible ? " oder Uhrzeitformat (" + TIME_FORMAT + ")" : ""; var possibleTimeInputPart = !timeInput && timeInputPossible ? " oder Uhrzeitformat (" + TIME_FORMAT + ")" : "";
System.out.println(errMsgPrefix + " \"" + param + "\" muss " + firstInputPart + possibleTimeInputPart + " entsprechen."); println(errMsgPrefix + " \"" + param + "\" muss " + firstInputPart + possibleTimeInputPart + " entsprechen.");
System.exit(1); System.exit(1);
} }
@ -253,13 +262,13 @@ public class LoadingBar {
List<String> sectionDescs = Arrays.stream(DaySection.values()).map((DaySection ds) -> ds.getDescription() + " (" + ds.getParam() + ")") List<String> sectionDescs = Arrays.stream(DaySection.values()).map((DaySection ds) -> ds.getDescription() + " (" + ds.getParam() + ")")
.collect(Collectors.toList()); .collect(Collectors.toList());
String sectionDescsJoined = String.join(" oder ", sectionDescs); String sectionDescsJoined = String.join(" oder ", sectionDescs);
System.out.println("Argument nach Startzeit \"" + param + "\" muss Angabe für " + sectionDescsJoined + " sein."); println("Argument nach Startzeit \"" + param + "\" muss Angabe für " + sectionDescsJoined + " sein.");
System.exit(1); System.exit(1);
} }
private static void printHelp() { private static void printHelp() {
System.out.println("Mögliche Argumente für LoadingBar:\n" println("Mögliche Argumente für LoadingBar:\n"
+ "Normalfall Vormittag (Mittagspause <= " + LATEST_LUNCH_TIME + ")\n" + "Normalfall Vormittag (Mittagspause <= " + LATEST_LUNCH_TIME + ")\n"
+ TIME_FORMAT + " " + DaySection.MITTAG.getParam() + "\n" + TIME_FORMAT + " " + DaySection.MITTAG.getParam() + "\n"
+ "Vormittag mit expliziter Mittagspause (<= " + LATEST_LUNCH_TIME + ")\n" + "Vormittag mit expliziter Mittagspause (<= " + LATEST_LUNCH_TIME + ")\n"
@ -373,7 +382,7 @@ public class LoadingBar {
private static void realShowLoadingBarZapfenstreich(LocalTime startTime, long manualLunchDuration, LocalTime endTime) { private static void realShowLoadingBarZapfenstreich(LocalTime startTime, long manualLunchDuration, LocalTime endTime) {
if (manualLunchDuration > 0) { if (manualLunchDuration > 0) {
var totalWorkTime = LocalTime.MIDNIGHT.plusMinutes(startTime.until(endTime, ChronoUnit.MINUTES) - manualLunchDuration); var totalWorkTime = LocalTime.MIDNIGHT.plusMinutes(startTime.until(endTime, ChronoUnit.MINUTES) - manualLunchDuration);
System.out.print("Arbeitszeit: " + TIME_FORMATTER.format(totalWorkTime) + "; "); print("Arbeitszeit: " + TIME_FORMATTER.format(totalWorkTime) + "; ");
} }
showLoadingBar(startTime, endTime); showLoadingBar(startTime, endTime);
} }
@ -386,11 +395,11 @@ public class LoadingBar {
passedMinutes = totalMinutes; passedMinutes = totalMinutes;
} else if (passedMinutes < 0) { } else if (passedMinutes < 0) {
var now = LocalTime.now().truncatedTo(ChronoUnit.SECONDS); var now = LocalTime.now().truncatedTo(ChronoUnit.SECONDS);
System.out.println("!ACHTUNG! Startzeit \"" + startTime + ":00\" liegt in der Zukunft von jetzt an (" + now + ") gesehen."); println("!ACHTUNG! Startzeit \"" + startTime + ":00\" liegt in der Zukunft von jetzt an (" + now + ") gesehen.");
} }
System.out.println(minutesToTimeString(totalMinutes) + " gesamt; Endzeit: " + TIME_FORMATTER.format(endTime)); println(minutesToTimeString(totalMinutes) + " gesamt; Endzeit: " + TIME_FORMATTER.format(endTime));
while (passedMinutes < totalMinutes) { while (passedMinutes < totalMinutes) {
System.out.print(fillLoadingBar(totalMinutes, passedMinutes, true)); print(fillLoadingBar(totalMinutes, passedMinutes, true));
try { try {
var now = LocalTime.now(); var now = LocalTime.now();
var oneMinuteLater = now.plusMinutes(1).truncatedTo(ChronoUnit.MINUTES); var oneMinuteLater = now.plusMinutes(1).truncatedTo(ChronoUnit.MINUTES);
@ -402,7 +411,7 @@ public class LoadingBar {
} }
passedMinutes++; passedMinutes++;
} }
System.out.println(fillLoadingBar(totalMinutes, passedMinutes, false)); println(fillLoadingBar(totalMinutes, passedMinutes, false));
} }