RED-9254: Support Controller (Part 1)
This commit is contained in:
parent
398ec390b7
commit
f9090cfa3f
@ -15,7 +15,6 @@ import org.springframework.web.bind.annotation.RequestBody;
|
|||||||
import org.springframework.web.bind.annotation.RequestParam;
|
import org.springframework.web.bind.annotation.RequestParam;
|
||||||
import org.springframework.web.bind.annotation.RestController;
|
import org.springframework.web.bind.annotation.RestController;
|
||||||
|
|
||||||
import com.google.common.collect.Sets;
|
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusManagementService;
|
import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusManagementService;
|
||||||
import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusMapper;
|
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.service.ReanalysisService;
|
||||||
@ -38,39 +37,21 @@ public class SupportController implements SupportResource {
|
|||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void reanalyzeAllErrorFiles(@RequestParam(value = FULL_ANALYSIS_PARAM, required = false, defaultValue = FALSE) boolean fullAnalysis) {
|
public void reanalyzeAllErrorFiles(@RequestParam(value = FULL_REANALYSIS_PARAM, required = false, defaultValue = FALSE) boolean fullReanalysis) {
|
||||||
|
|
||||||
reanalysisService.reanalyzeAllErrorFiles(fullAnalysis);
|
reanalysisService.reanalyzeAllErrorFiles(fullReanalysis);
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void reanalyzeErrorFilesForDossier(@PathVariable(DOSSIER_ID) String dossierId,
|
|
||||||
@RequestParam(value = FULL_ANALYSIS_PARAM, required = false, defaultValue = FALSE) boolean fullAnalysis) {
|
|
||||||
|
|
||||||
reanalysisService.reanalyzeErrorFilesInDossier(dossierId, fullAnalysis);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void reanalyzeErrorFilesBulkForDossier(@PathVariable(DOSSIER_ID) String dossierId,
|
public void reanalyzeErrorFilesBulkForDossier(@PathVariable(DOSSIER_ID) String dossierId,
|
||||||
@RequestBody List<String> fileIds,
|
@RequestBody List<String> fileIds,
|
||||||
@RequestParam(value = FULL_ANALYSIS_PARAM, required = false, defaultValue = FALSE) boolean fullAnalysis) {
|
@RequestParam(value = FULL_REANALYSIS_PARAM, required = false, defaultValue = FALSE) boolean fullReanalysis) {
|
||||||
|
|
||||||
reanalysisService.reanalyzeGivenErrorFilesInDossier(dossierId, new HashSet<>(fileIds), fullAnalysis);
|
reanalysisService.reanalyzeGivenErrorFilesInDossier(dossierId, new HashSet<>(fileIds), fullReanalysis);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@Override
|
|
||||||
public void reanalyzeErrorFile(@PathVariable(DOSSIER_ID) String dossierId,
|
|
||||||
@PathVariable(FILE_ID) String fileId,
|
|
||||||
@RequestParam(value = FULL_ANALYSIS_PARAM, required = false, defaultValue = FALSE) boolean fullAnalysis) {
|
|
||||||
|
|
||||||
reanalysisService.reanalyzeGivenErrorFilesInDossier(dossierId, Sets.newHashSet(fileId), fullAnalysis);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private static Predicate<FileModel> matchesStatusFilters(FileStatusFilter fileStatusFilter) {
|
private static Predicate<FileModel> matchesStatusFilters(FileStatusFilter fileStatusFilter) {
|
||||||
|
|
||||||
FileStatusFilter filter = Optional.ofNullable(fileStatusFilter).orElseGet(FileStatusFilter::new);
|
FileStatusFilter filter = Optional.ofNullable(fileStatusFilter).orElseGet(FileStatusFilter::new);
|
||||||
@ -85,7 +66,9 @@ public class SupportController implements SupportResource {
|
|||||||
|
|
||||||
return fileStatus ->
|
return fileStatus ->
|
||||||
(filter.getProcessingStatusList().isEmpty() || filter.getProcessingStatusList().contains(fileStatus.getProcessingStatus())) &&
|
(filter.getProcessingStatusList().isEmpty() || filter.getProcessingStatusList().contains(fileStatus.getProcessingStatus())) &&
|
||||||
(filter.getWorkflowStatusList().isEmpty() || filter.getWorkflowStatusList().contains(fileStatus.getWorkflowStatus()));
|
(filter.getWorkflowStatusList().isEmpty() || filter.getWorkflowStatusList().contains(fileStatus.getWorkflowStatus())) &&
|
||||||
|
(filter.isIncludeSoftDeletedFiles() || fileStatus.getDeleted() == null) &&
|
||||||
|
(filter.isIncludeHardDeletedFiles() || fileStatus.getHardDeletedTime() == null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -104,7 +87,7 @@ public class SupportController implements SupportResource {
|
|||||||
@Override
|
@Override
|
||||||
public List<FileStatus> getFileStatusForDossierTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, @RequestBody FileStatusFilter fileStatusFilter) {
|
public List<FileStatus> getFileStatusForDossierTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, @RequestBody FileStatusFilter fileStatusFilter) {
|
||||||
|
|
||||||
return fileStatusManagementService.getDossierTemplateStatus(dossierTemplateId)
|
return fileStatusManagementService.getAllDossierTemplateStatus(dossierTemplateId)
|
||||||
.stream()
|
.stream()
|
||||||
.filter(matchesStatusFilters(fileStatusFilter))
|
.filter(matchesStatusFilters(fileStatusFilter))
|
||||||
.map(FileStatusMapper::toFileStatus)
|
.map(FileStatusMapper::toFileStatus)
|
||||||
@ -115,7 +98,7 @@ public class SupportController implements SupportResource {
|
|||||||
@Override
|
@Override
|
||||||
public List<FileStatus> getFileStatusForDossier(@PathVariable(DOSSIER_ID) String dossierId, @RequestBody FileStatusFilter fileStatusFilter) {
|
public List<FileStatus> getFileStatusForDossier(@PathVariable(DOSSIER_ID) String dossierId, @RequestBody FileStatusFilter fileStatusFilter) {
|
||||||
|
|
||||||
return fileStatusManagementService.getDossierStatus(dossierId)
|
return fileStatusManagementService.getAllDossierStatus(dossierId)
|
||||||
.stream()
|
.stream()
|
||||||
.filter(matchesStatusFilters(fileStatusFilter))
|
.filter(matchesStatusFilters(fileStatusFilter))
|
||||||
.map(FileStatusMapper::toFileStatus)
|
.map(FileStatusMapper::toFileStatus)
|
||||||
|
|||||||
@ -4,7 +4,6 @@ import java.util.List;
|
|||||||
|
|
||||||
import org.springframework.http.HttpStatus;
|
import org.springframework.http.HttpStatus;
|
||||||
import org.springframework.http.MediaType;
|
import org.springframework.http.MediaType;
|
||||||
import org.springframework.web.bind.annotation.GetMapping;
|
|
||||||
import org.springframework.web.bind.annotation.PathVariable;
|
import org.springframework.web.bind.annotation.PathVariable;
|
||||||
import org.springframework.web.bind.annotation.PostMapping;
|
import org.springframework.web.bind.annotation.PostMapping;
|
||||||
import org.springframework.web.bind.annotation.RequestBody;
|
import org.springframework.web.bind.annotation.RequestBody;
|
||||||
@ -34,51 +33,34 @@ public interface SupportResource {
|
|||||||
|
|
||||||
String DOSSIER_ID_PATH_VARIABLE = "/{" + DOSSIER_ID + "}";
|
String DOSSIER_ID_PATH_VARIABLE = "/{" + DOSSIER_ID + "}";
|
||||||
String FILE_ID_PATH_VARIABLE = "/{" + FILE_ID + "}";
|
String FILE_ID_PATH_VARIABLE = "/{" + FILE_ID + "}";
|
||||||
String DOSSIER_TEMPLATE_DOSSIER_TEMPLATE_ID_PATH_VARIABLE = "/dossierTemplate/{" + DOSSIER_TEMPLATE_ID + "}";
|
String DOSSIER_TEMPLATE_DOSSIER_TEMPLATE_ID_PATH_VARIABLE = "/dossierTemplateId/{" + DOSSIER_TEMPLATE_ID + "}";
|
||||||
String DOSSIER_DOSSIER_ID_PATH_VARIABLE = "/dossier/{" + DOSSIER_ID + "}";
|
String DOSSIER_DOSSIER_ID_PATH_VARIABLE = "/dossierId/{" + DOSSIER_ID + "}";
|
||||||
|
|
||||||
String FALSE = "false";
|
String FALSE = "false";
|
||||||
|
|
||||||
String FULL_ANALYSIS_PARAM = "fullAnalysis";
|
String FULL_REANALYSIS_PARAM = "fullReanalysis";
|
||||||
|
|
||||||
|
|
||||||
@PostMapping(value = ERROR_REANALYSIS_REST_PATH)
|
@PostMapping(value = ERROR_REANALYSIS_REST_PATH)
|
||||||
@Operation(summary = "Reanalyze all files in error state", description = "None")
|
@Operation(summary = "Reanalyze all files in error state.", description = "None")
|
||||||
@ApiResponses(value = {@ApiResponse(responseCode = "204", description = "OK"), @ApiResponse(responseCode = "403", description = "Forbidden")})
|
@ApiResponses(value = {@ApiResponse(responseCode = "204", description = "OK"), @ApiResponse(responseCode = "403", description = "Forbidden")})
|
||||||
void reanalyzeAllErrorFiles(@RequestParam(value = FULL_ANALYSIS_PARAM, required = false, defaultValue = FALSE) boolean fullAnalysis);
|
void reanalyzeAllErrorFiles(@RequestParam(value = FULL_REANALYSIS_PARAM, required = false, defaultValue = FALSE) boolean fullReanalysis);
|
||||||
|
|
||||||
|
|
||||||
@PostMapping(value = ERROR_REANALYSIS_REST_PATH + DOSSIER_ID_PATH_VARIABLE)
|
|
||||||
@Operation(summary = "Reanalyze all files in error state in a dossier", description = "None")
|
|
||||||
@ApiResponses(value = {@ApiResponse(responseCode = "204", description = "OK"), @ApiResponse(responseCode = "404", description = "Not found"), @ApiResponse(responseCode = "403", description = "Forbidden")})
|
|
||||||
void reanalyzeErrorFilesForDossier(@PathVariable(DOSSIER_ID) String dossierId,
|
|
||||||
@RequestParam(value = FULL_ANALYSIS_PARAM, required = false, defaultValue = FALSE) boolean fullAnalysis);
|
|
||||||
|
|
||||||
|
|
||||||
@PostMapping(value = ERROR_REANALYSIS_REST_PATH
|
@PostMapping(value = ERROR_REANALYSIS_REST_PATH
|
||||||
+ DOSSIER_ID_PATH_VARIABLE
|
+ DOSSIER_ID_PATH_VARIABLE
|
||||||
+ BULK_REST_PATH)
|
+ BULK_REST_PATH)
|
||||||
@Operation(summary = "Reanalyze multiple files in error state for a dossier", description = "None")
|
@Operation(summary = "Reanalyze multiple files in error state for a dossier.", description = "None")
|
||||||
@ApiResponses(value = {@ApiResponse(responseCode = "204", description = "OK"), @ApiResponse(responseCode = "404", description = "Not found"), @ApiResponse(responseCode = "403", description = "Forbidden")})
|
@ApiResponses(value = {@ApiResponse(responseCode = "204", description = "OK"), @ApiResponse(responseCode = "404", description = "Not found"), @ApiResponse(responseCode = "403", description = "Forbidden")})
|
||||||
void reanalyzeErrorFilesBulkForDossier(@PathVariable(DOSSIER_ID) String dossierId,
|
void reanalyzeErrorFilesBulkForDossier(@PathVariable(DOSSIER_ID) String dossierId,
|
||||||
@RequestBody List<String> fileIds,
|
@RequestBody List<String> fileIds,
|
||||||
@RequestParam(value = FULL_ANALYSIS_PARAM, required = false, defaultValue = FALSE) boolean fullAnalysis);
|
@RequestParam(value = FULL_REANALYSIS_PARAM, required = false, defaultValue = FALSE) boolean fullReanalysis);
|
||||||
|
|
||||||
|
|
||||||
@PostMapping(value = ERROR_REANALYSIS_REST_PATH
|
|
||||||
+ DOSSIER_ID_PATH_VARIABLE
|
|
||||||
+ FILE_ID_PATH_VARIABLE)
|
|
||||||
@Operation(summary = "Reanalyze a file in error state", description = "None")
|
|
||||||
@ApiResponses(value = {@ApiResponse(responseCode = "204", description = "OK"), @ApiResponse(responseCode = "404", description = "Not found"), @ApiResponse(responseCode = "403", description = "Forbidden")})
|
|
||||||
void reanalyzeErrorFile(@PathVariable(DOSSIER_ID) String dossierId,
|
|
||||||
@PathVariable(FILE_ID) String fileId,
|
|
||||||
@RequestParam(value = FULL_ANALYSIS_PARAM, required = false, defaultValue = FALSE) boolean fullAnalysis);
|
|
||||||
|
|
||||||
|
|
||||||
@ResponseStatus(value = HttpStatus.OK)
|
@ResponseStatus(value = HttpStatus.OK)
|
||||||
@ResponseBody
|
@ResponseBody
|
||||||
@PostMapping(value = STATUS_REST_PATH, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
|
@PostMapping(value = STATUS_REST_PATH, produces = MediaType.APPLICATION_JSON_VALUE, consumes = MediaType.APPLICATION_JSON_VALUE)
|
||||||
@Operation(summary = "Get the filtered status for all files in a dossier.", description = "None")
|
@Operation(summary = "Get the filtered status for all files in the workspace.", description = "None")
|
||||||
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK")})
|
@ApiResponses(value = {@ApiResponse(responseCode = "200", description = "OK")})
|
||||||
List<FileStatus> getFileStatus(@RequestBody FileStatusFilter fileStatusFilter);
|
List<FileStatus> getFileStatus(@RequestBody FileStatusFilter fileStatusFilter);
|
||||||
|
|
||||||
|
|||||||
@ -35,18 +35,12 @@ public class FileStatusManagementService {
|
|||||||
|
|
||||||
public List<FileModel> getAllFileStatuses() {
|
public List<FileModel> getAllFileStatuses() {
|
||||||
|
|
||||||
return fileStatusService.getAllFiles()
|
return fileStatusService.getAllFiles();
|
||||||
.stream()
|
|
||||||
.filter(f -> !f.isSoftOrHardDeleted())
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<FileModel> getDossierTemplateStatus(String dossierTemplateId) {
|
public List<FileModel> getAllDossierTemplateStatus(String dossierTemplateId) {
|
||||||
|
|
||||||
return fileStatusService.getDossierTemplateStatus(dossierTemplateId)
|
return fileStatusService.getDossierTemplateStatus(dossierTemplateId);
|
||||||
.stream()
|
|
||||||
.filter(f -> !f.isSoftOrHardDeleted())
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<FileModel> getDossierStatus(String dossierId) {
|
public List<FileModel> getDossierStatus(String dossierId) {
|
||||||
@ -58,6 +52,7 @@ public class FileStatusManagementService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
public List<FileModel> getAllDossierStatus(String dossierId) {
|
public List<FileModel> getAllDossierStatus(String dossierId) {
|
||||||
|
|
||||||
return fileStatusService.getDossierStatus(dossierId);
|
return fileStatusService.getDossierStatus(dossierId);
|
||||||
|
|||||||
@ -45,12 +45,13 @@ public class ReanalysisService {
|
|||||||
private final Predicate<FileModel> errorFilesFilter = fileStatus -> fileStatus.getProcessingStatus().equals(ProcessingStatus.ERROR);
|
private final Predicate<FileModel> errorFilesFilter = fileStatus -> fileStatus.getProcessingStatus().equals(ProcessingStatus.ERROR);
|
||||||
|
|
||||||
|
|
||||||
public void reanalyzeAllErrorFiles(boolean fullAnalysis) {
|
public void reanalyzeAllErrorFiles(boolean repeatStructureAnalysis) {
|
||||||
|
|
||||||
var errorFiles = fileStatusService.getAllErrorFiles();
|
var errorFiles = fileStatusService.getAllErrorFiles();
|
||||||
analyseFiles(fullAnalysis, errorFiles);
|
analyseFiles(repeatStructureAnalysis, errorFiles);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void reanalyzeDossier(String dossierId, boolean force) {
|
public void reanalyzeDossier(String dossierId, boolean force) {
|
||||||
|
|
||||||
var relevantFiles = getAllFilesForDossier(dossierId, validFilesFilter);
|
var relevantFiles = getAllFilesForDossier(dossierId, validFilesFilter);
|
||||||
@ -58,13 +59,6 @@ public class ReanalysisService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
public void reanalyzeErrorFilesInDossier(String dossierId, boolean fullAnalysis) {
|
|
||||||
|
|
||||||
var errorFiles = getAllFilesForDossier(dossierId, errorFilesFilter);
|
|
||||||
analyseFiles(fullAnalysis, errorFiles);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
private List<FileModel> getAllFilesForDossier(String dossierId, Predicate<FileModel> filter) {
|
private List<FileModel> getAllFilesForDossier(String dossierId, Predicate<FileModel> filter) {
|
||||||
|
|
||||||
var dossier = dossierPersistenceService.getAndValidateDossier(dossierId);
|
var dossier = dossierPersistenceService.getAndValidateDossier(dossierId);
|
||||||
@ -76,6 +70,7 @@ public class ReanalysisService {
|
|||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private List<FileModel> getAllFilesForDossier(String dossierId) {
|
private List<FileModel> getAllFilesForDossier(String dossierId) {
|
||||||
|
|
||||||
var dossier = dossierPersistenceService.getAndValidateDossier(dossierId);
|
var dossier = dossierPersistenceService.getAndValidateDossier(dossierId);
|
||||||
@ -109,13 +104,9 @@ public class ReanalysisService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
private void analyseFiles(boolean fullAnalysis, List<FileModel> filesToReanalyse) {
|
private void analyseFiles(boolean repeatStructureAnalysis, List<FileModel> filesToReanalyse) {
|
||||||
|
|
||||||
if (fullAnalysis) {
|
filesToReanalyse.forEach(file -> fileStatusService.setStatusFullReprocess(file.getDossierId(), file.getId(), filesToReanalyse.size() == 1, repeatStructureAnalysis));
|
||||||
filesToReanalyse.forEach(file -> fileStatusService.setStatusFullReprocess(file.getDossierId(), file.getId(), filesToReanalyse.size() == 1, false));
|
|
||||||
} else {
|
|
||||||
filesToReanalyse.forEach(file -> fileStatusService.setStatusReprocess(file.getDossierId(), file.getId(), filesToReanalyse.size() == 1, true));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -125,10 +116,10 @@ public class ReanalysisService {
|
|||||||
reanalyseFiles(force, relevantFiles);
|
reanalyseFiles(force, relevantFiles);
|
||||||
}
|
}
|
||||||
|
|
||||||
public void reanalyzeGivenErrorFilesInDossier(String dossierId, Set<String> fileIds, boolean fullAnalysis) {
|
|
||||||
|
|
||||||
var errorFiles = getRelevantErrorFiles(dossierId, fileIds);
|
public void reanalyzeGivenErrorFilesInDossier(String dossierId, Set<String> fileIds, boolean repeatStructureAnalysis) {
|
||||||
analyseFiles(fullAnalysis, errorFiles);
|
|
||||||
|
analyseFiles(repeatStructureAnalysis, fileIds.isEmpty() ? getAllFilesForDossier(dossierId, errorFilesFilter) : getRelevantErrorFiles(dossierId, fileIds));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -160,13 +151,12 @@ public class ReanalysisService {
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
private List<FileModel> getRelevantErrorFiles(String dossierId, Collection<String> fileIds) {
|
private List<FileModel> getRelevantErrorFiles(String dossierId, Collection<String> fileIds) {
|
||||||
|
|
||||||
List<FileModel> relevantFiles = getRelevantFiles(dossierId, fileIds);
|
List<FileModel> relevantFiles = getRelevantFiles(dossierId, fileIds);
|
||||||
relevantFiles.forEach(fileModel -> {
|
relevantFiles.forEach(fileModel -> {
|
||||||
if(!fileModel.getProcessingStatus().equals(ProcessingStatus.ERROR)) {
|
if (!fileModel.getProcessingStatus().equals(ProcessingStatus.ERROR)) {
|
||||||
throw new BadRequestException("Only files in error state are allowed to be analyzed here!");
|
throw new ConflictException("Only files in error state are allowed to be analyzed here!");
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
return relevantFiles;
|
return relevantFiles;
|
||||||
|
|||||||
@ -7,10 +7,8 @@ import java.util.Collections;
|
|||||||
import java.util.HashSet;
|
import java.util.HashSet;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
import java.util.Optional;
|
|
||||||
import java.util.Set;
|
import java.util.Set;
|
||||||
import java.util.stream.Collectors;
|
import java.util.stream.Collectors;
|
||||||
import java.util.stream.Stream;
|
|
||||||
|
|
||||||
import org.apache.commons.lang3.StringUtils;
|
import org.apache.commons.lang3.StringUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
@ -426,10 +424,7 @@ public class FileStatusPersistenceService {
|
|||||||
|
|
||||||
public List<FileEntity> getAllErrorFiles() {
|
public List<FileEntity> getAllErrorFiles() {
|
||||||
|
|
||||||
return fileRepository.findAll()
|
return fileRepository.getAllErrorFilesExcludeDeleted();
|
||||||
.stream()
|
|
||||||
.filter(f -> f.getProcessingStatus().equals(ProcessingStatus.ERROR))
|
|
||||||
.collect(Collectors.toList());
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -304,6 +304,10 @@ public interface FileRepository extends JpaRepository<FileEntity, String> {
|
|||||||
List<FileEntity> getSoftDeletedFiles(@Param("dossierIds") List<String> dossierIds);
|
List<FileEntity> getSoftDeletedFiles(@Param("dossierIds") List<String> dossierIds);
|
||||||
|
|
||||||
|
|
||||||
|
@Query("select f from FileEntity f where f.processingStatus = 'ERROR' and f.deleted is null and f.hardDeletedTime is null ")
|
||||||
|
List<FileEntity> getAllErrorFilesExcludeDeleted();
|
||||||
|
|
||||||
|
|
||||||
@Query("select f.processingStatus as processingStatus, count(f) as count from FileEntity f "
|
@Query("select f.processingStatus as processingStatus, count(f) as count from FileEntity f "
|
||||||
+ "inner join DossierEntity d on d.id = f.dossierId "
|
+ "inner join DossierEntity d on d.id = f.dossierId "
|
||||||
+ "where f.deleted is null and f.hardDeletedTime is null "
|
+ "where f.deleted is null and f.hardDeletedTime is null "
|
||||||
|
|||||||
@ -1,7 +1,11 @@
|
|||||||
package com.iqser.red.service.peristence.v1.server.integration.tests;
|
package com.iqser.red.service.peristence.v1.server.integration.tests;
|
||||||
|
|
||||||
import static org.assertj.core.api.Assertions.assertThat;
|
import static org.assertj.core.api.Assertions.assertThat;
|
||||||
|
import static org.junit.jupiter.api.Assertions.assertThrows;
|
||||||
|
|
||||||
|
import java.time.Instant;
|
||||||
|
import java.time.OffsetDateTime;
|
||||||
|
import java.time.ZoneId;
|
||||||
import java.util.ArrayList;
|
import java.util.ArrayList;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
|
|
||||||
@ -21,6 +25,8 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemp
|
|||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.ProcessingStatus;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.ProcessingStatus;
|
||||||
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.WorkflowStatus;
|
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.WorkflowStatus;
|
||||||
|
|
||||||
|
import feign.FeignException;
|
||||||
|
|
||||||
public class SupportControllerTest extends AbstractPersistenceServerServiceTest {
|
public class SupportControllerTest extends AbstractPersistenceServerServiceTest {
|
||||||
|
|
||||||
@Autowired
|
@Autowired
|
||||||
@ -45,6 +51,9 @@ public class SupportControllerTest extends AbstractPersistenceServerServiceTest
|
|||||||
var dossier = dossierTesterAndProvider.provideTestDossier();
|
var dossier = dossierTesterAndProvider.provideTestDossier();
|
||||||
var file = fileTesterAndProvider.testAndProvideFile(dossier);
|
var file = fileTesterAndProvider.testAndProvideFile(dossier);
|
||||||
|
|
||||||
|
var e = assertThrows(FeignException.class, () -> supportClient.reanalyzeErrorFilesBulkForDossier(dossier.getId(), List.of(file.getFileId()), true));
|
||||||
|
assertThat(e.status()).isEqualTo(409);
|
||||||
|
|
||||||
setProcessingStatusToError(dossier, file);
|
setProcessingStatusToError(dossier, file);
|
||||||
|
|
||||||
supportClient.reanalyzeAllErrorFiles(true);
|
supportClient.reanalyzeAllErrorFiles(true);
|
||||||
@ -53,13 +62,7 @@ public class SupportControllerTest extends AbstractPersistenceServerServiceTest
|
|||||||
|
|
||||||
setProcessingStatusToError(dossier, file);
|
setProcessingStatusToError(dossier, file);
|
||||||
|
|
||||||
supportClient.reanalyzeErrorFilesForDossier(dossier.getId(), true);
|
supportClient.reanalyzeErrorFilesBulkForDossier(dossier.getId(), List.of(), true);
|
||||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
|
||||||
assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.FULL_PROCESSING);
|
|
||||||
|
|
||||||
setProcessingStatusToError(dossier, file);
|
|
||||||
|
|
||||||
supportClient.reanalyzeErrorFile(dossier.getId(), file.getFileId(), true);
|
|
||||||
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId());
|
||||||
assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.FULL_PROCESSING);
|
assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.FULL_PROCESSING);
|
||||||
|
|
||||||
@ -70,6 +73,15 @@ public class SupportControllerTest extends AbstractPersistenceServerServiceTest
|
|||||||
assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.FULL_PROCESSING);
|
assertThat(loadedFile.getProcessingStatus()).isEqualTo(ProcessingStatus.FULL_PROCESSING);
|
||||||
|
|
||||||
setProcessingStatusToError(dossier, file);
|
setProcessingStatusToError(dossier, file);
|
||||||
|
|
||||||
|
setFileToStatusDeleted(file);
|
||||||
|
e = assertThrows(FeignException.class, () -> supportClient.reanalyzeErrorFilesBulkForDossier(dossier.getId(), List.of(file.getFileId()), true));
|
||||||
|
assertThat(e.status()).isEqualTo(400);
|
||||||
|
|
||||||
|
setFiletoStatusHardDeleted(file);
|
||||||
|
e = assertThrows(FeignException.class, () -> supportClient.reanalyzeErrorFilesBulkForDossier(dossier.getId(), List.of(file.getFileId()), true));
|
||||||
|
assertThat(e.status()).isEqualTo(400);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -118,6 +130,44 @@ public class SupportControllerTest extends AbstractPersistenceServerServiceTest
|
|||||||
fileStatuses = supportClient.getFileStatusForDossierTemplate(file.getDossierTemplateId(), new FileStatusFilter(null, null));
|
fileStatuses = supportClient.getFileStatusForDossierTemplate(file.getDossierTemplateId(), new FileStatusFilter(null, null));
|
||||||
assertThat(fileStatuses.size()).isEqualTo(1);
|
assertThat(fileStatuses.size()).isEqualTo(1);
|
||||||
|
|
||||||
|
setFileToStatusDeleted(file);
|
||||||
|
|
||||||
|
fileStatuses = supportClient.getFileStatusForDossierTemplate(file.getDossierTemplateId(), new FileStatusFilter(null, null, false, true));
|
||||||
|
assertThat(fileStatuses.size()).isEqualTo(0);
|
||||||
|
|
||||||
|
fileStatuses = supportClient.getFileStatusForDossierTemplate(file.getDossierTemplateId(), new FileStatusFilter(null, null, true, false));
|
||||||
|
assertThat(fileStatuses.size()).isEqualTo(1);
|
||||||
|
|
||||||
|
setFiletoStatusHardDeleted(file);
|
||||||
|
|
||||||
|
fileStatuses = supportClient.getFileStatusForDossierTemplate(file.getDossierTemplateId(), new FileStatusFilter(null, null, true, false));
|
||||||
|
assertThat(fileStatuses.size()).isEqualTo(0);
|
||||||
|
|
||||||
|
fileStatuses = supportClient.getFileStatusForDossierTemplate(file.getDossierTemplateId(), new FileStatusFilter(null, null, false, true));
|
||||||
|
assertThat(fileStatuses.size()).isEqualTo(1);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void setFiletoStatusHardDeleted(FileStatus file) {
|
||||||
|
|
||||||
|
fileRepository.findById(file.getId())
|
||||||
|
.ifPresent((f) -> {
|
||||||
|
f.setDeleted(null);
|
||||||
|
f.setHardDeletedTime(OffsetDateTime.ofInstant(Instant.now(), ZoneId.of("Z")));
|
||||||
|
fileRepository.saveAndFlush(f);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
private void setFileToStatusDeleted(FileStatus file) {
|
||||||
|
|
||||||
|
fileRepository.findById(file.getId())
|
||||||
|
.ifPresent((f) -> {
|
||||||
|
f.setDeleted(OffsetDateTime.ofInstant(Instant.now(), ZoneId.of("Z")));
|
||||||
|
f.setHardDeletedTime(null);
|
||||||
|
fileRepository.saveAndFlush(f);
|
||||||
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -17,5 +17,16 @@ public class FileStatusFilter {
|
|||||||
|
|
||||||
private List<ProcessingStatus> processingStatusList = new ArrayList<>();
|
private List<ProcessingStatus> processingStatusList = new ArrayList<>();
|
||||||
private List<WorkflowStatus> workflowStatusList = new ArrayList<>();
|
private List<WorkflowStatus> workflowStatusList = new ArrayList<>();
|
||||||
|
private boolean includeSoftDeletedFiles;
|
||||||
|
private boolean includeHardDeletedFiles;
|
||||||
|
|
||||||
|
|
||||||
|
public FileStatusFilter(List<ProcessingStatus> processingStatusList, List<WorkflowStatus> workflowStatusList) {
|
||||||
|
|
||||||
|
this.processingStatusList = processingStatusList;
|
||||||
|
this.workflowStatusList = workflowStatusList;
|
||||||
|
this.includeSoftDeletedFiles = false;
|
||||||
|
this.includeHardDeletedFiles = false;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user