Compare commits

..

3 Commits

Author SHA1 Message Date
FabianArbeit cea8d25eea - calculate mittagspause with offset correctly
- show provisionary mittagspause
- handle zapfenstreich the same way
2026-04-28 11:26:00 +02:00
SZIMNAU 12c8898252 reverted 'verschlimmbesserung' trying to improve end time calculation 2026-01-06 15:57:41 +01:00
fszimnau 9e65158901 fixed method name 2026-01-06 08:26:55 +01:00
2 changed files with 28 additions and 10 deletions
@@ -20,12 +20,12 @@ public interface WorkdayLoadingBar {
void showLoadingBar(boolean debug, boolean passedMinutesZero); void showLoadingBar(boolean debug, boolean passedMinutesZero);
default boolean canHaveHadNoMittagspauseYet() { default boolean couldHaveHadNoMittagspauseYet() {
return canHaveHadNoMittagspauseYet(false); return couldHaveHadNoMittagspauseYet(false);
} }
default boolean canHaveHadNoMittagspauseYet(boolean debugWithPassedMinutesZero) { default boolean couldHaveHadNoMittagspauseYet(boolean debugWithPassedMinutesZero) {
return getPassedMinutes(debugWithPassedMinutesZero) < DEFAULT_NUMBER_WORK_MINS_BEFORE_LUNCH; return getPassedMinutes(debugWithPassedMinutesZero) < DEFAULT_NUMBER_WORK_MINS_BEFORE_LUNCH;
} }
@@ -33,6 +33,12 @@ public interface WorkdayLoadingBar {
long getPassedMinutes(boolean passedMinutesZero); long getPassedMinutes(boolean passedMinutesZero);
default LocalTime estimateMittagspause() {
LocalTime defaultEndTime = getStartTime().plusMinutes(DEFAULT_NUMBER_WORK_MINS_BEFORE_LUNCH);
return calculateRealMittagspause(defaultEndTime);
}
default void initMittagspause() { default void initMittagspause() {
LocalTime defaultEndTime = getStartTime().plusMinutes(DEFAULT_NUMBER_WORK_MINS_BEFORE_LUNCH); LocalTime defaultEndTime = getStartTime().plusMinutes(DEFAULT_NUMBER_WORK_MINS_BEFORE_LUNCH);
realInitMittagspause(defaultEndTime); realInitMittagspause(defaultEndTime);
@@ -43,7 +49,7 @@ public interface WorkdayLoadingBar {
default void initMittagspause(int endTimeOffset) { default void initMittagspause(int endTimeOffset) {
LocalTime offsetEndTime = getStartTime().plusMinutes(DEFAULT_NUMBER_WORK_MINS_BEFORE_LUNCH + endTimeOffset); LocalTime offsetEndTime = estimateMittagspause().plusMinutes(endTimeOffset);
realInitMittagspause(offsetEndTime); realInitMittagspause(offsetEndTime);
} }
@@ -55,13 +61,24 @@ public interface WorkdayLoadingBar {
private void realInitMittagspause(LocalTime theoreticalEndTime) { 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); 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() { default void initZapfenstreich() {
LocalTime trueEndTime = getStartTime().plusMinutes(MAX_NUMBER_WORK_MINS + MIN_LUNCH_DURATION); LocalTime trueEndTime = getStartTime().plusMinutes(MAX_NUMBER_WORK_MINS + MIN_LUNCH_DURATION);
realInitZapfenstreich(MIN_LUNCH_DURATION, trueEndTime); realInitZapfenstreich(MIN_LUNCH_DURATION, trueEndTime);
@@ -61,16 +61,18 @@ public class LoadingBarCliTools {
WorkdayLoadingBar lb = constructor.apply(startTime); WorkdayLoadingBar lb = constructor.apply(startTime);
boolean debug = false; boolean debug = false;
boolean passedMinutesZero = false; boolean passedMinutesZero = false;
if (lb.couldHaveHadNoMittagspauseYetYetYet(debug && passedMinutesZero)) { if (lb.couldHaveHadNoMittagspauseYet(debug && passedMinutesZero)) {
handleMittagspause(br, lb); handleMittagspause(br, lb);
lb.showLoadingBar(debug, passedMinutesZero); lb.showLoadingBar(debug, passedMinutesZero);
} }
handleZapfenstreich(br, lb, passedMinutesZero); handleZapfenstreich(br, lb);
lb.showLoadingBar(debug, passedMinutesZero); lb.showLoadingBar(debug, passedMinutesZero);
} }
private static void handleMittagspause(BufferedReader br, WorkdayLoadingBar lb) throws IOException { 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): "); print("Mittagspause verschieben um (optional): ");
String mittagspauseOffsetRaw = br.readLine(); String mittagspauseOffsetRaw = br.readLine();
if (mittagspauseOffsetRaw != null && !mittagspauseOffsetRaw.isBlank()) { if (mittagspauseOffsetRaw != null && !mittagspauseOffsetRaw.isBlank()) {
@@ -89,15 +91,14 @@ public class LoadingBarCliTools {
} }
private static void handleZapfenstreich(BufferedReader br, WorkdayLoadingBar lb, boolean passedMinutesZero) throws IOException { private static void handleZapfenstreich(BufferedReader br, WorkdayLoadingBar lb) throws IOException {
print("Mittagspause hat gedauert (optional): "); print("Mittagspause hat gedauert (optional): ");
String mittagspauseDurationRaw = br.readLine(); String mittagspauseDurationRaw = br.readLine();
Integer mittagspauseDuration = null; Integer mittagspauseDuration = null;
if (mittagspauseDurationRaw != null && !mittagspauseDurationRaw.isBlank()) { if (mittagspauseDurationRaw != null && !mittagspauseDurationRaw.isBlank()) {
mittagspauseDuration = Integer.valueOf(mittagspauseDurationRaw); mittagspauseDuration = Integer.valueOf(mittagspauseDurationRaw);
} }
LocalTime vorlaeufigeEndzeit = lb.getStartTime().plusMinutes(lb.getPassedMinutes(passedMinutesZero)) LocalTime vorlaeufigeEndzeit = lb.estimateZapfenstreich(mittagspauseDuration);
.plusMinutes(mittagspauseDuration != null ? mittagspauseDuration : WorkdayLoadingBar.MIN_LUNCH_DURATION);
println("Endzeit: " + FormatTools.TIME_FORMATTER.format(vorlaeufigeEndzeit)); println("Endzeit: " + FormatTools.TIME_FORMATTER.format(vorlaeufigeEndzeit));
print("Feierabend verschieben um (optional): "); print("Feierabend verschieben um (optional): ");
String zapfenstreichOffsetRaw = br.readLine(); String zapfenstreichOffsetRaw = br.readLine();