enable prompting for parameters if no args are given
This commit is contained in:
parent
44d981d845
commit
9fe2163b6e
@ -1,14 +1,18 @@
|
||||
import java.io.BufferedReader;
|
||||
import java.io.InputStreamReader;
|
||||
import java.io.IOException;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.MathContext;
|
||||
import java.math.RoundingMode;
|
||||
import java.nio.charset.StandardCharsets;
|
||||
import java.text.DecimalFormat;
|
||||
import java.time.LocalTime;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.time.LocalTime;
|
||||
import java.time.temporal.ChronoUnit;
|
||||
import java.util.Arrays;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.List;
|
||||
import java.util.Objects;
|
||||
import java.util.concurrent.TimeUnit;
|
||||
import java.util.regex.Pattern;
|
||||
import java.util.stream.Collectors;
|
||||
|
||||
@ -60,13 +64,79 @@ public class LoadingBar {
|
||||
}
|
||||
|
||||
|
||||
public static void main(String[] args) {
|
||||
if (args.length > 0 && Objects.equals(args[0], "--help")) {
|
||||
public static void main(String[] args) throws IOException {
|
||||
if (args.length == 0) {
|
||||
askParametersAndRun();
|
||||
} else {
|
||||
parseParametersAndRun(args);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static void askParametersAndRun() throws IOException {
|
||||
var br = new BufferedReader(new InputStreamReader(System.in, StandardCharsets.UTF_8));
|
||||
System.out.print("Ankunftszeit: ");
|
||||
String startTimeRaw = br.readLine();
|
||||
var startTime = LocalTime.parse(startTimeRaw, TIME_FORMATTER);
|
||||
handleMittagspause(br, startTime);
|
||||
handleZapfenstreich(br, startTime);
|
||||
}
|
||||
|
||||
|
||||
|
||||
private static void handleMittagspause(BufferedReader br, LocalTime startTime) throws IOException {
|
||||
System.out.print("Mittagspause verschieben um (optional): ");
|
||||
String mittagspauseOffsetRaw = br.readLine();
|
||||
if (mittagspauseOffsetRaw != null && !mittagspauseOffsetRaw.isBlank()) {
|
||||
var mittagspauseOffset = Integer.parseInt(mittagspauseOffsetRaw);
|
||||
showLoadingBarMittagspause(startTime, mittagspauseOffset);
|
||||
return;
|
||||
}
|
||||
System.out.print("Mittagspause um (optional): ");
|
||||
String manualMittagspauseRaw = br.readLine();
|
||||
if (mittagspauseOffsetRaw != null && !mittagspauseOffsetRaw.isBlank()) {
|
||||
var manualMittagspause = LocalTime.parse(manualMittagspauseRaw, TIME_FORMATTER);
|
||||
showLoadingBarMittagspause(startTime, manualMittagspause);
|
||||
} else {
|
||||
showLoadingBarMittagspause(startTime);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
private static void handleZapfenstreich(BufferedReader br, LocalTime startTime) throws IOException {
|
||||
System.out.print("Mittagspause hat gedauert (optional): ");
|
||||
String mittagspauseDurationRaw = br.readLine();
|
||||
Integer mittagspauseDuration = null;
|
||||
if (mittagspauseDurationRaw != null && !mittagspauseDurationRaw.isBlank()) {
|
||||
mittagspauseDuration = Integer.valueOf(mittagspauseDurationRaw);
|
||||
}
|
||||
System.out.print("Feierabend verschieben um (optional): ");
|
||||
String zapfenstreichOffsetRaw = br.readLine();
|
||||
Integer zapfenstreichOffset = null;
|
||||
if (zapfenstreichOffsetRaw != null && !zapfenstreichOffsetRaw.isBlank()) {
|
||||
zapfenstreichOffset = Integer.valueOf(zapfenstreichOffsetRaw);
|
||||
showLoadingBarZapfenstreich(startTime, mittagspauseDuration, zapfenstreichOffset);
|
||||
return;
|
||||
}
|
||||
System.out.print("Manuelle Uhrzeit Feierabend (optional): ");
|
||||
String manualZapfenstreichRaw = br.readLine();
|
||||
LocalTime manualZapfenstreich = null;
|
||||
if (manualZapfenstreichRaw != null && !manualZapfenstreichRaw.isBlank()) {
|
||||
manualZapfenstreich = LocalTime.parse(manualZapfenstreichRaw, TIME_FORMATTER);
|
||||
showLoadingBarZapfenstreich(startTime, mittagspauseDuration, manualZapfenstreich);
|
||||
return;
|
||||
}
|
||||
showLoadingBarZapfenstreich(startTime, mittagspauseDuration);
|
||||
}
|
||||
|
||||
|
||||
private static void parseParametersAndRun(String[] args) {
|
||||
String nextArg = args[0];
|
||||
if ("--help".equals(nextArg)) {
|
||||
printHelp();
|
||||
return;
|
||||
}
|
||||
verifyMinimumNumberOfArgs(args);
|
||||
String nextArg = args[0];
|
||||
verifyTimeFormat(nextArg, "Erstes Argument");
|
||||
var startTime = LocalTime.parse(nextArg, TIME_FORMATTER);
|
||||
nextArg = args[1];
|
||||
@ -91,13 +161,12 @@ public class LoadingBar {
|
||||
return;
|
||||
}
|
||||
verifyTimeFormat(nextArg, "Argument nach " + DaySection.MITTAG.getParam());
|
||||
var maxMittagspause = LocalTime.parse(nextArg, TIME_FORMATTER);
|
||||
showLoadingBarMittagspause(startTime, maxMittagspause);
|
||||
var manualMittagspause = LocalTime.parse(nextArg, TIME_FORMATTER);
|
||||
showLoadingBarMittagspause(startTime, manualMittagspause);
|
||||
}
|
||||
|
||||
|
||||
private static void handleZapfenstreich(String[] args, LocalTime startTime) {
|
||||
Integer lunchDuration = null;
|
||||
if (args.length == 2) {
|
||||
showLoadingBarZapfenstreich(startTime);
|
||||
return;
|
||||
@ -105,6 +174,7 @@ public class LoadingBar {
|
||||
String nextArg = args[2];
|
||||
LocalTime maxZapfenstreich = null;
|
||||
int endTimeOffset = 0;
|
||||
Integer lunchDuration = null;
|
||||
if (TIME_PATTERN.matcher(nextArg).matches()) {
|
||||
maxZapfenstreich = LocalTime.parse(nextArg, TIME_FORMATTER);
|
||||
} else if (OFFSET_PATTERN.matcher(nextArg).matches()) {
|
||||
|
Loading…
x
Reference in New Issue
Block a user