RED-9255: give reanalysis endpoint a request model

This commit is contained in:
Kilian Schuettler 2024-06-17 16:21:56 +02:00
parent 856f09583a
commit 27d2208a72
4 changed files with 20 additions and 6 deletions

View File

@ -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);
}

View File

@ -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)

View File

@ -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:

View File

@ -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()));
}
}