Optimierung: Anwendungskonfiguration auf Minimalbedarf zugeschnitten
This commit is contained in:
@@ -20,6 +20,7 @@ import de.gecheckt.pdf.umbenenner.adapter.out.sqlite.SqliteDocumentRecordReposit
|
||||
import de.gecheckt.pdf.umbenenner.adapter.out.sqlite.SqliteProcessingAttemptRepositoryAdapter;
|
||||
import de.gecheckt.pdf.umbenenner.adapter.out.sqlite.SqliteSchemaInitializationAdapter;
|
||||
import de.gecheckt.pdf.umbenenner.adapter.out.sqlite.SqliteUnitOfWorkAdapter;
|
||||
import de.gecheckt.pdf.umbenenner.application.config.RuntimeConfiguration;
|
||||
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.BatchRunProcessingUseCase;
|
||||
@@ -122,14 +123,14 @@ public class BootstrapRunner {
|
||||
/**
|
||||
* Functional interface for creating a BatchRunProcessingUseCase.
|
||||
* <p>
|
||||
* Receives the already-loaded and validated {@link StartConfiguration} and run lock port.
|
||||
* The factory is responsible for creating and wiring any additional outbound ports
|
||||
* Receives the full startup configuration (for infrastructure adapter wiring) and run lock port.
|
||||
* The factory extracts the runtime configuration and wires all outbound ports
|
||||
* required by the use case (e.g., source document port, PDF extraction port,
|
||||
* persistence and fingerprint ports).
|
||||
*/
|
||||
@FunctionalInterface
|
||||
public interface UseCaseFactory {
|
||||
BatchRunProcessingUseCase create(StartConfiguration config, RunLockPort runLockPort);
|
||||
BatchRunProcessingUseCase create(StartConfiguration startConfig, RunLockPort runLockPort);
|
||||
}
|
||||
|
||||
/**
|
||||
@@ -164,8 +165,11 @@ public class BootstrapRunner {
|
||||
this.runLockPortFactory = FilesystemRunLockPortAdapter::new;
|
||||
this.validatorFactory = StartConfigurationValidator::new;
|
||||
this.schemaInitPortFactory = SqliteSchemaInitializationAdapter::new;
|
||||
this.useCaseFactory = (config, lock) -> {
|
||||
String jdbcUrl = buildJdbcUrl(config);
|
||||
this.useCaseFactory = (startConfig, lock) -> {
|
||||
// Extract runtime configuration from startup configuration
|
||||
RuntimeConfiguration runtimeConfig = new RuntimeConfiguration(startConfig.maxPages());
|
||||
|
||||
String jdbcUrl = buildJdbcUrl(startConfig);
|
||||
FingerprintPort fingerprintPort = new Sha256FingerprintAdapter();
|
||||
DocumentRecordRepository documentRecordRepository =
|
||||
new SqliteDocumentRecordRepositoryAdapter(jdbcUrl);
|
||||
@@ -178,9 +182,9 @@ public class BootstrapRunner {
|
||||
new DocumentProcessingCoordinator(documentRecordRepository, processingAttemptRepository, unitOfWorkPort, coordinatorLogger);
|
||||
ProcessingLogger useCaseLogger = new Log4jProcessingLogger(DefaultBatchRunProcessingUseCase.class);
|
||||
return new DefaultBatchRunProcessingUseCase(
|
||||
config,
|
||||
runtimeConfig,
|
||||
lock,
|
||||
new SourceDocumentCandidatesPortAdapter(config.sourceFolder()),
|
||||
new SourceDocumentCandidatesPortAdapter(startConfig.sourceFolder()),
|
||||
new PdfTextExtractionPortAdapter(),
|
||||
fingerprintPort,
|
||||
documentProcessingCoordinator,
|
||||
|
||||
Reference in New Issue
Block a user