From 9ae85df4da759b9d55ba633b7ea98515457c5b85 Mon Sep 17 00:00:00 2001 From: Maverick Studer Date: Thu, 12 Dec 2024 12:57:57 +0100 Subject: [PATCH] RED-10639: RM-224: ERROR state for document after re-upload same document with... --- .../EntityFromPrecursorCreationService.java | 22 ++++++++++++++----- 1 file changed, 16 insertions(+), 6 deletions(-) diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/document/EntityFromPrecursorCreationService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/document/EntityFromPrecursorCreationService.java index b8dd1268..8bc9d6bf 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/document/EntityFromPrecursorCreationService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/document/EntityFromPrecursorCreationService.java @@ -14,12 +14,15 @@ import org.springframework.stereotype.Service; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Engine; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.imported.ImportedRedactions; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ManualRedactions; +import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.Rectangle; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.BaseAnnotation; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.IdRemoval; import com.iqser.red.service.redaction.v1.server.RedactionServiceSettings; import com.iqser.red.service.redaction.v1.server.model.PrecursorEntity; import com.iqser.red.service.redaction.v1.server.model.document.entity.EntityType; import com.iqser.red.service.redaction.v1.server.model.document.entity.TextEntity; +import com.iqser.red.service.redaction.v1.server.model.document.nodes.Document; +import com.iqser.red.service.redaction.v1.server.model.document.nodes.Page; import com.iqser.red.service.redaction.v1.server.model.document.nodes.SemanticNode; import com.iqser.red.service.redaction.v1.server.service.DictionaryService; @@ -40,9 +43,14 @@ public class EntityFromPrecursorCreationService { RedactionServiceSettings settings; - public List createEntitiesIfFoundAndReturnNotFoundEntries(ManualRedactions manualRedactions, SemanticNode node, String dossierTemplateId) { + public List createEntitiesIfFoundAndReturnNotFoundEntries(ManualRedactions manualRedactions, Document document, String dossierTemplateId) { + Set pageNumbers = document.getPages() + .stream() + .map(Page::getNumber) + .collect(Collectors.toSet()); Set idRemovals = manualRedactions.getIdsToRemove(); + List manualEntities = manualRedactions.getEntriesToAdd() .stream() .filter(BaseAnnotation::isLocal) @@ -51,6 +59,10 @@ public class EntityFromPrecursorCreationService { .filter(idRemoval -> idRemoval.getRequestDate().isAfter(manualRedactionEntry.getRequestDate())) .findAny()// .isEmpty()) + .filter(manualRedactionEntry -> manualRedactionEntry.getPositions() + .stream() + .map(Rectangle::getPage) + .allMatch(pageNumbers::contains)) .map(manualRedactionEntry -> // PrecursorEntity.fromManualRedactionEntry(manualRedactionEntry, dictionaryService.isHint(manualRedactionEntry.getType(), dossierTemplateId))) .peek(manualEntity -> { @@ -61,7 +73,7 @@ public class EntityFromPrecursorCreationService { } }) .toList(); - return toTextEntity(manualEntities, node); + return toTextEntity(manualEntities, document); } @@ -130,10 +142,8 @@ public class EntityFromPrecursorCreationService { } else { String section = precursorEntity.getManualOverwrite().getSection() .orElse(null); - if ((section == null || section.isBlank()) - && precursorEntity.getSection() != null - && !precursorEntity.getSection().isBlank() - && precursorEntity.getEngines().contains(Engine.IMPORTED)) { + if ((section == null || section.isBlank()) && precursorEntity.getSection() != null && !precursorEntity.getSection().isBlank() && precursorEntity.getEngines() + .contains(Engine.IMPORTED)) { section = precursorEntity.getSection(); }