From a6c3cc864a84d09414bb50ec99ac6e1453c34f30 Mon Sep 17 00:00:00 2001 From: deiflaender Date: Thu, 9 Dec 2021 16:50:37 +0100 Subject: [PATCH] RED-2439: Calculate surrounding text for manual redactions --- .../repository/ManualRedactionRepository.java | 4 ++++ .../service/ManualRedactionService.java | 20 +++++++++++++++++++ persistence-service-v1/pom.xml | 2 +- 3 files changed, 25 insertions(+), 1 deletion(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/ManualRedactionRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/ManualRedactionRepository.java index 523cd2c67..c4cd7001d 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/ManualRedactionRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/ManualRedactionRepository.java @@ -34,4 +34,8 @@ public interface ManualRedactionRepository extends JpaRepository findByFileIdIncludeDeletions(String fileId, boolean includeDeletions); + + @Modifying + @Query("update ManualRedactionEntryEntity m set m.textBefore = :textBefore, m.textAfter = :textAfter where m.id = :id") + void updateSurroundingText(AnnotationEntityId id, String textBefore, String textAfter); } 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 d6af2dc18..1468c0605 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 @@ -3,13 +3,16 @@ package com.iqser.red.service.peristence.v1.server.service; import com.google.common.collect.Sets; import com.google.common.hash.HashFunction; import com.google.common.hash.Hashing; +import com.iqser.red.service.peristence.v1.server.client.RedactionClient; import com.iqser.red.service.peristence.v1.server.controller.DictionaryController; +import com.iqser.red.service.peristence.v1.server.utils.ManualRedactionMapper; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.*; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.*; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ManualRedactionRepository; import com.iqser.red.service.persistence.service.v1.api.model.annotations.*; import com.iqser.red.service.redaction.v1.model.RedactionLog; import com.iqser.red.service.redaction.v1.model.RedactionLogEntry; @@ -23,7 +26,9 @@ import java.time.OffsetDateTime; import java.time.temporal.ChronoUnit; import java.util.List; import java.util.Optional; +import java.util.Set; +import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; import static com.iqser.red.service.persistence.management.v1.processor.utils.TypeIdUtils.toTypeId; @Slf4j @@ -46,6 +51,8 @@ public class ManualRedactionService { private final ManualRedactionProviderService manualRedactionProviderService; private final AnalysisFlagsCalculationService analysisFlagsCalculationService; private final StopwordService stopwordService; + private final RedactionClient redactionClient; + private final ManualRedactionRepository manualRedactionRepository; private final HashFunction hashFunction = Hashing.murmur3_128(); @@ -93,6 +100,19 @@ public class ManualRedactionService { analysisFlagsCalculationService.calculateFlags(dossierId, fileId); } + // TODO This is just a proof of concept. + var loaded = convert(getAddRedaction(fileId, annotationId), ManualRedactionEntry.class, new ManualRedactionMapper()); + ManualRedactions manualRedactions = ManualRedactions.builder() + .entriesToAdd(Set.of(loaded)) + .build(); + var withSurroundingText = redactionClient.addSurroundingText(dossierId, fileId, manualRedactions); + if(withSurroundingText != null) { + withSurroundingText.getEntriesToAdd().forEach(e -> { + manualRedactionRepository.updateSurroundingText(new AnnotationEntityId(annotationId, fileId), e.getTextBefore(), e + .getTextAfter()); + }); + } + return ManualAddResponse.builder().annotationId(annotationId).commentId(commentId).build(); } diff --git a/persistence-service-v1/pom.xml b/persistence-service-v1/pom.xml index 9a88841db..16e29fa38 100755 --- a/persistence-service-v1/pom.xml +++ b/persistence-service-v1/pom.xml @@ -24,7 +24,7 @@ - 3.36.0 + 3.40.0 2.10.0 3.17.0 3.19.0