Refactoring: Paketnamen und Klassennamen
This commit is contained in:
@@ -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
|
||||||
|
|||||||
@@ -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;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -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;
|
||||||
@@ -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
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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;
|
||||||
@@ -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.
|
||||||
@@ -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>
|
||||||
|
|||||||
@@ -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,
|
||||||
@@ -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>
|
||||||
|
|||||||
@@ -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());
|
||||||
|
|
||||||
|
|||||||
@@ -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);
|
||||||
|
|||||||
@@ -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) {
|
||||||
|
|||||||
Reference in New Issue
Block a user