diff --git a/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/GuiBatchRunCoordinator.java b/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/GuiBatchRunCoordinator.java index bbe16b7..0b77b02 100644 --- a/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/GuiBatchRunCoordinator.java +++ b/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/GuiBatchRunCoordinator.java @@ -298,13 +298,11 @@ public final class GuiBatchRunCoordinator { // Reset the database status synchronously before starting the mini-run. // This ensures that documents are not skipped due to FAILED_FINAL or other // terminal states. - LOG.info("[TEMP-TRACE] startReprocessing: Konfiguration={}, Fingerprints={}", - configFilePath, fingerprintFilter.stream() - .map(f -> f.sha256Hex().substring(0, 8) + "…") - .collect(java.util.stream.Collectors.joining(", "))); + LOG.info("GUI-Erneut-Verarbeiten: Starte Status-Reset für {} Dokument(e), Konfiguration={}.", + fingerprintFilter.size(), configFilePath); ResetDocumentStatusResult resetResult = resetPort.reset(configFilePath, fingerprintFilter); - LOG.info("[TEMP-TRACE] startReprocessing: Reset-Ergebnis: {} erfolgreich, {} fehlgeschlagen; Fehler={}", - resetResult.successCount(), resetResult.failureCount(), resetResult.failures()); + LOG.info("GUI-Erneut-Verarbeiten: Status-Reset abgeschlossen – {} erfolgreich, {} fehlgeschlagen.", + resetResult.successCount(), resetResult.failureCount()); if (resetResult.successCount() == 0) { LOG.warn("GUI-Reprocessing: Reset für alle {} Dokumente fehlgeschlagen; " + "Mini-Lauf wird nicht gestartet.", fingerprintFilter.size()); diff --git a/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/GuiBatchRunTab.java b/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/GuiBatchRunTab.java index 7802963..b628be5 100644 --- a/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/GuiBatchRunTab.java +++ b/pdf-umbenenner-adapter-in-gui/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/gui/batchrun/GuiBatchRunTab.java @@ -285,7 +285,7 @@ public final class GuiBatchRunTab { * @return {@code true} while the coordinator is processing a run */ public boolean isRunning() { - return coordinator.isRunning(); + return runningProperty.get(); } /** @@ -687,6 +687,8 @@ public final class GuiBatchRunTab { } private void handleReprocessSelected() { + LOG.info("GUI-Erneut-Verarbeiten: handleReprocessSelected aufgerufen. " + + "Laufend={}, Selektion={}.", isRunning(), selectedRows.size()); if (isRunning() || selectedRows.isEmpty()) { return; } @@ -766,8 +768,13 @@ public final class GuiBatchRunTab { */ private void markSelectedRowsAsResetPending() { List toMark = new ArrayList<>(selectedRows); - for (GuiBatchRunResultRow row : toMark) { - upsertResultRowByFingerprint(GuiBatchRunResultRow.resetMarker(row)); + selectionSyncInProgress = true; + try { + for (GuiBatchRunResultRow row : toMark) { + upsertResultRowByFingerprint(GuiBatchRunResultRow.resetMarker(row)); + } + } finally { + selectionSyncInProgress = false; } } @@ -822,7 +829,7 @@ public final class GuiBatchRunTab { } private void updateButtonStates() { - boolean running = coordinator.isRunning(); + boolean running = runningProperty.get(); startButton.setDisable(running); if (!running) { cancelButton.setDisable(true); diff --git a/pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/out/sqlite/SqliteDocumentRecordRepositoryAdapter.java b/pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/out/sqlite/SqliteDocumentRecordRepositoryAdapter.java index 02d2f22..f5cbb90 100644 --- a/pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/out/sqlite/SqliteDocumentRecordRepositoryAdapter.java +++ b/pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/out/sqlite/SqliteDocumentRecordRepositoryAdapter.java @@ -108,13 +108,8 @@ public class SqliteDocumentRecordRepositoryAdapter implements DocumentRecordRepo SKIPPED_ALREADY_PROCESSED, SKIPPED_FINAL_FAILURE -> new DocumentKnownProcessable(record); }; - logger.info("[TEMP-TRACE] findByFingerprint: fingerprint={}, jdbcUrl={}, Ergebnis={}", - fingerprint.sha256Hex(), jdbcUrl, result.getClass().getSimpleName()); return result; } else { - // Document not found - logger.info("[TEMP-TRACE] findByFingerprint: fingerprint={}, jdbcUrl={}, Ergebnis=DocumentUnknown", - fingerprint.sha256Hex(), jdbcUrl); return new DocumentUnknown(); } } @@ -321,9 +316,7 @@ public class SqliteDocumentRecordRepositoryAdapter implements DocumentRecordRepo PreparedStatement statement = connection.prepareStatement(sql)) { statement.setString(1, fingerprint.sha256Hex()); - int rowsAffected = statement.executeUpdate(); - logger.info("[TEMP-TRACE] deleteByFingerprint: fingerprint={}, jdbcUrl={}, rowsAffected={}", - fingerprint.sha256Hex(), jdbcUrl, rowsAffected); + statement.executeUpdate(); } catch (SQLException e) { String message = "Failed to delete document record for fingerprint '" diff --git a/pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/out/sqlite/SqliteUnitOfWorkAdapter.java b/pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/out/sqlite/SqliteUnitOfWorkAdapter.java index 99cd12c..d113ac8 100644 --- a/pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/out/sqlite/SqliteUnitOfWorkAdapter.java +++ b/pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/out/sqlite/SqliteUnitOfWorkAdapter.java @@ -178,8 +178,6 @@ public class SqliteUnitOfWorkAdapter implements UnitOfWorkPort { */ @Override public void resetDocumentByFingerprint(DocumentFingerprint fingerprint) { - logger.info("[TEMP-TRACE] resetDocumentByFingerprint: Fingerprint={}, jdbcUrl={}", - fingerprint.sha256Hex(), jdbcUrl); // Delete attempts first (FK constraint: processing_attempt → document_record) SqliteProcessingAttemptRepositoryAdapter attemptRepo = new SqliteProcessingAttemptRepositoryAdapter(jdbcUrl) { @@ -199,8 +197,6 @@ public class SqliteUnitOfWorkAdapter implements UnitOfWorkPort { } }; recordRepo.deleteByFingerprint(fingerprint); - logger.info("[TEMP-TRACE] resetDocumentByFingerprint: Löschung abgeschlossen für Fingerprint={}", - fingerprint.sha256Hex()); } } } \ No newline at end of file diff --git a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/service/DocumentProcessingCoordinator.java b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/service/DocumentProcessingCoordinator.java index f915f1d..2104b0b 100644 --- a/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/service/DocumentProcessingCoordinator.java +++ b/pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/service/DocumentProcessingCoordinator.java @@ -351,9 +351,6 @@ public class DocumentProcessingCoordinator { // Step 1: Load the document master record DocumentRecordLookupResult lookupResult = documentRecordRepository.findByFingerprint(fingerprint); - logger.info("[TEMP-TRACE] processDeferredOutcome: Fingerprint={}, Lookup-Ergebnis={}", - fingerprint.sha256Hex(), lookupResult.getClass().getSimpleName()); - // Step 2: Handle persistence lookup failure if (lookupResult instanceof PersistenceLookupTechnicalFailure failure) { logger.error("Cannot process '{}': master record lookup failed: {}",