1
0

Refactoring: Paketnamen und Klassennamen

This commit is contained in:
2026-04-02 14:40:14 +02:00
parent 1c53b65b86
commit 60498ab3c8
26 changed files with 111 additions and 105 deletions

View File

@@ -1,19 +1,19 @@
pdf-umbenenner-adapter-in-cli/src/main/java/de/gecheckt/pdf/umbenenner/adapter/inbound/cli/package-info.java | de.gecheckt.pdf.umbenenner.adapter.inbound.cli | | pdf-umbenenner-adapter-in-cli/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/cli/package-info.java | de.gecheckt.pdf.umbenenner.adapter.in.cli | |
pdf-umbenenner-adapter-in-cli/src/main/java/de/gecheckt/pdf/umbenenner/adapter/inbound/cli/SchedulerBatchCommand.java | de.gecheckt.pdf.umbenenner.adapter.inbound.cli | class | SchedulerBatchCommand pdf-umbenenner-adapter-in-cli/src/main/java/de/gecheckt/pdf/umbenenner/adapter/in/cli/SchedulerBatchCommand.java | de.gecheckt.pdf.umbenenner.adapter.in.cli | class | SchedulerBatchCommand
pdf-umbenenner-adapter-in-cli/src/test/java/de/gecheckt/pdf/umbenenner/adapter/inbound/cli/SchedulerBatchCommandTest.java | de.gecheckt.pdf.umbenenner.adapter.inbound.cli | class | SchedulerBatchCommandTest pdf-umbenenner-adapter-in-cli/src/test/java/de/gecheckt/pdf/umbenenner/adapter/in/cli/SchedulerBatchCommandTest.java | de.gecheckt.pdf.umbenenner.adapter.in.cli | class | SchedulerBatchCommandTest
pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/outbound/configuration/package-info.java | de.gecheckt.pdf.umbenenner.adapter.outbound.configuration | | pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/out/configuration/package-info.java | de.gecheckt.pdf.umbenenner.adapter.out.configuration | |
pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/outbound/configuration/PropertiesConfigurationPortAdapter.java | de.gecheckt.pdf.umbenenner.adapter.outbound.configuration | class | PropertiesConfigurationPortAdapter pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/out/configuration/PropertiesConfigurationPortAdapter.java | de.gecheckt.pdf.umbenenner.adapter.out.configuration | class | PropertiesConfigurationPortAdapter
pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/outbound/lock/FilesystemRunLockPortAdapter.java | de.gecheckt.pdf.umbenenner.adapter.outbound.lock | class | FilesystemRunLockPortAdapter pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/out/lock/FilesystemRunLockPortAdapter.java | de.gecheckt.pdf.umbenenner.adapter.out.lock | class | FilesystemRunLockPortAdapter
pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/outbound/lock/package-info.java | de.gecheckt.pdf.umbenenner.adapter.outbound.lock | | pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/out/lock/package-info.java | de.gecheckt.pdf.umbenenner.adapter.out.lock | |
pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/outbound/package-info.java | de.gecheckt.pdf.umbenenner.adapter.outbound | | pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/out/package-info.java | de.gecheckt.pdf.umbenenner.adapter.out | |
pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/outbound/pdfextraction/package-info.java | de.gecheckt.pdf.umbenenner.adapter.outbound.pdfextraction | | pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/out/pdfextraction/package-info.java | de.gecheckt.pdf.umbenenner.adapter.out.pdfextraction | |
pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/outbound/pdfextraction/PdfTextExtractionPortAdapter.java | de.gecheckt.pdf.umbenenner.adapter.outbound.pdfextraction | class | PdfTextExtractionPortAdapter pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/out/pdfextraction/PdfTextExtractionPortAdapter.java | de.gecheckt.pdf.umbenenner.adapter.out.pdfextraction | class | PdfTextExtractionPortAdapter
pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/outbound/sourcedocument/package-info.java | de.gecheckt.pdf.umbenenner.adapter.outbound.sourcedocument | | pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/out/sourcedocument/package-info.java | de.gecheckt.pdf.umbenenner.adapter.out.sourcedocument | |
pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/outbound/sourcedocument/SourceDocumentCandidatesPortAdapter.java | de.gecheckt.pdf.umbenenner.adapter.outbound.sourcedocument | class | SourceDocumentCandidatesPortAdapter pdf-umbenenner-adapter-out/src/main/java/de/gecheckt/pdf/umbenenner/adapter/out/sourcedocument/SourceDocumentCandidatesPortAdapter.java | de.gecheckt.pdf.umbenenner.adapter.out.sourcedocument | class | SourceDocumentCandidatesPortAdapter
pdf-umbenenner-adapter-out/src/test/java/de/gecheckt/pdf/umbenenner/adapter/outbound/configuration/PropertiesConfigurationPortAdapterTest.java | de.gecheckt.pdf.umbenenner.adapter.outbound.configuration | class | PropertiesConfigurationPortAdapterTest pdf-umbenenner-adapter-out/src/test/java/de/gecheckt/pdf/umbenenner/adapter/out/configuration/PropertiesConfigurationPortAdapterTest.java | de.gecheckt.pdf.umbenenner.adapter.out.configuration | class | PropertiesConfigurationPortAdapterTest
pdf-umbenenner-adapter-out/src/test/java/de/gecheckt/pdf/umbenenner/adapter/outbound/lock/FilesystemRunLockPortAdapterTest.java | de.gecheckt.pdf.umbenenner.adapter.outbound.lock | class | FilesystemRunLockPortAdapterTest pdf-umbenenner-adapter-out/src/test/java/de/gecheckt/pdf/umbenenner/adapter/out/lock/FilesystemRunLockPortAdapterTest.java | de.gecheckt.pdf.umbenenner.adapter.out.lock | class | FilesystemRunLockPortAdapterTest
pdf-umbenenner-adapter-out/src/test/java/de/gecheckt/pdf/umbenenner/adapter/outbound/pdfextraction/PdfTextExtractionPortAdapterTest.java | de.gecheckt.pdf.umbenenner.adapter.outbound.pdfextraction | class | PdfTextExtractionPortAdapterTest pdf-umbenenner-adapter-out/src/test/java/de/gecheckt/pdf/umbenenner/adapter/out/pdfextraction/PdfTextExtractionPortAdapterTest.java | de.gecheckt.pdf.umbenenner.adapter.out.pdfextraction | class | PdfTextExtractionPortAdapterTest
pdf-umbenenner-adapter-out/src/test/java/de/gecheckt/pdf/umbenenner/adapter/outbound/sourcedocument/SourceDocumentCandidatesPortAdapterTest.java | de.gecheckt.pdf.umbenenner.adapter.outbound.sourcedocument | class | SourceDocumentCandidatesPortAdapterTest pdf-umbenenner-adapter-out/src/test/java/de/gecheckt/pdf/umbenenner/adapter/out/sourcedocument/SourceDocumentCandidatesPortAdapterTest.java | de.gecheckt.pdf.umbenenner.adapter.out.sourcedocument | class | SourceDocumentCandidatesPortAdapterTest
pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/config/InvalidStartConfigurationException.java | de.gecheckt.pdf.umbenenner.application.config | class | InvalidStartConfigurationException pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/config/InvalidStartConfigurationException.java | de.gecheckt.pdf.umbenenner.application.config | class | InvalidStartConfigurationException
pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/config/package-info.java | de.gecheckt.pdf.umbenenner.application.config | | pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/config/package-info.java | de.gecheckt.pdf.umbenenner.application.config | |
pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/config/StartConfiguration.java | de.gecheckt.pdf.umbenenner.application.config | record | StartConfiguration pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/config/StartConfiguration.java | de.gecheckt.pdf.umbenenner.application.config | record | StartConfiguration
@@ -30,39 +30,39 @@ pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/
pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/RunLockUnavailableException.java | de.gecheckt.pdf.umbenenner.application.port.out | class | RunLockUnavailableException pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/RunLockUnavailableException.java | de.gecheckt.pdf.umbenenner.application.port.out | class | RunLockUnavailableException
pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/SourceDocumentAccessException.java | de.gecheckt.pdf.umbenenner.application.port.out | | pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/SourceDocumentAccessException.java | de.gecheckt.pdf.umbenenner.application.port.out | |
pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/SourceDocumentCandidatesPort.java | de.gecheckt.pdf.umbenenner.application.port.out | interface | SourceDocumentCandidatesPort pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/port/out/SourceDocumentCandidatesPort.java | de.gecheckt.pdf.umbenenner.application.port.out | interface | SourceDocumentCandidatesPort
pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/service/M3DocumentProcessingService.java | de.gecheckt.pdf.umbenenner.application.service | class | M3DocumentProcessingService pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/service/DocumentProcessingService.java | de.gecheckt.pdf.umbenenner.application.service | class | DocumentProcessingService
pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/service/M3PreCheckEvaluator.java | de.gecheckt.pdf.umbenenner.application.service | class | M3PreCheckEvaluator
pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/service/package-info.java | de.gecheckt.pdf.umbenenner.application.service | | pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/service/package-info.java | de.gecheckt.pdf.umbenenner.application.service | |
pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/usecase/M2BatchRunProcessingUseCase.java | de.gecheckt.pdf.umbenenner.application.usecase | class | M2BatchRunProcessingUseCase pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/service/PreCheckEvaluator.java | de.gecheckt.pdf.umbenenner.application.service | class | PreCheckEvaluator
pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/usecase/BatchRunProcessingUseCase.java | de.gecheckt.pdf.umbenenner.application.usecase | class | BatchRunProcessingUseCase
pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/usecase/package-info.java | de.gecheckt.pdf.umbenenner.application.usecase | | pdf-umbenenner-application/src/main/java/de/gecheckt/pdf/umbenenner/application/usecase/package-info.java | de.gecheckt.pdf.umbenenner.application.usecase | |
pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/config/StartConfigurationValidatorTest.java | de.gecheckt.pdf.umbenenner.application.config | class | StartConfigurationValidatorTest pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/config/StartConfigurationValidatorTest.java | de.gecheckt.pdf.umbenenner.application.config | class | StartConfigurationValidatorTest
pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/service/M3DocumentProcessingServiceTest.java | de.gecheckt.pdf.umbenenner.application.service | class | M3DocumentProcessingServiceTest pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/service/DocumentProcessingServiceTest.java | de.gecheckt.pdf.umbenenner.application.service | class | DocumentProcessingServiceTest
pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/service/M3PreCheckEvaluatorTest.java | de.gecheckt.pdf.umbenenner.application.service | class | M3PreCheckEvaluatorTest pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/service/PreCheckEvaluatorTest.java | de.gecheckt.pdf.umbenenner.application.service | class | PreCheckEvaluatorTest
pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/usecase/M2BatchRunProcessingUseCaseTest.java | de.gecheckt.pdf.umbenenner.application.usecase | class | M2BatchRunProcessingUseCaseTest pdf-umbenenner-application/src/test/java/de/gecheckt/pdf/umbenenner/application/usecase/BatchRunProcessingUseCaseTest.java | de.gecheckt.pdf.umbenenner.application.usecase | class | BatchRunProcessingUseCaseTest
pdf-umbenenner-bootstrap/src/main/java/de/gecheckt/pdf/umbenenner/bootstrap/BootstrapRunner.java | de.gecheckt.pdf.umbenenner.bootstrap | class | BootstrapRunner pdf-umbenenner-bootstrap/src/main/java/de/gecheckt/pdf/umbenenner/bootstrap/BootstrapRunner.java | de.gecheckt.pdf.umbenenner.bootstrap | class | BootstrapRunner
pdf-umbenenner-bootstrap/src/main/java/de/gecheckt/pdf/umbenenner/bootstrap/package-info.java | de.gecheckt.pdf.umbenenner.bootstrap | | pdf-umbenenner-bootstrap/src/main/java/de/gecheckt/pdf/umbenenner/bootstrap/package-info.java | de.gecheckt.pdf.umbenenner.bootstrap | |
pdf-umbenenner-bootstrap/src/main/java/de/gecheckt/pdf/umbenenner/bootstrap/PdfUmbenennerApplication.java | de.gecheckt.pdf.umbenenner.bootstrap | class | PdfUmbenennerApplication pdf-umbenenner-bootstrap/src/main/java/de/gecheckt/pdf/umbenenner/bootstrap/PdfUmbenennerApplication.java | de.gecheckt.pdf.umbenenner.bootstrap | class | PdfUmbenennerApplication
pdf-umbenenner-bootstrap/src/test/java/de/gecheckt/pdf/umbenenner/bootstrap/BootstrapRunnerTest.java | de.gecheckt.pdf.umbenenner.bootstrap | class | BootstrapRunnerTest pdf-umbenenner-bootstrap/src/test/java/de/gecheckt/pdf/umbenenner/bootstrap/BootstrapRunnerTest.java | de.gecheckt.pdf.umbenenner.bootstrap | class | BootstrapRunnerTest
pdf-umbenenner-bootstrap/src/test/java/de/gecheckt/pdf/umbenenner/bootstrap/ExecutableJarSmokeTestIT.java | de.gecheckt.pdf.umbenenner.bootstrap | class | ExecutableJarSmokeTestIT pdf-umbenenner-bootstrap/src/test/java/de/gecheckt/pdf/umbenenner/bootstrap/ExecutableJarSmokeTestIT.java | de.gecheckt.pdf.umbenenner.bootstrap | class | ExecutableJarSmokeTestIT
pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/BatchRunContext.java | de.gecheckt.pdf.umbenenner.domain.model | | pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/BatchRunContext.java | de.gecheckt.pdf.umbenenner.domain.model | |
pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/M3DocumentProcessingOutcome.java | de.gecheckt.pdf.umbenenner.domain.model | | pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/DocumentProcessingOutcome.java | de.gecheckt.pdf.umbenenner.domain.model | |
pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/M3PreCheckFailed.java | de.gecheckt.pdf.umbenenner.domain.model | record | M3PreCheckFailed
pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/M3PreCheckFailureReason.java | de.gecheckt.pdf.umbenenner.domain.model | enum | M3PreCheckFailureReason
pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/M3PreCheckPassed.java | de.gecheckt.pdf.umbenenner.domain.model | record | M3PreCheckPassed
pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/M3ProcessingDecision.java | de.gecheckt.pdf.umbenenner.domain.model | |
pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/M3TechnicalDocumentError.java | de.gecheckt.pdf.umbenenner.domain.model | record | M3TechnicalDocumentError
pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/package-info.java | de.gecheckt.pdf.umbenenner.domain.model | | pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/package-info.java | de.gecheckt.pdf.umbenenner.domain.model | |
pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/PdfExtractionContentError.java | de.gecheckt.pdf.umbenenner.domain.model | record | PdfExtractionContentError pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/PdfExtractionContentError.java | de.gecheckt.pdf.umbenenner.domain.model | record | PdfExtractionContentError
pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/PdfExtractionResult.java | de.gecheckt.pdf.umbenenner.domain.model | | pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/PdfExtractionResult.java | de.gecheckt.pdf.umbenenner.domain.model | |
pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/PdfExtractionSuccess.java | de.gecheckt.pdf.umbenenner.domain.model | record | PdfExtractionSuccess pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/PdfExtractionSuccess.java | de.gecheckt.pdf.umbenenner.domain.model | record | PdfExtractionSuccess
pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/PdfExtractionTechnicalError.java | de.gecheckt.pdf.umbenenner.domain.model | record | PdfExtractionTechnicalError pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/PdfExtractionTechnicalError.java | de.gecheckt.pdf.umbenenner.domain.model | record | PdfExtractionTechnicalError
pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/PdfPageCount.java | de.gecheckt.pdf.umbenenner.domain.model | record | PdfPageCount pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/PdfPageCount.java | de.gecheckt.pdf.umbenenner.domain.model | record | PdfPageCount
pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/PreCheckFailed.java | de.gecheckt.pdf.umbenenner.domain.model | record | PreCheckFailed
pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/PreCheckFailureReason.java | de.gecheckt.pdf.umbenenner.domain.model | enum | PreCheckFailureReason
pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/PreCheckPassed.java | de.gecheckt.pdf.umbenenner.domain.model | record | PreCheckPassed
pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/ProcessingDecision.java | de.gecheckt.pdf.umbenenner.domain.model | |
pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/ProcessingStatus.java | de.gecheckt.pdf.umbenenner.domain.model | enum | ProcessingStatus pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/ProcessingStatus.java | de.gecheckt.pdf.umbenenner.domain.model | enum | ProcessingStatus
pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/RunId.java | de.gecheckt.pdf.umbenenner.domain.model | | pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/RunId.java | de.gecheckt.pdf.umbenenner.domain.model | |
pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/SourceDocumentCandidate.java | de.gecheckt.pdf.umbenenner.domain.model | record | SourceDocumentCandidate pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/SourceDocumentCandidate.java | de.gecheckt.pdf.umbenenner.domain.model | record | SourceDocumentCandidate
pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/SourceDocumentLocator.java | de.gecheckt.pdf.umbenenner.domain.model | record | SourceDocumentLocator pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/SourceDocumentLocator.java | de.gecheckt.pdf.umbenenner.domain.model | record | SourceDocumentLocator
pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/model/TechnicalDocumentError.java | de.gecheckt.pdf.umbenenner.domain.model | record | TechnicalDocumentError
pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/package-info.java | de.gecheckt.pdf.umbenenner.domain | | pdf-umbenenner-domain/src/main/java/de/gecheckt/pdf/umbenenner/domain/package-info.java | de.gecheckt.pdf.umbenenner.domain | |
pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/BatchRunContextTest.java | de.gecheckt.pdf.umbenenner.domain.model | class | BatchRunContextTest pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/BatchRunContextTest.java | de.gecheckt.pdf.umbenenner.domain.model | class | BatchRunContextTest
pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/M3DocumentProcessingOutcomeTest.java | de.gecheckt.pdf.umbenenner.domain.model | class | M3DocumentProcessingOutcomeTest pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/DocumentProcessingOutcomeTest.java | de.gecheckt.pdf.umbenenner.domain.model | class | DocumentProcessingOutcomeTest
pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/ProcessingStatusTest.java | de.gecheckt.pdf.umbenenner.domain.model | class | ProcessingStatusTest pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/ProcessingStatusTest.java | de.gecheckt.pdf.umbenenner.domain.model | class | ProcessingStatusTest
pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/RunIdTest.java | de.gecheckt.pdf.umbenenner.domain.model | class | RunIdTest pdf-umbenenner-domain/src/test/java/de/gecheckt/pdf/umbenenner/domain/model/RunIdTest.java | de.gecheckt.pdf.umbenenner.domain.model | class | RunIdTest

View File

@@ -1,14 +1,14 @@
package de.gecheckt.pdf.umbenenner.adapter.inbound.cli; package de.gecheckt.pdf.umbenenner.adapter.in.cli;
import de.gecheckt.pdf.umbenenner.application.port.in.BatchRunOutcome; import de.gecheckt.pdf.umbenenner.application.port.in.BatchRunOutcome;
import de.gecheckt.pdf.umbenenner.application.port.in.RunBatchProcessingUseCase; import de.gecheckt.pdf.umbenenner.application.port.in.BatchRunProcessingUseCase;
import de.gecheckt.pdf.umbenenner.domain.model.BatchRunContext; import de.gecheckt.pdf.umbenenner.domain.model.BatchRunContext;
/** /**
* CLI command adapter for batch processing scheduling. * CLI command adapter for batch processing scheduling.
* <p> * <p>
* This class acts as the inbound technical entry point that exclusively delegates * This class acts as the inbound technical entry point that exclusively delegates
* to the application layer's batch processing use case via the {@link RunBatchProcessingUseCase} * to the application layer's batch processing use case via the {@link BatchRunProcessingUseCase}
* interface. It receives the batch run outcome and makes it available to the Bootstrap layer * interface. It receives the batch run outcome and makes it available to the Bootstrap layer
* for exit code determination and logging. * for exit code determination and logging.
* <p> * <p>
@@ -21,19 +21,19 @@ import de.gecheckt.pdf.umbenenner.domain.model.BatchRunContext;
* enabling run ID and timing tracking throughout the batch cycle. * enabling run ID and timing tracking throughout the batch cycle.
* <p> * <p>
* M2-AP-005 Update: Dependency inversion achieved - this adapter depends only on the * M2-AP-005 Update: Dependency inversion achieved - this adapter depends only on the
* RunBatchProcessingUseCase interface, not on any concrete implementation. Bootstrap * BatchRunProcessingUseCase interface, not on any concrete implementation. Bootstrap
* is responsible for injecting the appropriate use case implementation. * is responsible for injecting the appropriate use case implementation.
*/ */
public class SchedulerBatchCommand { public class SchedulerBatchCommand {
private final RunBatchProcessingUseCase useCase; private final BatchRunProcessingUseCase useCase;
/** /**
* Creates a new SchedulerBatchCommand with the given use case. * Creates a new SchedulerBatchCommand with the given use case.
* *
* @param useCase the batch processing use case to delegate to * @param useCase the batch processing use case to delegate to
*/ */
public SchedulerBatchCommand(RunBatchProcessingUseCase useCase) { public SchedulerBatchCommand(BatchRunProcessingUseCase useCase) {
this.useCase = useCase; this.useCase = useCase;
} }

View File

@@ -7,16 +7,16 @@
* <p> * <p>
* Components: * Components:
* <ul> * <ul>
* <li>{@link de.gecheckt.pdf.umbenenner.adapter.inbound.cli.SchedulerBatchCommand} * <li>{@link de.gecheckt.pdf.umbenenner.adapter.in.cli.SchedulerBatchCommand}
* CLI entry point that delegates to RunBatchProcessingUseCase interface (AP-005)</li> * CLI entry point that delegates to BatchRunProcessingUseCase interface (AP-005)</li>
* </ul> * </ul>
* <p> * <p>
* M2-AP-005 Architecture: * M2-AP-005 Architecture:
* <ul> * <ul>
* <li>Adapter depends on: {@link de.gecheckt.pdf.umbenenner.application.port.in.RunBatchProcessingUseCase} (interface)</li> * <li>Adapter depends on: {@link de.gecheckt.pdf.umbenenner.application.port.in.BatchRunProcessingUseCase} (interface)</li>
* <li>Adapter does not depend on: any concrete use case implementation</li> * <li>Adapter does not depend on: any concrete use case implementation</li>
* <li>Bootstrap wires concrete use case implementation via constructor injection</li> * <li>Bootstrap wires concrete use case implementation via constructor injection</li>
* <li>Dependency direction: Adapter IN (through port) Application</li> * <li>Dependency direction: Adapter IN (through port) Application</li>
* </ul> * </ul>
*/ */
package de.gecheckt.pdf.umbenenner.adapter.inbound.cli; package de.gecheckt.pdf.umbenenner.adapter.in.cli;

View File

@@ -1,7 +1,8 @@
package de.gecheckt.pdf.umbenenner.adapter.inbound.cli; package de.gecheckt.pdf.umbenenner.adapter.in.cli;
import de.gecheckt.pdf.umbenenner.adapter.in.cli.SchedulerBatchCommand;
import de.gecheckt.pdf.umbenenner.application.port.in.BatchRunOutcome; import de.gecheckt.pdf.umbenenner.application.port.in.BatchRunOutcome;
import de.gecheckt.pdf.umbenenner.application.port.in.RunBatchProcessingUseCase; import de.gecheckt.pdf.umbenenner.application.port.in.BatchRunProcessingUseCase;
import de.gecheckt.pdf.umbenenner.domain.model.BatchRunContext; import de.gecheckt.pdf.umbenenner.domain.model.BatchRunContext;
import de.gecheckt.pdf.umbenenner.domain.model.RunId; import de.gecheckt.pdf.umbenenner.domain.model.RunId;
@@ -21,7 +22,7 @@ class SchedulerBatchCommandTest {
@Test @Test
void constructor_acceptsRunBatchProcessingUseCase() { void constructor_acceptsRunBatchProcessingUseCase() {
RunBatchProcessingUseCase mockUseCase = (context) -> BatchRunOutcome.SUCCESS; BatchRunProcessingUseCase mockUseCase = (context) -> BatchRunOutcome.SUCCESS;
SchedulerBatchCommand command = new SchedulerBatchCommand(mockUseCase); SchedulerBatchCommand command = new SchedulerBatchCommand(mockUseCase);
@@ -31,7 +32,7 @@ class SchedulerBatchCommandTest {
@Test @Test
void run_delegatesToUseCaseAndReturnsOutcome() { void run_delegatesToUseCaseAndReturnsOutcome() {
// Setup: mock use case that returns SUCCESS // Setup: mock use case that returns SUCCESS
RunBatchProcessingUseCase mockUseCase = (context) -> BatchRunOutcome.SUCCESS; BatchRunProcessingUseCase mockUseCase = (context) -> BatchRunOutcome.SUCCESS;
SchedulerBatchCommand command = new SchedulerBatchCommand(mockUseCase); SchedulerBatchCommand command = new SchedulerBatchCommand(mockUseCase);
BatchRunContext context = new BatchRunContext(new RunId("test-run"), Instant.now()); BatchRunContext context = new BatchRunContext(new RunId("test-run"), Instant.now());
@@ -65,7 +66,7 @@ class SchedulerBatchCommandTest {
@Test @Test
void run_returnsSuccessOutcome() { void run_returnsSuccessOutcome() {
RunBatchProcessingUseCase successUseCase = (context) -> BatchRunOutcome.SUCCESS; BatchRunProcessingUseCase successUseCase = (context) -> BatchRunOutcome.SUCCESS;
SchedulerBatchCommand command = new SchedulerBatchCommand(successUseCase); SchedulerBatchCommand command = new SchedulerBatchCommand(successUseCase);
BatchRunContext context = new BatchRunContext(new RunId("test"), Instant.now()); BatchRunContext context = new BatchRunContext(new RunId("test"), Instant.now());
@@ -78,7 +79,7 @@ class SchedulerBatchCommandTest {
@Test @Test
void run_returnsFailureOutcome() { void run_returnsFailureOutcome() {
RunBatchProcessingUseCase failureUseCase = (context) -> BatchRunOutcome.FAILURE; BatchRunProcessingUseCase failureUseCase = (context) -> BatchRunOutcome.FAILURE;
SchedulerBatchCommand command = new SchedulerBatchCommand(failureUseCase); SchedulerBatchCommand command = new SchedulerBatchCommand(failureUseCase);
BatchRunContext context = new BatchRunContext(new RunId("test"), Instant.now()); BatchRunContext context = new BatchRunContext(new RunId("test"), Instant.now());
@@ -91,7 +92,7 @@ class SchedulerBatchCommandTest {
@Test @Test
void run_returnsLockUnavailableOutcome() { void run_returnsLockUnavailableOutcome() {
RunBatchProcessingUseCase lockUnavailableUseCase = (context) -> BatchRunOutcome.LOCK_UNAVAILABLE; BatchRunProcessingUseCase lockUnavailableUseCase = (context) -> BatchRunOutcome.LOCK_UNAVAILABLE;
SchedulerBatchCommand command = new SchedulerBatchCommand(lockUnavailableUseCase); SchedulerBatchCommand command = new SchedulerBatchCommand(lockUnavailableUseCase);
BatchRunContext context = new BatchRunContext(new RunId("test"), Instant.now()); BatchRunContext context = new BatchRunContext(new RunId("test"), Instant.now());
@@ -103,7 +104,7 @@ class SchedulerBatchCommandTest {
@Test @Test
void run_multipleCallsWithDifferentContexts() { void run_multipleCallsWithDifferentContexts() {
RunBatchProcessingUseCase mockUseCase = (context) -> BatchRunOutcome.SUCCESS; BatchRunProcessingUseCase mockUseCase = (context) -> BatchRunOutcome.SUCCESS;
SchedulerBatchCommand command = new SchedulerBatchCommand(mockUseCase); SchedulerBatchCommand command = new SchedulerBatchCommand(mockUseCase);
BatchRunContext context1 = new BatchRunContext(new RunId("run-1"), Instant.now()); BatchRunContext context1 = new BatchRunContext(new RunId("run-1"), Instant.now());
@@ -123,7 +124,7 @@ class SchedulerBatchCommandTest {
RunId runId = new RunId("immutable-test"); RunId runId = new RunId("immutable-test");
Instant startTime = Instant.parse("2026-03-31T20:00:00Z"); Instant startTime = Instant.parse("2026-03-31T20:00:00Z");
RunBatchProcessingUseCase mockUseCase = (context) -> { BatchRunProcessingUseCase mockUseCase = (context) -> {
// Verify context state is not modified // Verify context state is not modified
assertEquals(runId, context.runId()); assertEquals(runId, context.runId());
assertEquals(startTime, context.startInstant()); assertEquals(startTime, context.startInstant());
@@ -142,7 +143,7 @@ class SchedulerBatchCommandTest {
/** /**
* Mock use case that captures the passed context for verification. * Mock use case that captures the passed context for verification.
*/ */
private static class MockCapturingUseCase implements RunBatchProcessingUseCase { private static class MockCapturingUseCase implements BatchRunProcessingUseCase {
BatchRunContext capturedContext; BatchRunContext capturedContext;
@Override @Override

View File

@@ -1,4 +1,4 @@
package de.gecheckt.pdf.umbenenner.adapter.outbound.configuration; package de.gecheckt.pdf.umbenenner.adapter.out.configuration;
import de.gecheckt.pdf.umbenenner.application.config.StartConfiguration; import de.gecheckt.pdf.umbenenner.application.config.StartConfiguration;
import de.gecheckt.pdf.umbenenner.application.port.out.ConfigurationPort; import de.gecheckt.pdf.umbenenner.application.port.out.ConfigurationPort;

View File

@@ -2,4 +2,4 @@
* Configuration adapters for outbound infrastructure access. * Configuration adapters for outbound infrastructure access.
* Contains implementations of configuration loading from external sources. * Contains implementations of configuration loading from external sources.
*/ */
package de.gecheckt.pdf.umbenenner.adapter.outbound.configuration; package de.gecheckt.pdf.umbenenner.adapter.out.configuration;

View File

@@ -1,4 +1,4 @@
package de.gecheckt.pdf.umbenenner.adapter.outbound.lock; package de.gecheckt.pdf.umbenenner.adapter.out.lock;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;

View File

@@ -3,7 +3,7 @@
* <p> * <p>
* Components: * Components:
* <ul> * <ul>
* <li>{@link de.gecheckt.pdf.umbenenner.adapter.outbound.lock.FilesystemRunLockPortAdapter} * <li>{@link de.gecheckt.pdf.umbenenner.adapter.out.lock.FilesystemRunLockPortAdapter}
* File-based run lock that prevents concurrent instances (AP-006)</li> * File-based run lock that prevents concurrent instances (AP-006)</li>
* </ul> * </ul>
* <p> * <p>
@@ -11,4 +11,4 @@
* Stores the acquiring process PID in the lock file for diagnostics. * Stores the acquiring process PID in the lock file for diagnostics.
* Release is best-effort and logs a warning on failure without throwing. * Release is best-effort and logs a warning on failure without throwing.
*/ */
package de.gecheckt.pdf.umbenenner.adapter.outbound.lock; package de.gecheckt.pdf.umbenenner.adapter.out.lock;

View File

@@ -5,4 +5,4 @@
* (PDF processing, database access, HTTP clients, etc.). * (PDF processing, database access, HTTP clients, etc.).
* AP-003: Currently empty as no outbound implementations have been created yet. * AP-003: Currently empty as no outbound implementations have been created yet.
*/ */
package de.gecheckt.pdf.umbenenner.adapter.outbound; package de.gecheckt.pdf.umbenenner.adapter.out;

View File

@@ -1,4 +1,4 @@
package de.gecheckt.pdf.umbenenner.adapter.outbound.pdfextraction; package de.gecheckt.pdf.umbenenner.adapter.out.pdfextraction;
import de.gecheckt.pdf.umbenenner.application.port.out.PdfTextExtractionPort; import de.gecheckt.pdf.umbenenner.application.port.out.PdfTextExtractionPort;
import de.gecheckt.pdf.umbenenner.domain.model.PdfExtractionResult; import de.gecheckt.pdf.umbenenner.domain.model.PdfExtractionResult;

View File

@@ -31,4 +31,4 @@
* *
* @since M3-AP-003 * @since M3-AP-003
*/ */
package de.gecheckt.pdf.umbenenner.adapter.outbound.pdfextraction; package de.gecheckt.pdf.umbenenner.adapter.out.pdfextraction;

View File

@@ -1,4 +1,4 @@
package de.gecheckt.pdf.umbenenner.adapter.outbound.sourcedocument; package de.gecheckt.pdf.umbenenner.adapter.out.sourcedocument;
import de.gecheckt.pdf.umbenenner.application.port.out.SourceDocumentAccessException; import de.gecheckt.pdf.umbenenner.application.port.out.SourceDocumentAccessException;
import de.gecheckt.pdf.umbenenner.application.port.out.SourceDocumentCandidatesPort; import de.gecheckt.pdf.umbenenner.application.port.out.SourceDocumentCandidatesPort;

View File

@@ -3,10 +3,10 @@
* <p> * <p>
* M3-AP-002 implementations: * M3-AP-002 implementations:
* <ul> * <ul>
* <li>{@link de.gecheckt.pdf.umbenenner.adapter.outbound.sourcedocument.SourceDocumentCandidatesPortAdapter} * <li>{@link de.gecheckt.pdf.umbenenner.adapter.out.sourcedocument.SourceDocumentCandidatesPortAdapter}
* File-system based discovery of PDF candidates from the source folder</li> * File-system based discovery of PDF candidates from the source folder</li>
* </ul> * </ul>
* *
* @since M3-AP-002 * @since M3-AP-002
*/ */
package de.gecheckt.pdf.umbenenner.adapter.outbound.sourcedocument; package de.gecheckt.pdf.umbenenner.adapter.out.sourcedocument;

View File

@@ -1,9 +1,11 @@
package de.gecheckt.pdf.umbenenner.adapter.outbound.configuration; package de.gecheckt.pdf.umbenenner.adapter.out.configuration;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;
import org.junit.jupiter.api.io.TempDir; import org.junit.jupiter.api.io.TempDir;
import de.gecheckt.pdf.umbenenner.adapter.out.configuration.PropertiesConfigurationPortAdapter;
import java.io.FileWriter; import java.io.FileWriter;
import java.nio.file.Files; import java.nio.file.Files;
import java.nio.file.Path; import java.nio.file.Path;

View File

@@ -1,5 +1,6 @@
package de.gecheckt.pdf.umbenenner.adapter.outbound.lock; package de.gecheckt.pdf.umbenenner.adapter.out.lock;
import de.gecheckt.pdf.umbenenner.adapter.out.lock.FilesystemRunLockPortAdapter;
import de.gecheckt.pdf.umbenenner.application.port.out.RunLockUnavailableException; import de.gecheckt.pdf.umbenenner.application.port.out.RunLockUnavailableException;
import org.junit.jupiter.api.Test; import org.junit.jupiter.api.Test;

View File

@@ -1,5 +1,6 @@
package de.gecheckt.pdf.umbenenner.adapter.outbound.pdfextraction; package de.gecheckt.pdf.umbenenner.adapter.out.pdfextraction;
import de.gecheckt.pdf.umbenenner.adapter.out.pdfextraction.PdfTextExtractionPortAdapter;
import de.gecheckt.pdf.umbenenner.domain.model.PdfExtractionResult; import de.gecheckt.pdf.umbenenner.domain.model.PdfExtractionResult;
import de.gecheckt.pdf.umbenenner.domain.model.PdfExtractionSuccess; import de.gecheckt.pdf.umbenenner.domain.model.PdfExtractionSuccess;
import de.gecheckt.pdf.umbenenner.domain.model.PdfExtractionTechnicalError; import de.gecheckt.pdf.umbenenner.domain.model.PdfExtractionTechnicalError;

View File

@@ -1,5 +1,6 @@
package de.gecheckt.pdf.umbenenner.adapter.outbound.sourcedocument; package de.gecheckt.pdf.umbenenner.adapter.out.sourcedocument;
import de.gecheckt.pdf.umbenenner.adapter.out.sourcedocument.SourceDocumentCandidatesPortAdapter;
import de.gecheckt.pdf.umbenenner.application.port.out.SourceDocumentAccessException; import de.gecheckt.pdf.umbenenner.application.port.out.SourceDocumentAccessException;
import de.gecheckt.pdf.umbenenner.domain.model.SourceDocumentCandidate; import de.gecheckt.pdf.umbenenner.domain.model.SourceDocumentCandidate;
import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.BeforeEach;

View File

@@ -32,7 +32,7 @@ import de.gecheckt.pdf.umbenenner.domain.model.BatchRunContext;
* <li>The context flows through the entire batch cycle for correlation and logging</li> * <li>The context flows through the entire batch cycle for correlation and logging</li>
* </ul> * </ul>
*/ */
public interface RunBatchProcessingUseCase { public interface BatchRunProcessingUseCase {
/** /**
* Executes the batch processing workflow. * Executes the batch processing workflow.

View File

@@ -6,7 +6,7 @@
* <p> * <p>
* Central inbound port: * Central inbound port:
* <ul> * <ul>
* <li>{@link de.gecheckt.pdf.umbenenner.application.port.in.RunBatchProcessingUseCase} * <li>{@link de.gecheckt.pdf.umbenenner.application.port.in.BatchRunProcessingUseCase}
* — The primary use case for executing a complete batch run</li> * — The primary use case for executing a complete batch run</li>
* </ul> * </ul>
* <p> * <p>

View File

@@ -2,7 +2,7 @@ package de.gecheckt.pdf.umbenenner.application.usecase;
import de.gecheckt.pdf.umbenenner.application.config.StartConfiguration; import de.gecheckt.pdf.umbenenner.application.config.StartConfiguration;
import de.gecheckt.pdf.umbenenner.application.port.in.BatchRunOutcome; import de.gecheckt.pdf.umbenenner.application.port.in.BatchRunOutcome;
import de.gecheckt.pdf.umbenenner.application.port.in.RunBatchProcessingUseCase; import de.gecheckt.pdf.umbenenner.application.port.in.BatchRunProcessingUseCase;
import de.gecheckt.pdf.umbenenner.application.port.out.PdfTextExtractionPort; import de.gecheckt.pdf.umbenenner.application.port.out.PdfTextExtractionPort;
import de.gecheckt.pdf.umbenenner.application.port.out.RunLockPort; import de.gecheckt.pdf.umbenenner.application.port.out.RunLockPort;
import de.gecheckt.pdf.umbenenner.application.port.out.RunLockUnavailableException; import de.gecheckt.pdf.umbenenner.application.port.out.RunLockUnavailableException;
@@ -26,7 +26,7 @@ import org.apache.logging.log4j.Logger;
import java.util.List; import java.util.List;
/** /**
* Batch processing implementation of {@link RunBatchProcessingUseCase}. * Batch processing implementation of {@link BatchRunProcessingUseCase}.
* <p> * <p>
* Orchestrates the complete batch processing workflow: * Orchestrates the complete batch processing workflow:
* <ol> * <ol>
@@ -53,9 +53,9 @@ import java.util.List;
* <li>No cross-run retry logic</li> * <li>No cross-run retry logic</li>
* </ul> * </ul>
*/ */
public class BatchRunProcessingUseCase implements RunBatchProcessingUseCase { public class DefaultBatchRunProcessingUseCase implements BatchRunProcessingUseCase {
private static final Logger LOG = LogManager.getLogger(BatchRunProcessingUseCase.class); private static final Logger LOG = LogManager.getLogger(DefaultBatchRunProcessingUseCase.class);
private final StartConfiguration configuration; private final StartConfiguration configuration;
private final RunLockPort runLockPort; private final RunLockPort runLockPort;
@@ -74,7 +74,7 @@ public class BatchRunProcessingUseCase implements RunBatchProcessingUseCase {
* @param pdfTextExtractionPort for extracting text and page count from a single PDF * @param pdfTextExtractionPort for extracting text and page count from a single PDF
* @throws NullPointerException if any parameter is null * @throws NullPointerException if any parameter is null
*/ */
public BatchRunProcessingUseCase( public DefaultBatchRunProcessingUseCase(
StartConfiguration configuration, StartConfiguration configuration,
RunLockPort runLockPort, RunLockPort runLockPort,
SourceDocumentCandidatesPort sourceDocumentCandidatesPort, SourceDocumentCandidatesPort sourceDocumentCandidatesPort,

View File

@@ -5,7 +5,7 @@
* <ul> * <ul>
* <li>{@link de.gecheckt.pdf.umbenenner.application.usecase.NoOpRunBatchProcessingUseCase} * <li>{@link de.gecheckt.pdf.umbenenner.application.usecase.NoOpRunBatchProcessingUseCase}
* — Minimal no-op for technical validation without start protection</li> * — Minimal no-op for technical validation without start protection</li>
* <li>{@link de.gecheckt.pdf.umbenenner.application.usecase.BatchRunProcessingUseCase} * <li>{@link de.gecheckt.pdf.umbenenner.application.usecase.DefaultBatchRunProcessingUseCase}
* — Production implementation with run lock and controlled batch cycle</li> * — Production implementation with run lock and controlled batch cycle</li>
* </ul> * </ul>
* <p> * <p>

View File

@@ -31,7 +31,7 @@ import java.util.Map;
import static org.junit.jupiter.api.Assertions.*; import static org.junit.jupiter.api.Assertions.*;
/** /**
* Tests for {@link BatchRunProcessingUseCase}. * Tests for {@link DefaultBatchRunProcessingUseCase}.
* <p> * <p>
* Covers: * Covers:
* <ul> * <ul>
@@ -57,7 +57,7 @@ class BatchRunProcessingUseCaseTest {
MockRunLockPort lockPort = new MockRunLockPort(); MockRunLockPort lockPort = new MockRunLockPort();
StartConfiguration config = buildConfig(tempDir); StartConfiguration config = buildConfig(tempDir);
BatchRunProcessingUseCase useCase = new BatchRunProcessingUseCase( DefaultBatchRunProcessingUseCase useCase = new DefaultBatchRunProcessingUseCase(
config, lockPort, new EmptyCandidatesPort(), new NoOpExtractionPort()); config, lockPort, new EmptyCandidatesPort(), new NoOpExtractionPort());
BatchRunContext context = new BatchRunContext(new RunId("test-run-1"), Instant.now()); BatchRunContext context = new BatchRunContext(new RunId("test-run-1"), Instant.now());
@@ -73,7 +73,7 @@ class BatchRunProcessingUseCaseTest {
CountingRunLockPort lockPort = new CountingRunLockPort(true); CountingRunLockPort lockPort = new CountingRunLockPort(true);
StartConfiguration config = buildConfig(tempDir); StartConfiguration config = buildConfig(tempDir);
BatchRunProcessingUseCase useCase = new BatchRunProcessingUseCase( DefaultBatchRunProcessingUseCase useCase = new DefaultBatchRunProcessingUseCase(
config, lockPort, new EmptyCandidatesPort(), new NoOpExtractionPort()); config, lockPort, new EmptyCandidatesPort(), new NoOpExtractionPort());
BatchRunContext context = new BatchRunContext(new RunId("test-run-2"), Instant.now()); BatchRunContext context = new BatchRunContext(new RunId("test-run-2"), Instant.now());
@@ -92,7 +92,7 @@ class BatchRunProcessingUseCaseTest {
CountingRunLockPort lockPort = new CountingRunLockPort(true); CountingRunLockPort lockPort = new CountingRunLockPort(true);
StartConfiguration config = buildConfig(tempDir); StartConfiguration config = buildConfig(tempDir);
BatchRunProcessingUseCase useCase = new BatchRunProcessingUseCase( DefaultBatchRunProcessingUseCase useCase = new DefaultBatchRunProcessingUseCase(
config, lockPort, new EmptyCandidatesPort(), new NoOpExtractionPort()); config, lockPort, new EmptyCandidatesPort(), new NoOpExtractionPort());
BatchRunContext context = new BatchRunContext(new RunId("test-run-f1"), Instant.now()); BatchRunContext context = new BatchRunContext(new RunId("test-run-f1"), Instant.now());
@@ -108,7 +108,7 @@ class BatchRunProcessingUseCaseTest {
ErrorAfterAcquireLockPort lockPort = new ErrorAfterAcquireLockPort(); ErrorAfterAcquireLockPort lockPort = new ErrorAfterAcquireLockPort();
StartConfiguration config = buildConfig(tempDir); StartConfiguration config = buildConfig(tempDir);
BatchRunProcessingUseCase useCase = new BatchRunProcessingUseCase( DefaultBatchRunProcessingUseCase useCase = new DefaultBatchRunProcessingUseCase(
config, lockPort, new EmptyCandidatesPort(), new NoOpExtractionPort()); config, lockPort, new EmptyCandidatesPort(), new NoOpExtractionPort());
BatchRunContext context = new BatchRunContext(new RunId("test-run-3"), Instant.now()); BatchRunContext context = new BatchRunContext(new RunId("test-run-3"), Instant.now());
@@ -128,7 +128,7 @@ class BatchRunProcessingUseCaseTest {
MockRunLockPort lockPort = new MockRunLockPort(); MockRunLockPort lockPort = new MockRunLockPort();
StartConfiguration config = buildConfig(tempDir); StartConfiguration config = buildConfig(tempDir);
BatchRunProcessingUseCase useCase = new BatchRunProcessingUseCase( DefaultBatchRunProcessingUseCase useCase = new DefaultBatchRunProcessingUseCase(
config, lockPort, new EmptyCandidatesPort(), new NoOpExtractionPort()); config, lockPort, new EmptyCandidatesPort(), new NoOpExtractionPort());
BatchRunContext context = new BatchRunContext(new RunId("empty"), Instant.now()); BatchRunContext context = new BatchRunContext(new RunId("empty"), Instant.now());
@@ -148,7 +148,7 @@ class BatchRunProcessingUseCaseTest {
FixedCandidatesPort candidatesPort = new FixedCandidatesPort(List.of(candidate)); FixedCandidatesPort candidatesPort = new FixedCandidatesPort(List.of(candidate));
FixedExtractionPort extractionPort = new FixedExtractionPort(success); FixedExtractionPort extractionPort = new FixedExtractionPort(success);
BatchRunProcessingUseCase useCase = new BatchRunProcessingUseCase( DefaultBatchRunProcessingUseCase useCase = new DefaultBatchRunProcessingUseCase(
config, lockPort, candidatesPort, extractionPort); config, lockPort, candidatesPort, extractionPort);
BatchRunContext context = new BatchRunContext(new RunId("happy"), Instant.now()); BatchRunContext context = new BatchRunContext(new RunId("happy"), Instant.now());
@@ -170,7 +170,7 @@ class BatchRunProcessingUseCaseTest {
FixedCandidatesPort candidatesPort = new FixedCandidatesPort(List.of(candidate)); FixedCandidatesPort candidatesPort = new FixedCandidatesPort(List.of(candidate));
FixedExtractionPort extractionPort = new FixedExtractionPort(emptySuccess); FixedExtractionPort extractionPort = new FixedExtractionPort(emptySuccess);
BatchRunProcessingUseCase useCase = new BatchRunProcessingUseCase( DefaultBatchRunProcessingUseCase useCase = new DefaultBatchRunProcessingUseCase(
config, lockPort, candidatesPort, extractionPort); config, lockPort, candidatesPort, extractionPort);
BatchRunContext context = new BatchRunContext(new RunId("no-text"), Instant.now()); BatchRunContext context = new BatchRunContext(new RunId("no-text"), Instant.now());
@@ -191,7 +191,7 @@ class BatchRunProcessingUseCaseTest {
FixedCandidatesPort candidatesPort = new FixedCandidatesPort(List.of(candidate)); FixedCandidatesPort candidatesPort = new FixedCandidatesPort(List.of(candidate));
FixedExtractionPort extractionPort = new FixedExtractionPort(manyPages); FixedExtractionPort extractionPort = new FixedExtractionPort(manyPages);
BatchRunProcessingUseCase useCase = new BatchRunProcessingUseCase( DefaultBatchRunProcessingUseCase useCase = new DefaultBatchRunProcessingUseCase(
config, lockPort, candidatesPort, extractionPort); config, lockPort, candidatesPort, extractionPort);
BatchRunContext context = new BatchRunContext(new RunId("page-limit"), Instant.now()); BatchRunContext context = new BatchRunContext(new RunId("page-limit"), Instant.now());
@@ -211,7 +211,7 @@ class BatchRunProcessingUseCaseTest {
FixedCandidatesPort candidatesPort = new FixedCandidatesPort(List.of(candidate)); FixedCandidatesPort candidatesPort = new FixedCandidatesPort(List.of(candidate));
FixedExtractionPort extractionPort = new FixedExtractionPort(contentError); FixedExtractionPort extractionPort = new FixedExtractionPort(contentError);
BatchRunProcessingUseCase useCase = new BatchRunProcessingUseCase( DefaultBatchRunProcessingUseCase useCase = new DefaultBatchRunProcessingUseCase(
config, lockPort, candidatesPort, extractionPort); config, lockPort, candidatesPort, extractionPort);
BatchRunContext context = new BatchRunContext(new RunId("content-error"), Instant.now()); BatchRunContext context = new BatchRunContext(new RunId("content-error"), Instant.now());
@@ -230,7 +230,7 @@ class BatchRunProcessingUseCaseTest {
FixedCandidatesPort candidatesPort = new FixedCandidatesPort(List.of(candidate)); FixedCandidatesPort candidatesPort = new FixedCandidatesPort(List.of(candidate));
FixedExtractionPort extractionPort = new FixedExtractionPort(technicalError); FixedExtractionPort extractionPort = new FixedExtractionPort(technicalError);
BatchRunProcessingUseCase useCase = new BatchRunProcessingUseCase( DefaultBatchRunProcessingUseCase useCase = new DefaultBatchRunProcessingUseCase(
config, lockPort, candidatesPort, extractionPort); config, lockPort, candidatesPort, extractionPort);
BatchRunContext context = new BatchRunContext(new RunId("tech-error"), Instant.now()); BatchRunContext context = new BatchRunContext(new RunId("tech-error"), Instant.now());
@@ -248,7 +248,7 @@ class BatchRunProcessingUseCaseTest {
throw new SourceDocumentAccessException("Source folder not readable"); throw new SourceDocumentAccessException("Source folder not readable");
}; };
BatchRunProcessingUseCase useCase = new BatchRunProcessingUseCase( DefaultBatchRunProcessingUseCase useCase = new DefaultBatchRunProcessingUseCase(
config, lockPort, failingPort, new NoOpExtractionPort()); config, lockPort, failingPort, new NoOpExtractionPort());
BatchRunContext context = new BatchRunContext(new RunId("access-fail"), Instant.now()); BatchRunContext context = new BatchRunContext(new RunId("access-fail"), Instant.now());
@@ -287,7 +287,7 @@ class BatchRunProcessingUseCaseTest {
.with(technicalErrorCandidate, new PdfExtractionTechnicalError("I/O error", null)) .with(technicalErrorCandidate, new PdfExtractionTechnicalError("I/O error", null))
.with(contentErrorCandidate, new PdfExtractionContentError("PDF is encrypted")); .with(contentErrorCandidate, new PdfExtractionContentError("PDF is encrypted"));
BatchRunProcessingUseCase useCase = new BatchRunProcessingUseCase( DefaultBatchRunProcessingUseCase useCase = new DefaultBatchRunProcessingUseCase(
config, lockPort, candidatesPort, extractionPort); config, lockPort, candidatesPort, extractionPort);
BatchRunContext context = new BatchRunContext(new RunId("mixed"), Instant.now()); BatchRunContext context = new BatchRunContext(new RunId("mixed"), Instant.now());
@@ -313,7 +313,7 @@ class BatchRunProcessingUseCaseTest {
FixedCandidatesPort candidatesPort = new FixedCandidatesPort(candidates); FixedCandidatesPort candidatesPort = new FixedCandidatesPort(candidates);
FixedExtractionPort extractionPort = new FixedExtractionPort(success); FixedExtractionPort extractionPort = new FixedExtractionPort(success);
BatchRunProcessingUseCase useCase = new BatchRunProcessingUseCase( DefaultBatchRunProcessingUseCase useCase = new DefaultBatchRunProcessingUseCase(
config, lockPort, candidatesPort, extractionPort); config, lockPort, candidatesPort, extractionPort);
BatchRunContext context = new BatchRunContext(new RunId("multi"), Instant.now()); BatchRunContext context = new BatchRunContext(new RunId("multi"), Instant.now());

View File

@@ -3,19 +3,19 @@ package de.gecheckt.pdf.umbenenner.bootstrap;
import org.apache.logging.log4j.LogManager; import org.apache.logging.log4j.LogManager;
import org.apache.logging.log4j.Logger; import org.apache.logging.log4j.Logger;
import de.gecheckt.pdf.umbenenner.adapter.inbound.cli.SchedulerBatchCommand; import de.gecheckt.pdf.umbenenner.adapter.in.cli.SchedulerBatchCommand;
import de.gecheckt.pdf.umbenenner.adapter.outbound.configuration.PropertiesConfigurationPortAdapter; import de.gecheckt.pdf.umbenenner.adapter.out.configuration.PropertiesConfigurationPortAdapter;
import de.gecheckt.pdf.umbenenner.adapter.outbound.lock.FilesystemRunLockPortAdapter; import de.gecheckt.pdf.umbenenner.adapter.out.lock.FilesystemRunLockPortAdapter;
import de.gecheckt.pdf.umbenenner.adapter.outbound.pdfextraction.PdfTextExtractionPortAdapter; import de.gecheckt.pdf.umbenenner.adapter.out.pdfextraction.PdfTextExtractionPortAdapter;
import de.gecheckt.pdf.umbenenner.adapter.outbound.sourcedocument.SourceDocumentCandidatesPortAdapter; import de.gecheckt.pdf.umbenenner.adapter.out.sourcedocument.SourceDocumentCandidatesPortAdapter;
import de.gecheckt.pdf.umbenenner.application.config.InvalidStartConfigurationException; import de.gecheckt.pdf.umbenenner.application.config.InvalidStartConfigurationException;
import de.gecheckt.pdf.umbenenner.application.config.StartConfiguration; import de.gecheckt.pdf.umbenenner.application.config.StartConfiguration;
import de.gecheckt.pdf.umbenenner.application.config.StartConfigurationValidator; import de.gecheckt.pdf.umbenenner.application.config.StartConfigurationValidator;
import de.gecheckt.pdf.umbenenner.application.port.in.BatchRunOutcome; import de.gecheckt.pdf.umbenenner.application.port.in.BatchRunOutcome;
import de.gecheckt.pdf.umbenenner.application.port.in.RunBatchProcessingUseCase; import de.gecheckt.pdf.umbenenner.application.port.in.BatchRunProcessingUseCase;
import de.gecheckt.pdf.umbenenner.application.port.out.ConfigurationPort; import de.gecheckt.pdf.umbenenner.application.port.out.ConfigurationPort;
import de.gecheckt.pdf.umbenenner.application.port.out.RunLockPort; import de.gecheckt.pdf.umbenenner.application.port.out.RunLockPort;
import de.gecheckt.pdf.umbenenner.application.usecase.BatchRunProcessingUseCase; import de.gecheckt.pdf.umbenenner.application.usecase.DefaultBatchRunProcessingUseCase;
import de.gecheckt.pdf.umbenenner.domain.model.BatchRunContext; import de.gecheckt.pdf.umbenenner.domain.model.BatchRunContext;
import de.gecheckt.pdf.umbenenner.domain.model.RunId; import de.gecheckt.pdf.umbenenner.domain.model.RunId;
@@ -79,7 +79,7 @@ public class BootstrapRunner {
} }
/** /**
* Functional interface for creating a RunBatchProcessingUseCase. * Functional interface for creating a BatchRunProcessingUseCase.
* <p> * <p>
* Receives the already-loaded and validated {@link StartConfiguration} and run lock port. * Receives the already-loaded and validated {@link StartConfiguration} and run lock port.
* The factory is responsible for creating and wiring any additional outbound ports * The factory is responsible for creating and wiring any additional outbound ports
@@ -87,7 +87,7 @@ public class BootstrapRunner {
*/ */
@FunctionalInterface @FunctionalInterface
public interface UseCaseFactory { public interface UseCaseFactory {
RunBatchProcessingUseCase create(StartConfiguration config, RunLockPort runLockPort); BatchRunProcessingUseCase create(StartConfiguration config, RunLockPort runLockPort);
} }
/** /**
@@ -95,7 +95,7 @@ public class BootstrapRunner {
*/ */
@FunctionalInterface @FunctionalInterface
public interface CommandFactory { public interface CommandFactory {
SchedulerBatchCommand create(RunBatchProcessingUseCase useCase); SchedulerBatchCommand create(BatchRunProcessingUseCase useCase);
} }
/** /**
@@ -113,7 +113,7 @@ public class BootstrapRunner {
this.configPortFactory = PropertiesConfigurationPortAdapter::new; this.configPortFactory = PropertiesConfigurationPortAdapter::new;
this.runLockPortFactory = FilesystemRunLockPortAdapter::new; this.runLockPortFactory = FilesystemRunLockPortAdapter::new;
this.validatorFactory = StartConfigurationValidator::new; this.validatorFactory = StartConfigurationValidator::new;
this.useCaseFactory = (config, lock) -> new BatchRunProcessingUseCase( this.useCaseFactory = (config, lock) -> new DefaultBatchRunProcessingUseCase(
config, config,
lock, lock,
new SourceDocumentCandidatesPortAdapter(config.sourceFolder()), new SourceDocumentCandidatesPortAdapter(config.sourceFolder()),
@@ -127,7 +127,7 @@ public class BootstrapRunner {
* @param configPortFactory factory for creating ConfigurationPort instances * @param configPortFactory factory for creating ConfigurationPort instances
* @param runLockPortFactory factory for creating RunLockPort instances * @param runLockPortFactory factory for creating RunLockPort instances
* @param validatorFactory factory for creating StartConfigurationValidator instances * @param validatorFactory factory for creating StartConfigurationValidator instances
* @param useCaseFactory factory for creating RunBatchProcessingUseCase instances * @param useCaseFactory factory for creating BatchRunProcessingUseCase instances
* @param commandFactory factory for creating SchedulerBatchCommand instances * @param commandFactory factory for creating SchedulerBatchCommand instances
*/ */
public BootstrapRunner(ConfigurationPortFactory configPortFactory, public BootstrapRunner(ConfigurationPortFactory configPortFactory,
@@ -181,7 +181,7 @@ public class BootstrapRunner {
// Step 6: Create the use case with the validated config and run lock (application layer). // Step 6: Create the use case with the validated config and run lock (application layer).
// Config is passed directly; the use case does not re-read the properties file. // Config is passed directly; the use case does not re-read the properties file.
// Adapters (source document port, PDF extraction port) are wired by the factory. // Adapters (source document port, PDF extraction port) are wired by the factory.
RunBatchProcessingUseCase useCase = useCaseFactory.create(config, runLockPort); BatchRunProcessingUseCase useCase = useCaseFactory.create(config, runLockPort);
// Step 7: Create the CLI command adapter with the use case // Step 7: Create the CLI command adapter with the use case
SchedulerBatchCommand command = commandFactory.create(useCase); SchedulerBatchCommand command = commandFactory.create(useCase);

View File

@@ -1,11 +1,11 @@
package de.gecheckt.pdf.umbenenner.bootstrap; package de.gecheckt.pdf.umbenenner.bootstrap;
import de.gecheckt.pdf.umbenenner.adapter.inbound.cli.SchedulerBatchCommand; import de.gecheckt.pdf.umbenenner.adapter.in.cli.SchedulerBatchCommand;
import de.gecheckt.pdf.umbenenner.application.config.InvalidStartConfigurationException; import de.gecheckt.pdf.umbenenner.application.config.InvalidStartConfigurationException;
import de.gecheckt.pdf.umbenenner.application.config.StartConfiguration; import de.gecheckt.pdf.umbenenner.application.config.StartConfiguration;
import de.gecheckt.pdf.umbenenner.application.config.StartConfigurationValidator; import de.gecheckt.pdf.umbenenner.application.config.StartConfigurationValidator;
import de.gecheckt.pdf.umbenenner.application.port.in.BatchRunOutcome; import de.gecheckt.pdf.umbenenner.application.port.in.BatchRunOutcome;
import de.gecheckt.pdf.umbenenner.application.port.in.RunBatchProcessingUseCase; import de.gecheckt.pdf.umbenenner.application.port.in.BatchRunProcessingUseCase;
import de.gecheckt.pdf.umbenenner.application.port.out.ConfigurationPort; import de.gecheckt.pdf.umbenenner.application.port.out.ConfigurationPort;
import de.gecheckt.pdf.umbenenner.application.port.out.RunLockPort; import de.gecheckt.pdf.umbenenner.application.port.out.RunLockPort;
import de.gecheckt.pdf.umbenenner.domain.model.BatchRunContext; import de.gecheckt.pdf.umbenenner.domain.model.BatchRunContext;
@@ -115,7 +115,7 @@ class BootstrapRunnerTest {
@Test @Test
void run_returnsOneWhenBatchFails() throws Exception { void run_returnsOneWhenBatchFails() throws Exception {
ConfigurationPort mockConfigPort = new MockConfigurationPort(tempDir, true); ConfigurationPort mockConfigPort = new MockConfigurationPort(tempDir, true);
RunBatchProcessingUseCase failingUseCase = (context) -> BatchRunOutcome.FAILURE; BatchRunProcessingUseCase failingUseCase = (context) -> BatchRunOutcome.FAILURE;
BootstrapRunner runner = new BootstrapRunner( BootstrapRunner runner = new BootstrapRunner(
() -> mockConfigPort, () -> mockConfigPort,
@@ -134,7 +134,7 @@ class BootstrapRunnerTest {
void run_returnsOneWhenLockUnavailable() throws Exception { void run_returnsOneWhenLockUnavailable() throws Exception {
// AP-007: controlled early termination because another instance is already running // AP-007: controlled early termination because another instance is already running
ConfigurationPort mockConfigPort = new MockConfigurationPort(tempDir, true); ConfigurationPort mockConfigPort = new MockConfigurationPort(tempDir, true);
RunBatchProcessingUseCase lockUnavailableUseCase = (context) -> BatchRunOutcome.LOCK_UNAVAILABLE; BatchRunProcessingUseCase lockUnavailableUseCase = (context) -> BatchRunOutcome.LOCK_UNAVAILABLE;
BootstrapRunner runner = new BootstrapRunner( BootstrapRunner runner = new BootstrapRunner(
() -> mockConfigPort, () -> mockConfigPort,
@@ -213,7 +213,7 @@ class BootstrapRunnerTest {
ConfigurationPort mockConfigPort = new MockConfigurationPort(tempDir, true); ConfigurationPort mockConfigPort = new MockConfigurationPort(tempDir, true);
// BatchRunOutcome.SUCCESS is what the M3 use case returns when the run completed, // BatchRunOutcome.SUCCESS is what the M3 use case returns when the run completed,
// regardless of how many individual documents had content or technical errors. // regardless of how many individual documents had content or technical errors.
RunBatchProcessingUseCase useCaseWithDocumentFailures = (context) -> BatchRunOutcome.SUCCESS; BatchRunProcessingUseCase useCaseWithDocumentFailures = (context) -> BatchRunOutcome.SUCCESS;
BootstrapRunner runner = new BootstrapRunner( BootstrapRunner runner = new BootstrapRunner(
() -> mockConfigPort, () -> mockConfigPort,
@@ -286,7 +286,7 @@ class BootstrapRunnerTest {
} }
} }
private static class MockRunBatchProcessingUseCase implements RunBatchProcessingUseCase { private static class MockRunBatchProcessingUseCase implements BatchRunProcessingUseCase {
private final boolean shouldSucceed; private final boolean shouldSucceed;
MockRunBatchProcessingUseCase(boolean shouldSucceed) { MockRunBatchProcessingUseCase(boolean shouldSucceed) {