Schritt 10: GuiSchedulerTab implementieren und in Workspace verdrahten

- SchedulerControlUseCase um getIntervalSeconds(), saveIntervalSeconds(), disableAutostart() erweitert
- DefaultSchedulerControlUseCase implementiert diese drei neuen Methoden
- GuiSchedulerTab neu eingeführt: Autostart-Fehler-Banner + Scheduler-Steuerung
  (Status, Start/Stopp, Countdown, letzter Lauf, Fehleranzeige, Intervall-Feld)
- GuiConfigurationEditorWorkspace: schedulerTab als 3. Tab (nach Verarbeitungslauf)
  eingehängt; onSchedulerStatusRefresh delegiert jetzt auch an schedulerTab.updateStatus()
- GuiAdapterSmokeTest: Tab-Anzahl und -Reihenfolge auf 5 Tabs aktualisiert

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
2026-05-06 16:05:24 +02:00
parent 0cec9347c1
commit fa4f327a3f
5 changed files with 569 additions and 10 deletions
@@ -60,4 +60,40 @@ public interface SchedulerControlUseCase {
* @return aktueller Scheduler-Status; nie {@code null}
*/
SchedulerStatus getStatus();
/**
* Gibt das aktuell konfigurierte Ausführungsintervall in Sekunden zurück.
* <p>
* Wird vom Scheduler-Tab genutzt, um den Initialwert des Intervall-Feldes
* anzuzeigen. Der Wert entspricht dem beim Start der Anwendung geladenen
* Konfigurationswert (mindestens 30 Sekunden).
*
* @return Intervall in Sekunden; immer &ge; 30
*/
int getIntervalSeconds();
/**
* Persistiert das Ausführungsintervall in die Konfigurationsdatei.
* <p>
* Sicher nur aufzurufen wenn der Scheduler gestoppt ist. Der in-Memory-Wert
* wird nicht aktualisiert; der neue Wert wird beim nächsten Anwendungsstart
* gelesen.
* <p>
* Muss auf einem Hintergrund-Thread aufgerufen werden, da der Schreibvorgang
* den Konfigurations-Datei-Lock erwerben muss.
*
* @param seconds Intervall in Sekunden; sollte &ge; 30 sein
*/
void saveIntervalSeconds(int seconds);
/**
* Deaktiviert den Autostart durch Persistieren von {@code scheduler.enabled=false}.
* <p>
* Wird vom Scheduler-Tab aufgerufen, wenn der Benutzer den fehlgeschlagenen
* Autostart dauerhaft deaktivieren möchte. Sicher aufzurufen wenn der Scheduler
* gestoppt ist.
* <p>
* Muss auf einem Hintergrund-Thread aufgerufen werden.
*/
void disableAutostart();
}
@@ -197,6 +197,42 @@ public class DefaultSchedulerControlUseCase implements SchedulerControlUseCase {
return statusRef.get();
}
/**
* Gibt das beim Start der Anwendung geladene Ausführungsintervall in Sekunden zurück.
*
* @return Intervall in Sekunden; immer &ge; 30
*/
@Override
public int getIntervalSeconds() {
return intervalSeconds;
}
/**
* Persistiert das Ausführungsintervall in die Konfigurationsdatei.
* <p>
* Der in-Memory-Wert wird nicht aktualisiert; der neue Wert wird beim
* nächsten Anwendungsstart gelesen.
*
* @param seconds Intervall in Sekunden
*/
@Override
public void saveIntervalSeconds(int seconds) {
settingsPort.saveIntervalSeconds(seconds);
}
/**
* Deaktiviert den Autostart durch Persistieren von {@code scheduler.enabled=false}.
*/
@Override
public void disableAutostart() {
try {
settingsPort.saveEnabled(false);
logger.info("Autostart deaktiviert.");
} catch (Exception e) {
logger.warn("Fehler beim Deaktivieren des Autostarts.", e);
}
}
/**
* Markiert den Autostart als fehlgeschlagen.
* <p>