diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/AnalysisFlagsCalculationService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/AnalysisFlagsCalculationService.java index ddf719ce0..c9e3322ab 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/AnalysisFlagsCalculationService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/AnalysisFlagsCalculationService.java @@ -5,6 +5,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ViewedPagesPersistenceService; import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus; import com.iqser.red.service.redaction.v1.model.RedactionLogEntry; + import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.scheduling.annotation.Async; @@ -24,7 +25,6 @@ public class AnalysisFlagsCalculationService { private final RedactionLogService redactionLogService; private final ViewedPagesPersistenceService viewedPagesPersistenceService; - @Async public void calculateFlags(String dossierId, String fileId) { @@ -76,7 +76,7 @@ public class AnalysisFlagsCalculationService { var lastChange = entry.getChanges().isEmpty() ? null : entry.getChanges().get(entry.getChanges().size() - 1); - if(lastModification == null || lastChange.getDateTime().isAfter(lastModification)){ + if(lastChange != null && (lastModification == null || lastChange.getDateTime().isAfter(lastModification))){ lastModification = lastChange.getDateTime(); } @@ -101,15 +101,23 @@ public class AnalysisFlagsCalculationService { fileStatusPersistenceService.updateFlags(fileId, hasRedactions, hasHints, hasImages, hasSuggestions, hasComments, hasUpdates); } - if(file.getAnnotationModificationDate() == null || file.getAnnotationModificationDate().isBefore(lastModification)) { - fileStatusPersistenceService.setLastAnnotationModificationDateForFile(fileId, lastModification); + OffsetDateTime lastManualRedactionTime = file.getLastManualRedaction(); + if(lastModification == null || lastManualRedactionTime.isAfter(lastModification)){ + lastModification = lastManualRedactionTime; } + if(lastModification != null && (file.getAnnotationModificationDate() == null || file.getAnnotationModificationDate().isBefore(lastModification))) { + fileStatusPersistenceService.setLastAnnotationModificationDateForFile(fileId, lastModification); + } } + private String getType(String typeId) { return typeId.split(":")[0]; } + + + } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/ManualRedactionService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/ManualRedactionService.java index 11b1df6c9..2b1a876ba 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/ManualRedactionService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/ManualRedactionService.java @@ -20,9 +20,11 @@ import com.iqser.red.service.redaction.v1.model.AnalyzeRequest; import com.iqser.red.service.redaction.v1.model.MessageType; import com.iqser.red.service.redaction.v1.model.RedactionLog; import com.iqser.red.service.redaction.v1.model.RedactionLogEntry; + import feign.FeignException; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; + import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.stereotype.Service; @@ -86,12 +88,10 @@ public class ManualRedactionService { Long commentId = null; if (addRedactionRequest.getComment() != null) { - commentId = addComment(fileId, annotationId, addRedactionRequest.getComment(), addRedactionRequest.getUser()) - .getId(); + commentId = addComment(fileId, annotationId, addRedactionRequest.getComment(), addRedactionRequest.getUser()).getId(); } - handleAddToDictionary(fileId, annotationId, addRedactionRequest.getTypeId(), addRedactionRequest.getValue(), addRedactionRequest - .getStatus(), addRedactionRequest.isAddToDictionary(), addRedactionRequest.isAddToDossierDictionary(), false, dossierId); + handleAddToDictionary(fileId, annotationId, addRedactionRequest.getTypeId(), addRedactionRequest.getValue(), addRedactionRequest.getStatus(), addRedactionRequest.isAddToDictionary(), addRedactionRequest.isAddToDossierDictionary(), false, dossierId); if (addRedactionRequest.getStatus().equals(AnnotationStatus.REQUESTED)) { fileStatusPersistenceService.setUpdateLastManualRedactionAndHasSuggestions(fileId, now, true); @@ -99,12 +99,9 @@ public class ManualRedactionService { fileStatusPersistenceService.updateLastManualRedaction(fileId, now); } - if (!addRedactionRequest.getPositions().isEmpty()) { - analysisFlagsCalculationService.calculateFlags(dossierId, fileId); - } + analysisFlagsCalculationService.calculateFlags(dossierId, fileId); - if (!addRedactionRequest.isAddToDictionary() && !addRedactionRequest.isAddToDossierDictionary() && !addRedactionRequest - .isRectangle()) { + if (!addRedactionRequest.isAddToDictionary() && !addRedactionRequest.isAddToDossierDictionary() && !addRedactionRequest.isRectangle()) { var loaded = convert(getAddRedaction(fileId, annotationId), ManualRedactionEntry.class, new ManualRedactionMapper()); ManualRedactions manualRedactions = ManualRedactions.builder().entriesToAdd(Set.of(loaded)).build(); addManualRedactionToAnalysisQueue(dossierId, fileId, manualRedactions); @@ -125,12 +122,10 @@ public class ManualRedactionService { Long commentId = null; if (removeRedactionRequest.getComment() != null) { - commentId = addComment(fileId, removeRedactionRequest.getAnnotationId(), removeRedactionRequest.getComment(), removeRedactionRequest - .getUser()).getId(); + commentId = addComment(fileId, removeRedactionRequest.getAnnotationId(), removeRedactionRequest.getComment(), removeRedactionRequest.getUser()).getId(); } - handleRemoveFromDictionary(dossierId, fileId, removeRedactionRequest.getAnnotationId(), removeRedactionRequest.getStatus(), removeRedactionRequest - .isRemoveFromDictionary(), false); + handleRemoveFromDictionary(dossierId, fileId, removeRedactionRequest.getAnnotationId(), removeRedactionRequest.getStatus(), removeRedactionRequest.isRemoveFromDictionary(), false); if (removeRedactionRequest.getStatus().equals(AnnotationStatus.REQUESTED)) { fileStatusPersistenceService.setUpdateLastManualRedactionAndHasSuggestions(fileId, now, true); @@ -164,8 +159,7 @@ public class ManualRedactionService { Long commentId = null; if (forceRedactionRequest.getComment() != null) { - commentId = addComment(fileId, forceRedactionRequest.getAnnotationId(), forceRedactionRequest.getComment(), forceRedactionRequest - .getUser()).getId(); + commentId = addComment(fileId, forceRedactionRequest.getAnnotationId(), forceRedactionRequest.getComment(), forceRedactionRequest.getUser()).getId(); } if (forceRedactionRequest.getStatus().equals(AnnotationStatus.REQUESTED)) { @@ -198,8 +192,7 @@ public class ManualRedactionService { Long commentId = null; if (legalBasisChangeRequest.getComment() != null) { - commentId = addComment(fileId, legalBasisChangeRequest.getAnnotationId(), legalBasisChangeRequest.getComment(), legalBasisChangeRequest - .getUser()).getId(); + commentId = addComment(fileId, legalBasisChangeRequest.getAnnotationId(), legalBasisChangeRequest.getComment(), legalBasisChangeRequest.getUser()).getId(); } if (legalBasisChangeRequest.getStatus().equals(AnnotationStatus.REQUESTED)) { @@ -228,8 +221,7 @@ public class ManualRedactionService { Long commentId = null; if (imageRecategorizationRequest.getComment() != null) { - commentId = addComment(fileId, imageRecategorizationRequest.getAnnotationId(), imageRecategorizationRequest.getComment(), imageRecategorizationRequest - .getUser()).getId(); + commentId = addComment(fileId, imageRecategorizationRequest.getAnnotationId(), imageRecategorizationRequest.getComment(), imageRecategorizationRequest.getUser()).getId(); } if (imageRecategorizationRequest.getStatus().equals(AnnotationStatus.REQUESTED)) { @@ -270,8 +262,7 @@ public class ManualRedactionService { Long commentId = null; if (resizeRedactionRequest.getComment() != null) { - commentId = addComment(fileId, resizeRedactionRequest.getAnnotationId(), resizeRedactionRequest.getComment(), resizeRedactionRequest - .getUser()).getId(); + commentId = addComment(fileId, resizeRedactionRequest.getAnnotationId(), resizeRedactionRequest.getComment(), resizeRedactionRequest.getUser()).getId(); } if (resizeRedactionRequest.getStatus().equals(AnnotationStatus.REQUESTED)) { @@ -340,8 +331,7 @@ public class ManualRedactionService { var addRedaction = getAddRedaction(fileId, annotationId); var dossier = dossierPersistenceService.getAndValidateDossier(dossierId); - handleAddToDictionary(fileId, annotationId, addRedaction.getTypeId(), addRedaction.getValue(), addRedaction.getStatus(), addRedaction - .isAddToDictionary(), addRedaction.isAddToDossierDictionary(), true, dossier.getId()); + handleAddToDictionary(fileId, annotationId, addRedaction.getTypeId(), addRedaction.getValue(), addRedaction.getStatus(), addRedaction.isAddToDictionary(), addRedaction.isAddToDossierDictionary(), true, dossier.getId()); addRedactionPersistenceService.softDelete(fileId, annotationId, OffsetDateTime.now()); @@ -352,9 +342,8 @@ public class ManualRedactionService { fileStatusPersistenceService.updateLastManualRedaction(fileId, OffsetDateTime.now()); } - if (!addRedaction.getPositions().isEmpty()) { - analysisFlagsCalculationService.calculateFlags(dossierId, fileId); - } + analysisFlagsCalculationService.calculateFlags(dossierId, fileId); + } @@ -555,7 +544,6 @@ public class ManualRedactionService { dossierPersistenceService.getAndValidateDossier(dossierId); ManualRedactionEntryEntity manualRedactionEntry = addRedactionPersistenceService.findAddRedaction(fileId, annotationId); - boolean hasPositions = !manualRedactionEntry.getPositions().isEmpty(); if (manualRedactionEntry.isAddToDictionary() || manualRedactionEntry.isAddToDossierDictionary()) { if (annotationStatus == AnnotationStatus.APPROVED) { addToDictionary(manualRedactionEntry.getTypeId(), manualRedactionEntry.getValue(), dossierId, fileId); @@ -571,9 +559,8 @@ public class ManualRedactionService { boolean hasSuggestions = calculateHasSuggestions(fileId); fileStatusPersistenceService.setUpdateLastManualRedactionAndHasSuggestions(fileId, OffsetDateTime.now(), hasSuggestions); - if (hasPositions) { - analysisFlagsCalculationService.calculateFlags(dossierId, fileId); - } + + analysisFlagsCalculationService.calculateFlags(dossierId, fileId); } @@ -594,8 +581,9 @@ public class ManualRedactionService { } - private void handleAddToDictionary(String fileId, String annotationId, String typeId, String value, AnnotationStatus status, - boolean addToDictionary, boolean addToDossierDictionary, boolean revert, String dossierId) { + private void handleAddToDictionary(String fileId, String annotationId, String typeId, String value, + AnnotationStatus status, boolean addToDictionary, boolean addToDossierDictionary, + boolean revert, String dossierId) { if (status == AnnotationStatus.APPROVED) { addRedactionPersistenceService.updateStatus(fileId, annotationId, status, addToDictionary, addToDossierDictionary); @@ -726,13 +714,11 @@ public class ManualRedactionService { public void updateManualRedactions(String fileId, ManualRedactions manualRedactions) { manualRedactions.getEntriesToAdd().forEach(e -> { - addRedactionPersistenceService.updateSurroundingText(new AnnotationEntityId(e.getAnnotationId(), fileId), e.getTextBefore(), e - .getTextAfter()); + addRedactionPersistenceService.updateSurroundingText(new AnnotationEntityId(e.getAnnotationId(), fileId), e.getTextBefore(), e.getTextAfter()); }); manualRedactions.getResizeRedactions().forEach(e -> { - resizeRedactionPersistenceService.updateSurroundingText(new AnnotationEntityId(e.getAnnotationId(), fileId), e - .getTextBefore(), e.getTextAfter()); + resizeRedactionPersistenceService.updateSurroundingText(new AnnotationEntityId(e.getAnnotationId(), fileId), e.getTextBefore(), e.getTextAfter()); }); }