reanalyse cleanup, imported flag for redaction-log

This commit is contained in:
Timo Bejan 2022-02-11 12:57:15 +02:00
parent b77e0fdcdf
commit 01569b6a0d
4 changed files with 34 additions and 32 deletions

View File

@ -21,30 +21,25 @@ public interface ReanalysisResource {
@PostMapping(value = REANALYZE_PATH + DOSSIER_ID_PATH_PARAM)
void reanalyzeDossier(@PathVariable(DOSSIER_ID_PARAM) String dossierId,
@RequestParam(value = "triggeredByUser", required = false, defaultValue = FALSE) boolean triggeredByUser,
@RequestParam(value = "force", required = false, defaultValue = FALSE) boolean force);
@PostMapping(value = REANALYZE_PATH + DOSSIER_ID_PATH_PARAM + BULK_REST_PATH)
void reanalyzeFiles(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @RequestBody Set<String> fileIds,
@RequestParam(value = "triggeredByUser", required = false, defaultValue = FALSE) boolean triggeredByUser,
@RequestParam(value = "force", required = false, defaultValue = FALSE) boolean force);
@PostMapping(value = OCR_REANALYZE_PATH + DOSSIER_ID_PATH_PARAM)
void ocrDossier(@PathVariable(DOSSIER_ID_PARAM) String dossierId,
@RequestParam(value = "triggeredByUser", required = false, defaultValue = FALSE) boolean triggeredByUser);
void ocrDossier(@PathVariable(DOSSIER_ID_PARAM) String dossierId);
@PostMapping(value = OCR_REANALYZE_PATH + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_PARAM)
void ocrFile(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID_PARAM) String fileId,
@RequestParam(value = "triggeredByUser", required = false, defaultValue = FALSE) boolean triggeredByUser,
@RequestParam(value = "force", required = false, defaultValue = FALSE) boolean force);
@PostMapping(value = OCR_REANALYZE_PATH + DOSSIER_ID_PATH_PARAM + BULK_REST_PATH)
void ocrFiles(@PathVariable(DOSSIER_ID_PARAM) String dossierId,
@RequestParam(value = "triggeredByUser", required = false, defaultValue = FALSE) boolean triggeredByUser,
@RequestBody Set<String> fileIds);

View File

@ -41,35 +41,33 @@ public class ReanalysisController implements ReanalysisResource {
@Override
public void reanalyzeDossier(@PathVariable(DOSSIER_ID_PARAM) String dossierId,
@RequestParam(value = "triggeredByUser", required = false, defaultValue = FALSE) boolean triggeredByUser,
@RequestParam(value = "force", required = false, defaultValue = FALSE) boolean force) {
var relevantFiles = getRelevantFiles(dossierId, triggeredByUser);
var relevantFiles = getAllFilesForDossier(dossierId, true);
reanalyseFiles(dossierId, force, relevantFiles);
}
@Override
public void reanalyzeFiles(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @RequestBody Set<String> fileIds,
@RequestParam(value = "triggeredByUser", required = false, defaultValue = FALSE) boolean triggeredByUser,
@RequestParam(value = "force", required = false, defaultValue = FALSE) boolean force) {
var relevantFiles = getRelevantFiles(dossierId, fileIds, triggeredByUser);
var relevantFiles = getRelevantFiles(dossierId, fileIds);
reanalyseFiles(dossierId, force, relevantFiles);
}
public void ocrDossier(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @RequestParam(value = "triggeredByUser", required = false, defaultValue = FALSE) boolean triggeredByUser) {
public void ocrDossier(@PathVariable(DOSSIER_ID_PARAM) String dossierId) {
var relevantFiles = getRelevantFiles(dossierId, triggeredByUser);
var relevantFiles = getAllFilesForDossier(dossierId, true);
relevantFiles.stream().filter(fileStatus -> fileStatus.getLastOCRTime() == null).forEach(fileStatus -> fileStatusService.setStatusOcrProcessing(dossierId, fileStatus.getId()));
}
public void ocrFiles(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @RequestParam(value = "triggeredByUser", required = false, defaultValue = FALSE) boolean triggeredByUser, @RequestBody Set<String> fileIds) {
public void ocrFiles(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @RequestBody Set<String> fileIds) {
var relevantFiles = getRelevantFiles(dossierId, fileIds, triggeredByUser);
var relevantFiles = getRelevantFiles(dossierId, fileIds);
relevantFiles.stream().filter(fileStatus -> fileStatus.getLastOCRTime() == null).forEach(fileStatus -> fileStatusService.setStatusOcrProcessing(dossierId, fileStatus.getId()));
}
@ -81,7 +79,6 @@ public class ReanalysisController implements ReanalysisResource {
public void ocrFile(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID_PARAM) String fileId,
@RequestParam(value = "triggeredByUser", required = false, defaultValue = FALSE) boolean triggeredByUser,
@RequestParam(value = "force", required = false, defaultValue = FALSE) boolean force) {
dossierPersistenceService.getAndValidateDossier(dossierId);
@ -96,36 +93,46 @@ public class ReanalysisController implements ReanalysisResource {
if (dossierFile.getLastOCRTime() != null) {
throw new ConflictException("File already has been OCR processed");
}
ocrFiles(dossierId,triggeredByUser, Sets.newHashSet(fileId));
ocrFiles(dossierId, Sets.newHashSet(fileId));
}
}
private List<FileEntity> getRelevantFiles(String dossierId, boolean triggeredByUser) {
private List<FileEntity> getAllFilesForDossier(String dossierId, boolean filterOnlyValidFiles) {
var dossier = dossierPersistenceService.getAndValidateDossier(dossierId);
return fileStatusService.getDossierStatus(dossier.getId())
.stream()
.filter(fileStatus -> !fileStatus.getProcessingStatus().equals(ProcessingStatus.DELETED))
.filter(fileStatus -> !fileStatus.getWorkflowStatus().equals(WorkflowStatus.APPROVED))
.filter(fileStatus -> triggeredByUser || !fileStatus.isExcludedFromAutomaticAnalysis())
.collect(Collectors.toList());
if (filterOnlyValidFiles) {
return fileStatusService.getDossierStatus(dossier.getId())
.stream()
.filter(fileStatus -> !fileStatus.getProcessingStatus().equals(ProcessingStatus.DELETED))
.filter(fileStatus -> !fileStatus.getWorkflowStatus().equals(WorkflowStatus.APPROVED))
.collect(Collectors.toList());
} else {
return fileStatusService.getDossierStatus(dossier.getId());
}
}
private List<FileEntity> getRelevantFiles(String dossierId, Collection<String> fileIds, boolean triggeredByUser) {
private List<FileEntity> getRelevantFiles(String dossierId, Collection<String> fileIds) {
var relevantDossierFiles = getRelevantFiles(dossierId, triggeredByUser);
var dossierFiles = getAllFilesForDossier(dossierId, false);
var relevantFiles = new ArrayList<FileEntity>();
for (var fileId : fileIds) {
var dossierFileOptional = relevantDossierFiles.stream().filter(f -> f.getId().equals(fileId)).findAny();
var dossierFileOptional = dossierFiles.stream().filter(f -> f.getId().equals(fileId)).findAny();
if (dossierFileOptional.isEmpty()) {
throw new BadRequestException("Cannot reanalyse file from different dossier!");
}
var dossierFile = dossierFileOptional.get();
if (dossierFile.isSoftOrHardDeleted()) {
throw new BadRequestException("Cannot reanalyse deleted file!");
}
if (dossierFile.getWorkflowStatus() == WorkflowStatus.APPROVED) {
throw new BadRequestException("Cannot reanalyse approved file!");
}
relevantFiles.add(dossierFile);

View File

@ -42,28 +42,28 @@ public class ReanalysisTest extends AbstractPersistenceServerServiceTest {
var file = fileTesterAndProvider.testAndProvideFile(dossier);
reanalysisClient.ocrDossier(dossier.getId(),true);
reanalysisClient.ocrDossier(dossier.getId());
var loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.OCR_PROCESSING);
resetProcessingStatus(file);
reanalysisClient.ocrFile(dossier.getId(), file.getId(),true, true);
reanalysisClient.ocrFile(dossier.getId(), file.getId(),true);
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.OCR_PROCESSING);
resetProcessingStatus(file);
reanalysisClient.ocrFiles(dossier.getId(),true, Set.of(file.getId()));
reanalysisClient.ocrFiles(dossier.getId(), Set.of(file.getId()));
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.OCR_PROCESSING);
resetProcessingStatus(file);
reanalysisClient.reanalyzeFiles(dossier.getId(), Set.of(file.getId()), true,true);
reanalysisClient.reanalyzeFiles(dossier.getId(), Set.of(file.getId()), true);
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.PROCESSING);
resetProcessingStatus(file);
reanalysisClient.reanalyzeDossier(dossier.getId(), true,true);
reanalysisClient.reanalyzeDossier(dossier.getId(), true);
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.PROCESSING);
resetProcessingStatus(file);

View File

@ -25,7 +25,7 @@
</modules>
<properties>
<redaction-service.version>3.74.0</redaction-service.version>
<redaction-service.version>3.76.0</redaction-service.version>
<search-service.version>2.18.0</search-service.version>
<pdftron-redaction-service.version>3.31.0</pdftron-redaction-service.version>
<redaction-report-service.version>3.19.0</redaction-report-service.version>