Fix #48: Korrekte Abschlussmeldung bei SKIPPED-only-Läufen und neutrale Farbe

Problem 1: Falsche Meldung bei reinen SKIPPED-Läufen (0 failed, >0 skipped)
- Die Nachricht enthielt immer "fehlgeschlagen" auch wenn failedCount=0
- Neue Logik formuliert Meldung basierend auf tatsächlichen Zählern

Problem 2: Falsche rote Farbe für SKIPPED-only-Läufe
- Farblogik basierte auf Keywords im Text statt auf failedCount
- Neue Logik färbt rot nur wenn failedCount > 0
- Farbe neutral (kein Hintergrund) für SKIPPED-only-Läufe

Neue buildSummaryMessage()-Methode mit drei Fällen:
- Alle erfolgreich (0 failed, 0 skipped)
- Nur übersprungen (0 failed, >0 skipped)
- Mit Fehlern (failed > 0)

Neue Farblogik in appendSummary() direkt auf failedCount basieren.

Co-Authored-By: Claude Haiku 4.5 <noreply@anthropic.com>
This commit is contained in:
2026-04-27 14:15:18 +02:00
parent d9670ddfbe
commit ff86a07f0e
@@ -1662,10 +1662,45 @@ public final class GuiBatchRunTab {
if (!outcome.batchCompletedNormally()) { if (!outcome.batchCompletedNormally()) {
outcome.failureMessage().ifPresent(GuiBatchRunTab.this::appendMessage); outcome.failureMessage().ifPresent(GuiBatchRunTab.this::appendMessage);
} }
String summaryText = successCount + " erfolgreich, " // Zusammenfassungsmeldung basierend auf tatsächlichen Zählern
+ failedCount + " fehlgeschlagen, " String summaryText = buildSummaryMessage();
+ skippedCount + " übersprungen"; if (messageArea.getText() == null || messageArea.getText().isBlank()) {
appendMessage(summaryText); messageArea.setText(summaryText);
} else {
messageArea.setText(messageArea.getText() + System.lineSeparator() + summaryText);
}
messageArea.setVisible(true);
messageArea.setManaged(true);
// Farbe basierend auf tatsächlichem FAILED-Zähler, nicht auf Keywords im Text
if (failedCount > 0) {
messageArea.setStyle("-fx-control-inner-background: #ffebee;");
} else if (successCount > 0) {
messageArea.setStyle("-fx-control-inner-background: #e8f5e9;");
} else {
messageArea.setStyle(null);
}
}
/**
* Erzeugt die Abschlussmeldung des Verarbeitungslaufs basierend auf den
* tatsächlichen Zählern (erfolgreich, fehlgeschlagen, übersprungen).
*
* @return die formatierte Zusammenfassungsmeldung
*/
private String buildSummaryMessage() {
if (failedCount == 0 && skippedCount == 0) {
// Alle erfolgreich verarbeitet
return "Lauf erfolgreich abgeschlossen. " + successCount + " erfolgreich.";
} else if (failedCount == 0) {
// Nur übersprungene Dateien, keine Fehler
return "Lauf abgeschlossen. " + successCount + " erfolgreich, "
+ skippedCount + " übersprungen.";
} else {
// Mit fehlgeschlagenen Dateien
return "Lauf abgeschlossen. " + successCount + " erfolgreich, "
+ failedCount + " fehlgeschlagen, " + skippedCount + " übersprungen.";
}
} }
} }