better handling of start time beginning in the future
This commit is contained in:
@ -380,17 +380,17 @@ public class LoadingBar {
|
|||||||
|
|
||||||
|
|
||||||
private static void showLoadingBar(LocalTime startTime, LocalTime endTime) {
|
private static void showLoadingBar(LocalTime startTime, LocalTime endTime) {
|
||||||
long initialMinutes = startTime.until(endTime, ChronoUnit.MINUTES);
|
long totalMinutes = startTime.until(endTime, ChronoUnit.MINUTES);
|
||||||
System.out.print(minutesToTimeString(initialMinutes) + " gesamt; Endzeit: " + TIME_FORMATTER.format(endTime) + "\n");
|
long passedMinutes = startTime.until(LocalTime.now().truncatedTo(ChronoUnit.MINUTES), ChronoUnit.MINUTES);
|
||||||
long passedMinutes = startTime.until(LocalTime.now(), ChronoUnit.MINUTES);
|
if (passedMinutes > totalMinutes) {
|
||||||
if (passedMinutes > initialMinutes) {
|
passedMinutes = totalMinutes;
|
||||||
passedMinutes = initialMinutes;
|
|
||||||
} else if (passedMinutes < 0) {
|
} else if (passedMinutes < 0) {
|
||||||
System.out.println(fillLoadingBar(initialMinutes, 0, false));
|
var now = LocalTime.now().truncatedTo(ChronoUnit.SECONDS);
|
||||||
return;
|
System.out.println("!ACHTUNG! Startzeit \"" + startTime + ":00\" liegt in der Zukunft von jetzt an (" + now + ") gesehen.");
|
||||||
}
|
}
|
||||||
while (passedMinutes < initialMinutes) {
|
System.out.println(minutesToTimeString(totalMinutes) + " gesamt; Endzeit: " + TIME_FORMATTER.format(endTime));
|
||||||
System.out.print(fillLoadingBar(initialMinutes, passedMinutes, true));
|
while (passedMinutes < totalMinutes) {
|
||||||
|
System.out.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,15 +402,15 @@ public class LoadingBar {
|
|||||||
}
|
}
|
||||||
passedMinutes++;
|
passedMinutes++;
|
||||||
}
|
}
|
||||||
System.out.println(fillLoadingBar(initialMinutes, passedMinutes, false));
|
System.out.println(fillLoadingBar(totalMinutes, passedMinutes, false));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private static String fillLoadingBar(long initialMinutes, long passedMinutes, boolean progressive) {
|
private static String fillLoadingBar(long totalMinutes, long passedMinutes, boolean progressive) {
|
||||||
|
var nonNegativePassedMinutes = passedMinutes < 0 ? 0 : passedMinutes;
|
||||||
BigDecimal wholePercentage = BigDecimal.valueOf(100)
|
BigDecimal wholePercentage = BigDecimal.valueOf(100)
|
||||||
.multiply(BigDecimal.valueOf(passedMinutes) // kind of reverse dreisatz to avoid to have e.g. 99.9999 instead of 100 %
|
.multiply( // kind of reverse dreisatz to avoid to have e.g. 99.9999 instead of 100 %
|
||||||
.divide(BigDecimal.valueOf(initialMinutes), MathContext.DECIMAL64));
|
BigDecimal.valueOf(nonNegativePassedMinutes).divide(BigDecimal.valueOf(totalMinutes), MathContext.DECIMAL64));
|
||||||
long remainingMinutes = initialMinutes - passedMinutes;
|
|
||||||
int numberOfEquals = wholePercentage.intValue();
|
int numberOfEquals = wholePercentage.intValue();
|
||||||
var sb = new StringBuilder("[");
|
var sb = new StringBuilder("[");
|
||||||
for (int i = 0; i < LINE_LENGTH; i++) {
|
for (int i = 0; i < LINE_LENGTH; i++) {
|
||||||
@ -420,8 +420,9 @@ public class LoadingBar {
|
|||||||
sb.append("-");
|
sb.append("-");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
long remainingMinutes = totalMinutes - nonNegativePassedMinutes;
|
||||||
sb.append("] ").append(PERCENTAGE_FORMAT.format(wholePercentage)).append("% ")
|
sb.append("] ").append(PERCENTAGE_FORMAT.format(wholePercentage)).append("% ")
|
||||||
.append(minutesToTimeString(passedMinutes)).append(" - ").append(minutesToTimeString(remainingMinutes));
|
.append(minutesToTimeString(nonNegativePassedMinutes)).append(" - ").append(minutesToTimeString(remainingMinutes));
|
||||||
if (progressive) {
|
if (progressive) {
|
||||||
sb.append("\r");
|
sb.append("\r");
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user