Pull request #181: RED-2896 Trigger Index Queue when assignee, file attributes or workflow status changes

Merge in RED/persistence-service from feature/RED-2896 to master

* commit 'b9df862ebff74e798c28c4ff4678d9f99cd2e55a':
  RED-2896 Trigger Index Queue when assignee, file attributes or workflow status changes
This commit is contained in:
Philipp Schramm 2022-01-13 16:38:06 +01:00
commit f98e7d4e06
7 changed files with 29 additions and 18 deletions

View File

@ -3,6 +3,7 @@ package com.iqser.red.service.peristence.v1.server.controller;
import com.google.common.collect.Lists;
import com.iqser.red.service.peristence.v1.server.service.DossierService;
import com.iqser.red.service.peristence.v1.server.service.FileStatusService;
import com.iqser.red.service.peristence.v1.server.service.IndexingService;
import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.FileAttributesGeneralConfigurationEntity;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity;
import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileAttributeConfigEntity;
@ -15,6 +16,7 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.Im
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.ProcessingStatus;
import com.iqser.red.service.persistence.service.v1.api.resources.FileAttributesResource;
import com.iqser.red.service.persistence.service.v1.api.utils.SuppressFBWarnings;
import com.iqser.red.service.search.v1.model.IndexMessageType;
import com.opencsv.CSVParser;
import com.opencsv.CSVParserBuilder;
import com.opencsv.CSVReader;
@ -45,6 +47,7 @@ public class FileAttributesController implements FileAttributesResource {
private final FileAttributeConfigPersistenceService fileAttributeConfigPersistenceService;
private final FileStatusPersistenceService fileStatusPersistenceService;
private final DossierService dossierService;
private final IndexingService indexingService;
@Transactional
@ -111,6 +114,7 @@ public class FileAttributesController implements FileAttributesResource {
String fileId = fileStatusByFilename.get(fileStatusMappingColumn.trim()).getId();
fileStatusPersistenceService.setFileAttributes(dossierId, fileId, attributeIdToValue);
indexingService.addToIndexingQueue(IndexMessageType.UPDATE, null, dossierId, fileId, 2);
affectedFileIds.add(fileId);
}
@ -123,6 +127,7 @@ public class FileAttributesController implements FileAttributesResource {
@PathVariable(FILE_ID) String fileId, @RequestBody Map<String, String> fileAttributesMap) {
fileStatusPersistenceService.setFileAttributes(dossierId, fileId, fileAttributesMap);
indexingService.addToIndexingQueue(IndexMessageType.UPDATE, null, dossierId, fileId, 2);
}

View File

@ -99,7 +99,7 @@ public class FileStatusController implements StatusResource {
assignee = userId;
fileStatusService.setAssignee(dossierId, fileId, assignee);
}
fileStatusService.setStatusSuccessful(fileId, assignee != null ? WorkflowStatus.UNDER_REVIEW : WorkflowStatus.NEW);
fileStatusService.setStatusSuccessful(dossierId, fileId, assignee != null ? WorkflowStatus.UNDER_REVIEW : WorkflowStatus.NEW);
analysisFlagsCalculationService.calculateFlags(dossierId, fileId);
}
@ -114,7 +114,7 @@ public class FileStatusController implements StatusResource {
}
fileStatusService.setAssignee(dossierId, fileId, approverId);
fileStatusService.setStatusSuccessful(fileId, assignee != null ? WorkflowStatus.UNDER_APPROVAL : WorkflowStatus.NEW);
fileStatusService.setStatusSuccessful(dossierId, fileId, assignee != null ? WorkflowStatus.UNDER_APPROVAL : WorkflowStatus.NEW);
analysisFlagsCalculationService.calculateFlags(dossierId, fileId);
}
@ -131,7 +131,7 @@ public class FileStatusController implements StatusResource {
assignee = approverId;
}
fileStatusService.setAssignee(dossierId, fileId, assignee);
fileStatusService.setApprovalStatusSuccessful(fileId, WorkflowStatus.APPROVED);
fileStatusService.setApprovalStatusSuccessful(dossierId, fileId, WorkflowStatus.APPROVED);
}

View File

@ -14,6 +14,7 @@ import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimiti
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.BinaryFileRequest;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.WorkflowStatus;
import com.iqser.red.service.search.v1.model.IndexMessageType;
import feign.FeignException;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
@ -251,7 +252,8 @@ public class FileService {
}
});
indexingService.addToIndexingQueue(dossierTemplateId, dossierId, fileId, 2);
indexingService.addToIndexingQueue(IndexMessageType.INSERT, dossierTemplateId, dossierId, fileId, 2);
}
private String generateFileId(BinaryFileRequest file) {

View File

@ -1,5 +1,6 @@
package com.iqser.red.service.peristence.v1.server.service;
import com.iqser.red.service.search.v1.model.IndexMessageType;
import org.springframework.retry.support.RetryTemplate;
import org.springframework.web.bind.annotation.RestController;
@ -43,7 +44,7 @@ public class FileStatusProcessingUpdateService {
});
if (!analyzeResult.isWasReanalyzed()) {
indexingService.addToIndexingQueue(dossier.getDossierTemplateId(), dossierId, fileId, 2);
indexingService.addToIndexingQueue(IndexMessageType.INSERT, dossier.getDossierTemplateId(), dossierId, fileId, 2);
}
analysisFlagsCalculationService.calculateFlags(dossierId, fileId);

View File

@ -18,16 +18,14 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.do
import com.iqser.red.service.redaction.v1.model.AnalyzeRequest;
import com.iqser.red.service.redaction.v1.model.AnalyzeResult;
import com.iqser.red.service.redaction.v1.model.MessageType;
import com.iqser.red.service.search.v1.model.IndexMessageType;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.apache.commons.lang3.StringUtils;
import org.springframework.amqp.rabbit.core.RabbitTemplate;
import org.springframework.stereotype.Service;
import javax.transaction.Transactional;
import java.time.OffsetDateTime;
import java.util.ArrayList;
import java.util.List;
@ -44,9 +42,7 @@ public class FileStatusService {
private final ObjectMapper objectMapper;
private final RulesController rulesController;
private final ManualRedactionProviderService manualRedactionProviderService;
private final FileManagementStorageService fileManagementStorageService;
private final LegalBasisChangePersistenceService legalBasisChangePersistenceService;
private final ImageRecategorizationPersistenceService imageRecategorizationPersistenceService;
private final CommentPersistenceService commentPersistenceService;
@ -55,6 +51,7 @@ public class FileStatusService {
private final AddRedactionPersistenceService addRedactionPersistenceService;
private final ResizeRedactionPersistenceService resizeRedactionPersistenceService;
private final FileManagementServiceSettings settings;
private final IndexingService indexingService;
public List<FileEntity> getActiveFiles(String dossierId) {
@ -106,18 +103,21 @@ public class FileStatusService {
analyzeResult.getLegalBasisVersion(), analyzeResult.getDuration(),
analyzeResult.getDossierDictionaryVersion(), analyzeResult.getAnalysisVersion(),
analyzeResult.getAnalysisNumber());
indexingService.addToIndexingQueue(IndexMessageType.UPDATE, null, dossierId, fileId, 2);
}
public void setStatusSuccessful(String fileId, WorkflowStatus workflowStatus) {
public void setStatusSuccessful(String dossierId, String fileId, WorkflowStatus workflowStatus) {
fileStatusPersistenceService.updateWorkflowStatus(fileId, workflowStatus, false);
indexingService.addToIndexingQueue(IndexMessageType.UPDATE, null, dossierId, fileId, 2);
}
public void setApprovalStatusSuccessful(String fileId, WorkflowStatus workflowStatus) {
public void setApprovalStatusSuccessful(String dossierId, String fileId, WorkflowStatus workflowStatus) {
fileStatusPersistenceService.updateWorkflowStatus(fileId, workflowStatus, true);
indexingService.addToIndexingQueue(IndexMessageType.UPDATE, null, dossierId, fileId, 2);
}
@ -236,6 +236,7 @@ public class FileStatusService {
}
fileStatusPersistenceService.setAssignee(fileId, assignee, lastReviewer, lastApprover);
indexingService.addToIndexingQueue(IndexMessageType.UPDATE, null, dossierId, fileId, 2);
}

View File

@ -5,9 +5,11 @@ import com.fasterxml.jackson.databind.ObjectMapper;
import com.iqser.red.service.peristence.v1.server.configuration.MessagingConfiguration;
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.persistence.FileStatusPersistenceService;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatus;
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.ProcessingStatus;
import com.iqser.red.service.search.v1.model.IndexMessage;
import com.iqser.red.service.search.v1.model.IndexMessageType;
import lombok.RequiredArgsConstructor;
import org.apache.commons.lang3.tuple.ImmutablePair;
import org.apache.commons.lang3.tuple.Pair;
@ -24,9 +26,8 @@ public class IndexingService {
private final RabbitTemplate rabbitTemplate;
private final ObjectMapper objectMapper;
private final FileStatusService fileStatusService;
private final DossierService dossierService;
private final FileStatusPersistenceService fileStatusPersistenceService;
public void reindex(String dossierId, Set<String> fileIds) {
@ -46,7 +47,7 @@ public class IndexingService {
}
for (Pair<String, String> reindexDossierId : reindexDossierIds) {
List<FileEntity> fileStatuses = fileStatusService.getDossierStatus(reindexDossierId.getRight());
List<FileEntity> fileStatuses = fileStatusPersistenceService.getStatusesForDossier(reindexDossierId.getRight());
for (FileEntity fileStatus : fileStatuses) {
if (fileStatus.getProcessingStatus().equals(ProcessingStatus.DELETED)) {
continue;
@ -54,16 +55,17 @@ public class IndexingService {
if (fileIds != null && !fileIds.isEmpty() && !fileIds.contains(fileStatus.getId())) {
continue;
}
addToIndexingQueue(reindexDossierId.getLeft(), reindexDossierId.getRight(), fileStatus.getId(), 2);
addToIndexingQueue(IndexMessageType.INSERT, reindexDossierId.getLeft(), reindexDossierId.getRight(), fileStatus.getId(), 2);
}
}
}
public void addToIndexingQueue(String dossierTemplateId, String dossierId, String fileId, int priority) {
public void addToIndexingQueue(IndexMessageType indexMessageType, String dossierTemplateId, String dossierId, String fileId, int priority) {
try {
rabbitTemplate.convertAndSend(MessagingConfiguration.INDEXING_QUEUE, objectMapper.writeValueAsString(IndexMessage.builder()
.messageType(indexMessageType)
.dossierTemplateId(dossierTemplateId)
.dossierId(dossierId)
.fileId(fileId)

View File

@ -26,7 +26,7 @@
<properties>
<redaction-service.version>3.56.0</redaction-service.version>
<search-service.version>2.10.0</search-service.version>
<search-service.version>2.18.0</search-service.version>
<pdftron-redaction-service.version>3.17.0</pdftron-redaction-service.version>
<redaction-report-service.version>3.19.0</redaction-report-service.version>
</properties>