RED-9180 - Add migration to reanalyze all non-approved files

This commit is contained in:
Andrei Isvoran 2024-05-22 14:44:53 +03:00
parent edb333aa29
commit b4736783b8
3 changed files with 161 additions and 0 deletions

View File

@ -0,0 +1,42 @@
package com.iqser.red.service.persistence.management.v1.processor.migration;
import java.util.List;
import java.util.Set;
import java.util.stream.Collectors;
import org.springframework.stereotype.Service;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity;
import com.iqser.red.service.persistence.management.v1.processor.service.ReanalysisService;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierRepository;
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileRepository;
import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.WorkflowStatus;
import lombok.RequiredArgsConstructor;
@Service
@RequiredArgsConstructor
public class ReanalyzeNonApprovedFilesService {
private final DossierRepository dossierRepository;
private final FileRepository fileRepository;
private final ReanalysisService reanalysisService;
public void reanalyzeNonApprovedFiles() {
List<DossierEntity> dossierEntities = dossierRepository.findAll();
dossierEntities.forEach(dossierEntity -> {
List<FileEntity> unapprovedFilesByDossier = fileRepository.findByDossierId(dossierEntity.getId())
.stream()
.filter(fileEntity -> !fileEntity.getWorkflowStatus().equals(WorkflowStatus.APPROVED))
.toList();
Set<String> unapprovedFilesByDossierIds = unapprovedFilesByDossier.stream()
.map(FileEntity::getId)
.collect(Collectors.toSet());
reanalysisService.reanalyzeFiles(dossierEntity.getId(), unapprovedFilesByDossierIds, true);
});
}
}

View File

@ -0,0 +1,37 @@
package com.iqser.red.service.persistence.management.v1.processor.migration.migrations;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Service;
import com.iqser.red.service.persistence.management.v1.processor.migration.Migration;
import com.iqser.red.service.persistence.management.v1.processor.migration.ReanalyzeNonApprovedFilesService;
import lombok.Setter;
import lombok.extern.slf4j.Slf4j;
@Slf4j
@Setter
@Service
public class ReanalyzeNonApprovedFilesMigration18 extends Migration {
@Autowired
private ReanalyzeNonApprovedFilesService reanalyzeNonApprovedFilesService;
private static final String NAME = "Reanalyze all non-approved files";
private static final long VERSION = 18;
public ReanalyzeNonApprovedFilesMigration18() {
super(NAME, VERSION);
}
@Override
protected void migrate() {
log.info("Reanalyzing all non-approved files.");
reanalyzeNonApprovedFilesService.reanalyzeNonApprovedFiles();
}
}

View File

@ -0,0 +1,82 @@
package com.iqser.red.service.peristence.v1.server.integration.tests;
import static org.junit.jupiter.api.Assertions.assertEquals;
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider;
import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider;
import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider;
import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest;
import com.iqser.red.service.persistence.management.v1.processor.migration.MigrationController;
import com.iqser.red.service.persistence.management.v1.processor.service.FileStatusManagementService;
import com.iqser.red.service.persistence.management.v1.processor.service.ReanalysisService;
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;
public class ReanalyzeNonApprovedFilesTest extends AbstractPersistenceServerServiceTest {
@Autowired
private DossierTemplateTesterAndProvider dossierTemplateTesterAndProvider;
@Autowired
private FileTesterAndProvider fileTesterAndProvider;
@Autowired
private DossierTesterAndProvider dossierTesterAndProvider;
@Autowired
private ReanalysisService reanalysisService;
@Autowired
private MigrationController migrationController;
@Autowired
private FileStatusManagementService fileStatusManagementService;
@Test
public void testReanalyzeNonApprovedFiles() {
var filename1 = "test-dossier1-approved";
var filename2 = "test-dossier1-not-approved";
var filename3 = "test-dossier2-approved";
var filename4 = "test-dossier2-not-approved";
var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate();
var dossier1 = dossierTesterAndProvider.provideTestDossier(dossierTemplate, "dossier1");
var dossier2 = dossierTesterAndProvider.provideTestDossier(dossierTemplate, "dossier2");
var file1 = fileTesterAndProvider.testAndProvideFile(dossier1, filename1);
var file2 = fileTesterAndProvider.testAndProvideFile(dossier1, filename2);
var file3 = fileTesterAndProvider.testAndProvideFile(dossier2, filename3);
var file4 = fileTesterAndProvider.testAndProvideFile(dossier2, filename4);
fileStatusManagementService.setStatusApproved(dossier1.getId(), file1.getFileId(), "user");
fileStatusManagementService.setStatusApproved(dossier2.getId(), file3.getFileId(), "user");
var fileStatus1 = fileStatusManagementService.getFileStatus(file1.getFileId());
var fileStatus2 = fileStatusManagementService.getFileStatus(file2.getFileId());
var fileStatus3 = fileStatusManagementService.getFileStatus(file3.getFileId());
var fileStatus4 = fileStatusManagementService.getFileStatus(file4.getFileId());
assertEquals(fileStatus1.getWorkflowStatus(), WorkflowStatus.APPROVED);
assertEquals(fileStatus2.getWorkflowStatus(), WorkflowStatus.NEW);
assertEquals(fileStatus3.getWorkflowStatus(), WorkflowStatus.APPROVED);
assertEquals(fileStatus4.getWorkflowStatus(), WorkflowStatus.NEW);
migrationController.run("Reanalyze all non-approved files", true);
fileStatus1 = fileStatusManagementService.getFileStatus(file1.getFileId());
fileStatus2 = fileStatusManagementService.getFileStatus(file2.getFileId());
fileStatus3 = fileStatusManagementService.getFileStatus(file3.getFileId());
fileStatus4 = fileStatusManagementService.getFileStatus(file4.getFileId());
assertEquals(fileStatus1.getProcessingStatus(), ProcessingStatus.PRE_PROCESSING_QUEUED);
assertEquals(fileStatus2.getProcessingStatus(), ProcessingStatus.FULL_PROCESSING);
assertEquals(fileStatus3.getProcessingStatus(), ProcessingStatus.PRE_PROCESSING_QUEUED);
assertEquals(fileStatus4.getProcessingStatus(), ProcessingStatus.FULL_PROCESSING);
}
}