new project structure
- use objects and inheritance - enabled combined version for drinking and loading bar without impacting any of them
This commit is contained in:
@@ -0,0 +1,50 @@
|
||||
package de.szimnau;
|
||||
|
||||
import de.szimnau.tools.FormatTools;
|
||||
import java.math.BigDecimal;
|
||||
import java.math.MathContext;
|
||||
import java.time.LocalTime;
|
||||
|
||||
|
||||
public abstract class AbstractProgressBar extends AbstractLoadingBar {
|
||||
|
||||
protected static final int LINE_LENGTH = 100;
|
||||
protected static final BigDecimal ONE_HUNDRED_PERCENT = BigDecimal.valueOf(100);
|
||||
|
||||
|
||||
protected AbstractProgressBar(LocalTime startTime) {
|
||||
super(startTime);
|
||||
}
|
||||
|
||||
|
||||
protected AbstractProgressBar(LocalTime startTime, LocalTime endTime) {
|
||||
super(startTime, endTime);
|
||||
}
|
||||
|
||||
|
||||
@Override
|
||||
protected String fillLoadingBar(long passedMinutes, boolean progressive) {
|
||||
var nonNegativePassedMinutes = BigDecimal.valueOf(passedMinutes < 0 ? 0 : passedMinutes);
|
||||
BigDecimal wholePercentage = ONE_HUNDRED_PERCENT
|
||||
// kind of reverse dreisatz to avoid having e.g. 99.9999 instead of 100 %
|
||||
.multiply(nonNegativePassedMinutes)
|
||||
.divide(getTotalMinutesBD(), MathContext.DECIMAL64);
|
||||
int numberOfEquals = wholePercentage.intValue();
|
||||
var sb = new StringBuilder("[");
|
||||
for (int i = 0; i < LINE_LENGTH; i++) {
|
||||
if (i < numberOfEquals) {
|
||||
sb.append("=");
|
||||
} else {
|
||||
sb.append("-");
|
||||
}
|
||||
}
|
||||
BigDecimal remainingMinutes = getTotalMinutesBD().subtract(nonNegativePassedMinutes);
|
||||
sb.append("] ").append(FormatTools.PERCENTAGE_FORMAT.format(wholePercentage)).append("% ")
|
||||
.append(FormatTools.minutesToTimeString(nonNegativePassedMinutes)).append(" - ")
|
||||
.append(FormatTools.minutesToTimeString(remainingMinutes));
|
||||
if (progressive) {
|
||||
sb.append("\r");
|
||||
}
|
||||
return sb.toString();
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user