diff --git a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/SupportController.java b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/SupportController.java index 80bbdc251..bf6dd6756 100644 --- a/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/SupportController.java +++ b/persistence-service-v1/persistence-service-external-api-impl-v1/src/main/java/com/iqser/red/persistence/service/v1/external/api/impl/controller/SupportController.java @@ -23,6 +23,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.FileSta import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusMapper; import com.iqser.red.service.persistence.management.v1.processor.service.ReanalysisService; import com.iqser.red.service.persistence.management.v1.processor.dataexchange.service.FileExchangeExportService; +import com.iqser.red.service.persistence.service.v1.api.external.model.ReAnalysisSettings; import com.iqser.red.service.persistence.service.v1.api.external.resource.SupportResource; import com.iqser.red.service.persistence.service.v1.api.shared.model.DownloadResponse; import com.iqser.red.service.persistence.service.v1.api.shared.model.FileStatus; @@ -47,9 +48,10 @@ public class SupportController implements SupportResource { @Override - public void reanalyzeFiles(String dossierTemplateId, boolean repeatStructureAnalysis) { + public void reanalyzeFiles(String dossierTemplateId, ReAnalysisSettings reAnalysisSettings) { - reanalysisService.reanalyzeTemplate(dossierTemplateId, repeatStructureAnalysis); + log.info("Scheduling reanalysis for all files in Dossier Tempalte {} with settings {}", dossierTemplateId, reAnalysisSettings); + reanalysisService.reanalyzeTemplate(dossierTemplateId, reAnalysisSettings); } diff --git a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/SupportResource.java b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/SupportResource.java index 1a8b4f61f..0a27536bb 100644 --- a/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/SupportResource.java +++ b/persistence-service-v1/persistence-service-external-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/external/resource/SupportResource.java @@ -13,6 +13,7 @@ import org.springframework.web.bind.annotation.ResponseBody; import org.springframework.web.bind.annotation.ResponseStatus; import org.springframework.web.multipart.MultipartFile; +import com.iqser.red.service.persistence.service.v1.api.external.model.ReAnalysisSettings; import com.iqser.red.service.persistence.service.v1.api.shared.model.DownloadResponse; import com.iqser.red.service.persistence.service.v1.api.shared.model.FileStatus; import com.iqser.red.service.persistence.service.v1.api.shared.model.FileStatusFilter; @@ -54,7 +55,7 @@ public interface SupportResource { @Operation(summary = "Reanalyze all files in dossier template", description = "None") @ApiResponses(value = {@ApiResponse(responseCode = "204", description = "OK"), @ApiResponse(responseCode = "403", description = "Forbidden")}) void reanalyzeFiles(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, - @RequestParam(value = FULL_REANALYSIS_PARAM, required = false, defaultValue = FALSE) boolean repeatStructureAnalysis); + @RequestBody ReAnalysisSettings reAnalysisSettings); @PostMapping(value = ERROR_REANALYSIS_REST_PATH) diff --git a/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/documine.yaml b/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/documine.yaml index ab41b3627..765dd7e1f 100644 --- a/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/documine.yaml +++ b/persistence-service-v1/persistence-service-external-api-v2/src/main/resources/api/documine.yaml @@ -594,7 +594,7 @@ paths: - Component Definitions summary: Create new component definitions description: | - Create new component definitions for a given dossier template. The component will have a technical name which is automatically converted to snake case + Create new component definitions for a given dossier template. The component will have a technical name which is automatically converted to snake case that can't be updated after the creation. The rank is used to determine the order in which the components are displayed. The component's rank will automatically be appended at the end based on the current number of components of this dossier template. parameters: diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReanalysisService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReanalysisService.java index 4e956f861..2edbef718 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReanalysisService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ReanalysisService.java @@ -9,6 +9,7 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.BadRe import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierPersistenceService; +import com.iqser.red.service.persistence.service.v1.api.external.model.ReAnalysisSettings; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.DeleteImportedRedactionsRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileModel; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType; @@ -265,13 +266,23 @@ public class ReanalysisService { } - public void reanalyzeTemplate(String dossierTemplateId, boolean repeatStructureAnalysis) { + public void reanalyzeTemplate(String dossierTemplateId, ReAnalysisSettings reAnalysisSettings) { fileStatusService.getDossierTemplateStatus(dossierTemplateId) .stream() .filter(file -> !file.isSoftOrHardDeleted()) - .forEach(file -> fileStatusService.setStatusFullReprocess(file.getDossierId(), file.getId(), false, repeatStructureAnalysis)); + .filter(file -> isInList(file, reAnalysisSettings)) + .filter(file -> file.getProcessingStatus().equals(ProcessingStatus.ERROR) || !reAnalysisSettings.onlyErrorFiles()) + .peek(file -> log.info("Reanalyzing file {}", file.getId())) + .forEach(file -> fileStatusService.setStatusFullReprocess(file.getDossierId(), file.getId(), false, reAnalysisSettings.repeatStructureAnalysis())); } + + private boolean isInList(FileModel file, ReAnalysisSettings reAnalysisSettings) { + + return (reAnalysisSettings.fileIds().isEmpty() || reAnalysisSettings.fileIds().contains(file.getId())) // + && (reAnalysisSettings.dossierIds().isEmpty() || reAnalysisSettings.dossierIds().contains(file.getDossierId())); + } + }