Bootstrap-Wiring: Scheduler in GUI-Startkontext verdrahten

- pdf-umbenenner-bootstrap/pom.xml: Abhängigkeit auf adapter-in-scheduler hinzugefügt
- GuiStartupContext: neues Feld schedulerControlUseCase (Optional<SchedulerControlUseCase>)
  als 26. Record-Komponente; 25-Parameter-Backward-Compat-Konstruktor sichert Abwärtskompatibilität
- DefaultSchedulerControlUseCase: öffentliche Methode markAutostartFailed() ergänzt
- BootstrapRunner: guiSchedulerUseCase-Feld, tryInitializeScheduler(), stopGuiSchedulerIfActive()
  sowie BatchRunTrigger-Lambda; Autostart gemäß scheduler.enabled-Konfiguration

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-06 14:42:35 +02:00
parent 434c882d7d
commit d66364e254
4 changed files with 222 additions and 4 deletions
@@ -197,6 +197,23 @@ public class DefaultSchedulerControlUseCase implements SchedulerControlUseCase {
return statusRef.get();
}
/**
* Markiert den Autostart als fehlgeschlagen.
* <p>
* Wird von der Bootstrap-Schicht aufgerufen, wenn ein konfigurierter Autostart
* beim Programmstart fehlgeschlagen ist. Alle übrigen Statusfelder bleiben erhalten;
* lediglich {@link SchedulerStatus#autostartFailed()} wird auf {@code true} gesetzt.
* <p>
* Diese Methode darf nur aufgerufen werden, wenn der Scheduler noch gestoppt ist
* (unmittelbar nach einem fehlgeschlagenen {@link #start()}).
*/
public void markAutostartFailed() {
statusRef.updateAndGet(s -> new SchedulerStatus(
s.state(), s.lastRunEndedAt(), s.lastRunSummary(),
s.nextTickAt(), s.lastError(), true));
logger.warn("Scheduler-Status: Autostart als fehlgeschlagen markiert.");
}
// -------------------------------------------------------------------------
// Tick-Wrapper (package-private für Testbarkeit)
// -------------------------------------------------------------------------