- optimisations by SonarQube and IntelliJ Inspections
- own smaller optimisations
This commit is contained in:
parent
416789c88c
commit
8426fa4a33
@ -1,5 +1,3 @@
|
|||||||
package de.vorsorge.theo.util;
|
|
||||||
|
|
||||||
import java.io.IOException;
|
import java.io.IOException;
|
||||||
import java.math.BigDecimal;
|
import java.math.BigDecimal;
|
||||||
import java.math.RoundingMode;
|
import java.math.RoundingMode;
|
||||||
@ -26,18 +24,43 @@ public class FabianUtil {
|
|||||||
public static class ProgressHandler {
|
public static class ProgressHandler {
|
||||||
|
|
||||||
private static final DecimalFormat TIME_DECIMAL_FORMAT = new DecimalFormat("00");
|
private static final DecimalFormat TIME_DECIMAL_FORMAT = new DecimalFormat("00");
|
||||||
|
protected static final int DEFAULT_LOG_DISTANCE = 50;
|
||||||
|
protected static final int DEFAULT_TIME_LOG_DISTANCE = 15;
|
||||||
|
|
||||||
private final ZonedDateTime startTime;
|
private final ZonedDateTime startTime;
|
||||||
private final BigDecimal logDistance;
|
private final BigDecimal logDistance;
|
||||||
|
private final int timeLogDistance;
|
||||||
private BigDecimal counter = BigDecimal.ZERO;
|
private BigDecimal counter = BigDecimal.ZERO;
|
||||||
|
private ZonedDateTime lastLoggedAt;
|
||||||
|
|
||||||
|
|
||||||
|
public ProgressHandler() {
|
||||||
|
this(DEFAULT_LOG_DISTANCE, DEFAULT_TIME_LOG_DISTANCE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public ProgressHandler(int logDistance) {
|
public ProgressHandler(int logDistance) {
|
||||||
|
this(logDistance, DEFAULT_TIME_LOG_DISTANCE);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
public ProgressHandler(int logDistance, int timeLogDistance) {
|
||||||
startTime = ZonedDateTime.now();
|
startTime = ZonedDateTime.now();
|
||||||
if (logDistance < 1) {
|
this.logDistance = validateBD(logDistance, "Log-Distanz");
|
||||||
throw new RuntimeException("Log-Distanz darf nicht 0 oder negativ sein.");
|
this.timeLogDistance = validateInt(timeLogDistance, "Zeitbasierte Log-Distanz");
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected BigDecimal validateBD(int bd, String name) {
|
||||||
|
return BigDecimal.valueOf(validateInt(bd, name));
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
protected int validateInt(int n, String name) {
|
||||||
|
if (n < 1) {
|
||||||
|
throw new RuntimeException(name + " darf nicht 0 oder negativ sein.");
|
||||||
}
|
}
|
||||||
this.logDistance = BigDecimal.valueOf(logDistance);
|
return n;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -82,17 +105,18 @@ public class FabianUtil {
|
|||||||
|
|
||||||
|
|
||||||
protected String formatDuration(Duration dur) {
|
protected String formatDuration(Duration dur) {
|
||||||
return formatLong(dur.toHours()) + ":" + formatInt(dur.toMinutesPart()) + ":" + formatInt(dur.toSecondsPart());
|
return formatNumber(dur.toHours()) + ":" + formatNumber(dur.toMinutesPart()) + ":" + formatNumber(dur.toSecondsPart());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private String formatLong(long n) {
|
protected String formatNumber(Number n) {
|
||||||
return TIME_DECIMAL_FORMAT.format(n);
|
return TIME_DECIMAL_FORMAT.format(n == null ? 0 : n);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private String formatInt(int n) {
|
public void logFinal() {
|
||||||
return TIME_DECIMAL_FORMAT.format(n);
|
Duration timePassed = getTimePassed();
|
||||||
|
System.out.println(counter + " Stück (100 %) erledigt. " + formatDuration(timePassed) + " vergangen.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -104,12 +128,19 @@ public class FabianUtil {
|
|||||||
private final BigDecimal total;
|
private final BigDecimal total;
|
||||||
|
|
||||||
|
|
||||||
|
public ProgressHandlerWithTotal(int total) {
|
||||||
|
this(DEFAULT_LOG_DISTANCE, DEFAULT_TIME_LOG_DISTANCE, total);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
public ProgressHandlerWithTotal(int logDistance, int total) {
|
public ProgressHandlerWithTotal(int logDistance, int total) {
|
||||||
super(logDistance);
|
this(logDistance, DEFAULT_TIME_LOG_DISTANCE, total);
|
||||||
if (total < 1) {
|
}
|
||||||
throw new RuntimeException("Maximale Anzahl darf nicht 0 oder negativ sein.");
|
|
||||||
}
|
|
||||||
this.total = BigDecimal.valueOf(total);
|
public ProgressHandlerWithTotal(int logDistance, int timeLogDistance, int total) {
|
||||||
|
super(logDistance, timeLogDistance);
|
||||||
|
this.total = validateBD(total, "Gesamt-Anzahl");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -129,15 +160,10 @@ public class FabianUtil {
|
|||||||
remainingTimePart = ", " + formatDuration(timeToGo) + " verbleibend";
|
remainingTimePart = ", " + formatDuration(timeToGo) + " verbleibend";
|
||||||
}
|
}
|
||||||
|
|
||||||
System.out.println(counter + " Stück von " + total + " (" + PERCENTAGE_FORMAT.format(percentage.doubleValue()) + " %) erledigt. "
|
String counterPrint = total.compareTo(BigDecimal.TEN) >= 0 ? formatNumber(counter) : counter.toString();
|
||||||
|
System.out.println(counterPrint + " Stück von " + total + " (" + PERCENTAGE_FORMAT.format(percentage) + " %) erledigt. "
|
||||||
+ formatDuration(timePassed) + " vergangen" + remainingTimePart + ".");
|
+ formatDuration(timePassed) + " vergangen" + remainingTimePart + ".");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void logFinal() {
|
|
||||||
Duration timePassed = getTimePassed();
|
|
||||||
System.out.println(total + " Stück (100 %) erledigt. " + formatDuration(timePassed) + " vergangen.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
Loading…
Reference in New Issue
Block a user