Compare commits
7 Commits
dc690f3350
...
master
| Author | SHA1 | Date | |
|---|---|---|---|
| cea8d25eea | |||
| 12c8898252 | |||
| 9e65158901 | |||
| 67c341a091 | |||
| c74d63c178 | |||
| 5f2c7ffeab | |||
| 8d1e6aed7a |
@@ -21,7 +21,8 @@ public class DrinkingBar extends AbstractLoadingBar implements WorkdayLoadingBar
|
||||
|
||||
private static final int MINS_PER_HALF_HOUR = CommonTools.MINS_PER_HOUR / 2;
|
||||
private static final int MINUTES_BEFORE_PAUSE = 4 * CommonTools.MINS_PER_HOUR + MINS_PER_HALF_HOUR;
|
||||
private static final int MINUTES_WITH_PAUSE = 6 * CommonTools.MINS_PER_HOUR;
|
||||
private static final int MAX_MINUTES_WITHOUT_PAUSE = 6 * CommonTools.MINS_PER_HOUR;
|
||||
private static final int MAX_MINUTES_WITH_PAUSE = 6 * CommonTools.MINS_PER_HOUR;
|
||||
private static final int DEFAULT_TOTAL_TIME = 8 * CommonTools.MINS_PER_HOUR + MINS_PER_HALF_HOUR;
|
||||
private static final BigDecimal DEFAULT_TOTAL_TIME_BD = BigDecimal.valueOf(DEFAULT_TOTAL_TIME);
|
||||
private static final BigDecimal DEFAULT_TOTAL_LITRES = BigDecimal.valueOf(2.0);
|
||||
@@ -65,7 +66,10 @@ public class DrinkingBar extends AbstractLoadingBar implements WorkdayLoadingBar
|
||||
@Override
|
||||
protected String fillLoadingBar(long passedMinutes, boolean progressive) {
|
||||
long effectivePassedMinutes = passedMinutes < 0 ? 0 : passedMinutes;
|
||||
if (getTotalMinutes() > MINUTES_WITH_PAUSE && passedMinutes > MINUTES_BEFORE_PAUSE && passedMinutes <= MINUTES_WITH_PAUSE) {
|
||||
/* the pause in counting up passed minutes could be more precise.
|
||||
there IS a way to find out how LONG the lunch break was (known until WorkdayLoadingBar.realInitZapfenstreich),
|
||||
but NOT the exact time slot from when to when the lunch break did take place... */
|
||||
if (getTotalMinutes() > MAX_MINUTES_WITHOUT_PAUSE && passedMinutes > MINUTES_BEFORE_PAUSE && passedMinutes <= MAX_MINUTES_WITH_PAUSE) {
|
||||
effectivePassedMinutes = MINUTES_BEFORE_PAUSE;
|
||||
}
|
||||
var effectivePassedMinutesBD = BigDecimal.valueOf(effectivePassedMinutes);
|
||||
|
||||
@@ -20,12 +20,12 @@ public interface WorkdayLoadingBar {
|
||||
void showLoadingBar(boolean debug, boolean passedMinutesZero);
|
||||
|
||||
|
||||
default boolean hasMittagspauseArrived() {
|
||||
return hasMittagspauseArrived(false);
|
||||
default boolean couldHaveHadNoMittagspauseYet() {
|
||||
return couldHaveHadNoMittagspauseYet(false);
|
||||
}
|
||||
|
||||
|
||||
default boolean hasMittagspauseArrived(boolean debugWithPassedMinutesZero) {
|
||||
default boolean couldHaveHadNoMittagspauseYet(boolean debugWithPassedMinutesZero) {
|
||||
return getPassedMinutes(debugWithPassedMinutesZero) < DEFAULT_NUMBER_WORK_MINS_BEFORE_LUNCH;
|
||||
}
|
||||
|
||||
@@ -33,6 +33,12 @@ public interface WorkdayLoadingBar {
|
||||
long getPassedMinutes(boolean passedMinutesZero);
|
||||
|
||||
|
||||
default LocalTime estimateMittagspause() {
|
||||
LocalTime defaultEndTime = getStartTime().plusMinutes(DEFAULT_NUMBER_WORK_MINS_BEFORE_LUNCH);
|
||||
return calculateRealMittagspause(defaultEndTime);
|
||||
}
|
||||
|
||||
|
||||
default void initMittagspause() {
|
||||
LocalTime defaultEndTime = getStartTime().plusMinutes(DEFAULT_NUMBER_WORK_MINS_BEFORE_LUNCH);
|
||||
realInitMittagspause(defaultEndTime);
|
||||
@@ -43,7 +49,7 @@ public interface WorkdayLoadingBar {
|
||||
|
||||
|
||||
default void initMittagspause(int endTimeOffset) {
|
||||
LocalTime offsetEndTime = getStartTime().plusMinutes(DEFAULT_NUMBER_WORK_MINS_BEFORE_LUNCH + endTimeOffset);
|
||||
LocalTime offsetEndTime = estimateMittagspause().plusMinutes(endTimeOffset);
|
||||
realInitMittagspause(offsetEndTime);
|
||||
}
|
||||
|
||||
@@ -55,13 +61,24 @@ public interface WorkdayLoadingBar {
|
||||
|
||||
|
||||
private void realInitMittagspause(LocalTime theoreticalEndTime) {
|
||||
setEndTime(theoreticalEndTime.isAfter(LATEST_LUNCH_TIME) ? LATEST_LUNCH_TIME : theoreticalEndTime);
|
||||
setEndTime(calculateRealMittagspause(theoreticalEndTime));
|
||||
}
|
||||
|
||||
|
||||
private LocalTime calculateRealMittagspause(LocalTime theoreticalMittagspause) {
|
||||
return theoreticalMittagspause.isAfter(LATEST_LUNCH_TIME) ? LATEST_LUNCH_TIME : theoreticalMittagspause;
|
||||
}
|
||||
|
||||
|
||||
void setEndTime(LocalTime endTime);
|
||||
|
||||
|
||||
default LocalTime estimateZapfenstreich(Integer mittagspauseDuration) {
|
||||
int estMittagspauseDuration = mittagspauseDuration != null ? mittagspauseDuration : MIN_LUNCH_DURATION;
|
||||
return getStartTime().plusMinutes(MAX_NUMBER_WORK_MINS + estMittagspauseDuration);
|
||||
}
|
||||
|
||||
|
||||
default void initZapfenstreich() {
|
||||
LocalTime trueEndTime = getStartTime().plusMinutes(MAX_NUMBER_WORK_MINS + MIN_LUNCH_DURATION);
|
||||
realInitZapfenstreich(MIN_LUNCH_DURATION, trueEndTime);
|
||||
|
||||
@@ -61,7 +61,7 @@ public class LoadingBarCliTools {
|
||||
WorkdayLoadingBar lb = constructor.apply(startTime);
|
||||
boolean debug = false;
|
||||
boolean passedMinutesZero = false;
|
||||
if (lb.hasMittagspauseArrived(debug && passedMinutesZero)) {
|
||||
if (lb.couldHaveHadNoMittagspauseYet(debug && passedMinutesZero)) {
|
||||
handleMittagspause(br, lb);
|
||||
lb.showLoadingBar(debug, passedMinutesZero);
|
||||
}
|
||||
@@ -71,6 +71,8 @@ public class LoadingBarCliTools {
|
||||
|
||||
|
||||
private static void handleMittagspause(BufferedReader br, WorkdayLoadingBar lb) throws IOException {
|
||||
LocalTime vorlaeufigeEndzeit = lb.estimateMittagspause();
|
||||
println("Mittagspause: " + FormatTools.TIME_FORMATTER.format(vorlaeufigeEndzeit));
|
||||
print("Mittagspause verschieben um (optional): ");
|
||||
String mittagspauseOffsetRaw = br.readLine();
|
||||
if (mittagspauseOffsetRaw != null && !mittagspauseOffsetRaw.isBlank()) {
|
||||
@@ -96,8 +98,7 @@ public class LoadingBarCliTools {
|
||||
if (mittagspauseDurationRaw != null && !mittagspauseDurationRaw.isBlank()) {
|
||||
mittagspauseDuration = Integer.valueOf(mittagspauseDurationRaw);
|
||||
}
|
||||
LocalTime vorlaeufigeEndzeit = lb.getStartTime().plusMinutes(WorkdayLoadingBar.MAX_NUMBER_WORK_MINS)
|
||||
.plusMinutes(mittagspauseDuration != null ? mittagspauseDuration : WorkdayLoadingBar.MIN_LUNCH_DURATION);
|
||||
LocalTime vorlaeufigeEndzeit = lb.estimateZapfenstreich(mittagspauseDuration);
|
||||
println("Endzeit: " + FormatTools.TIME_FORMATTER.format(vorlaeufigeEndzeit));
|
||||
print("Feierabend verschieben um (optional): ");
|
||||
String zapfenstreichOffsetRaw = br.readLine();
|
||||
|
||||
Reference in New Issue
Block a user