From 3a9911dcacd4fd359516fbeeeaebb306a966280f Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Tue, 28 Sep 2021 15:30:30 +0300 Subject: [PATCH] upgraded ps integration --- .../redaction-service-api-v1/pom.xml | 2 +- .../redaction/v1/model/AnalyzeRequest.java | 2 +- .../redaction/v1/model/RedactionLog.java | 2 +- .../redaction/v1/model/RedactionLogEntry.java | 5 +- .../redaction/v1/model/RedactionRequest.java | 2 +- .../controller/RedactionController.java | 2 +- .../v1/server/redaction/model/Dictionary.java | 2 +- .../redaction/model/DictionaryModel.java | 2 +- .../redaction/service/AnalyzeService.java | 15 +- .../redaction/service/AnnotationService.java | 4 +- .../redaction/service/DictionaryService.java | 4 +- .../service/EntityRedactionService.java | 6 +- .../redaction/service/NerAnalyserService.java | 2 +- .../service/RedactionLogMergeService.java | 24 +-- .../storage/RedactionStorageService.java | 2 +- .../v1/server/RedactionIntegrationTest.java | 183 ++++++++---------- 16 files changed, 110 insertions(+), 149 deletions(-) diff --git a/redaction-service-v1/redaction-service-api-v1/pom.xml b/redaction-service-v1/redaction-service-api-v1/pom.xml index 79cd421c..61725e22 100644 --- a/redaction-service-v1/redaction-service-api-v1/pom.xml +++ b/redaction-service-v1/redaction-service-api-v1/pom.xml @@ -20,7 +20,7 @@ com.iqser.red.service persistence-service-api-v1 - 0.4.0 + 0.14.0 diff --git a/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/AnalyzeRequest.java b/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/AnalyzeRequest.java index bfd5f471..f0827d98 100644 --- a/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/AnalyzeRequest.java +++ b/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/AnalyzeRequest.java @@ -1,5 +1,6 @@ package com.iqser.red.service.redaction.v1.model; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.ManualRedactions; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -11,7 +12,6 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import com.iqser.red.service.persistence.service.v1.api.model.ManualRedactions; @Data @Builder diff --git a/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/RedactionLog.java b/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/RedactionLog.java index 2e404431..908b5459 100644 --- a/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/RedactionLog.java +++ b/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/RedactionLog.java @@ -1,11 +1,11 @@ package com.iqser.red.service.redaction.v1.model; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.legalbasis.LegalBasis; import lombok.AllArgsConstructor; import lombok.Data; import java.util.List; -import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.LegalBasis; @Data @AllArgsConstructor diff --git a/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/RedactionLogEntry.java b/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/RedactionLogEntry.java index 961e00f9..09004c24 100644 --- a/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/RedactionLogEntry.java +++ b/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/RedactionLogEntry.java @@ -1,5 +1,7 @@ package com.iqser.red.service.redaction.v1.model; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.Comment; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; @@ -11,7 +13,6 @@ import java.util.HashSet; import java.util.List; import java.util.Set; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.AnnotationStatus; @Data @Builder @@ -45,7 +46,7 @@ public class RedactionLogEntry { private String textAfter; @Builder.Default - private List comments = new ArrayList<>(); + private List comments = new ArrayList<>(); private int startOffset; private int endOffset; diff --git a/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/RedactionRequest.java b/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/RedactionRequest.java index efeadea2..cc6fe0e3 100644 --- a/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/RedactionRequest.java +++ b/redaction-service-v1/redaction-service-api-v1/src/main/java/com/iqser/red/service/redaction/v1/model/RedactionRequest.java @@ -3,8 +3,8 @@ package com.iqser.red.service.redaction.v1.model; import java.util.HashSet; import java.util.Set; -import com.iqser.red.service.persistence.service.v1.api.model.ManualRedactions; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.ManualRedactions; import lombok.AllArgsConstructor; import lombok.Builder; import lombok.Data; diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/controller/RedactionController.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/controller/RedactionController.java index c47022d0..20358f2c 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/controller/RedactionController.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/controller/RedactionController.java @@ -1,6 +1,6 @@ package com.iqser.red.service.redaction.v1.server.controller; -import com.iqser.red.service.persistence.service.v1.api.model.FileType; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType; import com.iqser.red.service.redaction.v1.model.*; import com.iqser.red.service.redaction.v1.resources.RedactionResource; import com.iqser.red.service.redaction.v1.server.classification.model.Document; diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Dictionary.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Dictionary.java index b19ce7ba..2b295960 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Dictionary.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/Dictionary.java @@ -2,6 +2,7 @@ package com.iqser.red.service.redaction.v1.server.redaction.model; import static java.util.stream.Collectors.toSet; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntry; import lombok.Data; import lombok.Getter; @@ -10,7 +11,6 @@ import java.util.List; import java.util.Map; import java.util.Set; -import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.DictionaryEntry; @Data public class Dictionary { diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/DictionaryModel.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/DictionaryModel.java index e6c0eb09..12db03bd 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/DictionaryModel.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/model/DictionaryModel.java @@ -1,6 +1,7 @@ package com.iqser.red.service.redaction.v1.server.redaction.model; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntry; import lombok.AllArgsConstructor; import lombok.Data; @@ -8,7 +9,6 @@ import java.io.Serializable; import java.util.Set; import java.util.stream.Collectors; -import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.DictionaryEntry; @Data @AllArgsConstructor diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/AnalyzeService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/AnalyzeService.java index 26b47517..e5a8c96b 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/AnalyzeService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/AnalyzeService.java @@ -8,17 +8,12 @@ import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.*; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType; import org.kie.api.runtime.KieContainer; import org.springframework.stereotype.Service; import org.springframework.web.bind.annotation.RequestBody; -import com.iqser.red.service.persistence.service.v1.api.model.FileType; -import com.iqser.red.service.persistence.service.v1.api.model.ManualRedactions; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.AnnotationId; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.IdRemoval; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.ManualForceRedaction; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.ManualImageRecategorization; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.ManualLegalBasisChange; 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.Rectangle; @@ -245,11 +240,11 @@ public class AnalyzeService { return Stream.concat(manualRedactions.getLegalBasisChanges() .stream() - .map(ManualLegalBasisChange::getId), Stream.concat(manualRedactions.getImageRecategorization() + .map(ManualLegalBasisChange::getAnnotationId), Stream.concat(manualRedactions.getImageRecategorization() .stream() - .map(ManualImageRecategorization::getId), Stream.concat(manualRedactions.getIdsToRemove() + .map(ManualImageRecategorization::getAnnotationId), Stream.concat(manualRedactions.getIdsToRemove() .stream() - .map(IdRemoval::getId), manualRedactions.getForceRedactions().stream().map(ManualForceRedaction::getId)))).map(AnnotationId::getId) + .map(IdRemoval::getAnnotationId), manualRedactions.getForceRedactions().stream().map(ManualForceRedaction::getAnnotationId)))) .collect(Collectors.toSet()); } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/AnnotationService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/AnnotationService.java index 9a847bfc..a0a3e665 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/AnnotationService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/AnnotationService.java @@ -1,5 +1,6 @@ package com.iqser.red.service.redaction.v1.server.redaction.service; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.Comment; import com.iqser.red.service.redaction.v1.model.*; import lombok.RequiredArgsConstructor; import org.apache.pdfbox.pdmodel.PDDocument; @@ -12,7 +13,6 @@ import org.apache.pdfbox.pdmodel.graphics.color.PDDeviceRGB; import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotation; import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationText; import org.apache.pdfbox.pdmodel.interactive.annotation.PDAnnotationTextMarkup; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.Comment; import org.springframework.stereotype.Service; import java.awt.Color; @@ -28,8 +28,6 @@ import java.util.stream.Collectors; @RequiredArgsConstructor public class AnnotationService { - private final DictionaryService dictionaryService; - public void annotate(PDDocument document, RedactionLog redactionLog, SectionGrid sectionGrid) throws IOException { diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/DictionaryService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/DictionaryService.java index 2e0d641d..cf0c7d8f 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/DictionaryService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/DictionaryService.java @@ -1,7 +1,7 @@ package com.iqser.red.service.redaction.v1.server.redaction.service; -import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.Colors; -import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.DictionaryEntry; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.Colors; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntry; import com.iqser.red.service.redaction.v1.server.client.DictionaryClient; import com.iqser.red.service.redaction.v1.server.redaction.model.Dictionary; import com.iqser.red.service.redaction.v1.server.redaction.model.*; diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/EntityRedactionService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/EntityRedactionService.java index 9c42aebd..c643acc1 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/EntityRedactionService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/EntityRedactionService.java @@ -9,13 +9,13 @@ import java.util.Set; import java.util.stream.Collectors; import java.util.stream.Stream; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.AnnotationStatus; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.ManualImageRecategorization; import org.apache.commons.codec.binary.Base64; import org.apache.commons.lang3.StringUtils; import org.kie.api.runtime.KieContainer; import org.springframework.stereotype.Service; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.AnnotationStatus; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.ManualImageRecategorization; import com.iqser.red.service.redaction.v1.model.AnalyzeRequest; import com.iqser.red.service.redaction.v1.model.Engine; import com.iqser.red.service.redaction.v1.server.classification.model.SectionText; @@ -89,7 +89,7 @@ public class EntityRedactionService { String imageId = IdBuilder.buildId(image.getPosition(), image.getPage()); for (ManualImageRecategorization imageRecategorization : analyzeRequest.getManualRedactions() .getImageRecategorization()) { - if (imageRecategorization.getStatus().equals(AnnotationStatus.APPROVED) && imageRecategorization.getId().getId() + if (imageRecategorization.getStatus().equals(AnnotationStatus.APPROVED) && imageRecategorization.getAnnotationId() .equals(imageId)) { image.setType(imageRecategorization.getType()); } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/NerAnalyserService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/NerAnalyserService.java index 32769c78..1e7b7392 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/NerAnalyserService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/NerAnalyserService.java @@ -2,10 +2,10 @@ package com.iqser.red.service.redaction.v1.server.redaction.service; import java.util.stream.Collectors; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType; import org.apache.commons.codec.binary.Base64; import org.springframework.stereotype.Service; -import com.iqser.red.service.persistence.service.v1.api.model.FileType; import com.iqser.red.service.redaction.v1.server.client.EntityRecognitionClient; import com.iqser.red.service.redaction.v1.server.client.model.EntityRecognitionRequest; import com.iqser.red.service.redaction.v1.server.client.model.EntityRecognitionSection; diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/RedactionLogMergeService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/RedactionLogMergeService.java index 55584a7a..67928320 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/RedactionLogMergeService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/RedactionLogMergeService.java @@ -8,16 +8,9 @@ import java.util.Map; import java.util.Set; import java.util.stream.Collectors; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.*; import org.springframework.stereotype.Service; -import com.iqser.red.service.persistence.service.v1.api.model.ManualRedactions; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.AnnotationStatus; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.Comment; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.IdRemoval; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.ManualForceRedaction; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.ManualImageRecategorization; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.ManualLegalBasisChange; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.ManualRedactionEntry; import com.iqser.red.service.redaction.v1.model.ManualRedactionType; import com.iqser.red.service.redaction.v1.model.Point; import com.iqser.red.service.redaction.v1.model.Rectangle; @@ -79,25 +72,25 @@ public class RedactionLogMergeService { manualRedactions.getImageRecategorization().forEach(item -> { if (item.getSoftDeletedTime() == null) { - manualRedactionWrappers.add(new ManualRedactionWrapper(item.getId().getId(), item.getRequestDate(), item)); + manualRedactionWrappers.add(new ManualRedactionWrapper(item.getAnnotationId(), item.getRequestDate(), item)); } }); manualRedactions.getIdsToRemove().forEach(item -> { if (item.getSoftDeletedTime() == null) { - manualRedactionWrappers.add(new ManualRedactionWrapper(item.getId().getId(), item.getRequestDate(), item)); + manualRedactionWrappers.add(new ManualRedactionWrapper(item.getAnnotationId(), item.getRequestDate(), item)); } }); manualRedactions.getForceRedactions().forEach(item -> { if (item.getSoftDeletedTime() == null) { - manualRedactionWrappers.add(new ManualRedactionWrapper(item.getId().getId(), item.getRequestDate(), item)); + manualRedactionWrappers.add(new ManualRedactionWrapper(item.getAnnotationId(), item.getRequestDate(), item)); } }); manualRedactions.getLegalBasisChanges().forEach(item -> { if (item.getSoftDeletedTime() == null) { - manualRedactionWrappers.add(new ManualRedactionWrapper(item.getId().getId(), item.getRequestDate(), item)); + manualRedactionWrappers.add(new ManualRedactionWrapper(item.getAnnotationId(), item.getRequestDate(), item)); } }); @@ -237,10 +230,9 @@ public class RedactionLogMergeService { for (ManualRedactionEntry manualRedactionEntry : manualAdds) { if (!approvedAndShouldBeInDictionary(manualRedactionEntry)) { - RedactionLogEntry redactionLogEntry = createRedactionLogEntry(manualRedactionEntry, manualRedactionEntry - .getId().getId(), dossierTemplateId); + RedactionLogEntry redactionLogEntry = createRedactionLogEntry(manualRedactionEntry, manualRedactionEntry.getAnnotationId(), dossierTemplateId); redactionLogEntry.setPositions(convertPositions(manualRedactionEntry.getPositions())); - redactionLogEntry.setComments(comments.get(manualRedactionEntry.getId().getId())); + redactionLogEntry.setComments(comments.get(manualRedactionEntry.getAnnotationId())); redactionLogEntries.add(redactionLogEntry); } } @@ -248,7 +240,7 @@ public class RedactionLogMergeService { return redactionLogEntries; } - private List convertPositions(List positions){ + private List convertPositions(List positions){ return positions.stream().map(pos -> new Rectangle(new Point(pos.getTopLeftX(), pos.getTopLeftY()), pos.getWidth(), pos .getHeight(), pos.getPage())).collect(Collectors.toList()); } diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/storage/RedactionStorageService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/storage/RedactionStorageService.java index 0ff294b0..185abb1d 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/storage/RedactionStorageService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/storage/RedactionStorageService.java @@ -1,7 +1,7 @@ package com.iqser.red.service.redaction.v1.server.storage; import com.fasterxml.jackson.databind.ObjectMapper; -import com.iqser.red.service.persistence.service.v1.api.model.FileType; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType; import com.iqser.red.service.redaction.v1.model.RedactionLog; import com.iqser.red.service.redaction.v1.model.SectionGrid; import com.iqser.red.service.redaction.v1.server.classification.model.Text; diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/RedactionIntegrationTest.java b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/RedactionIntegrationTest.java index 6832338d..1a9b200a 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/RedactionIntegrationTest.java +++ b/redaction-service-v1/redaction-service-server-v1/src/test/java/com/iqser/red/service/redaction/v1/server/RedactionIntegrationTest.java @@ -1,28 +1,28 @@ package com.iqser.red.service.redaction.v1.server; -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.when; - -import java.io.BufferedReader; -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.InputStreamReader; -import java.net.URL; -import java.nio.charset.StandardCharsets; -import java.time.OffsetDateTime; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.UUID; -import java.util.stream.Collectors; - +import com.amazonaws.services.s3.AmazonS3; +import com.fasterxml.jackson.databind.ObjectMapper; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.Rectangle; +import com.iqser.red.service.persistence.service.v1.api.model.annotations.*; +import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimitive; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.Colors; +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.type.DictionaryEntry; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.Type; +import com.iqser.red.service.redaction.v1.model.*; +import com.iqser.red.service.redaction.v1.server.classification.model.SectionText; +import com.iqser.red.service.redaction.v1.server.client.DictionaryClient; +import com.iqser.red.service.redaction.v1.server.client.ImageClassificationClient; +import com.iqser.red.service.redaction.v1.server.client.LegalBasisClient; +import com.iqser.red.service.redaction.v1.server.client.RulesClient; +import com.iqser.red.service.redaction.v1.server.controller.RedactionController; +import com.iqser.red.service.redaction.v1.server.memory.MemoryStats; +import com.iqser.red.service.redaction.v1.server.redaction.service.AnalyzeService; +import com.iqser.red.service.redaction.v1.server.redaction.utils.ResourceLoader; +import com.iqser.red.service.redaction.v1.server.redaction.utils.TextNormalizationUtilities; +import com.iqser.red.service.redaction.v1.server.storage.RedactionStorageService; +import com.iqser.red.storage.commons.service.StorageService; +import lombok.SneakyThrows; import org.apache.commons.io.IOUtils; import org.junit.After; import org.junit.Before; @@ -47,46 +47,15 @@ import org.springframework.context.annotation.Primary; import org.springframework.core.io.ClassPathResource; import org.springframework.test.context.junit4.SpringRunner; -import com.amazonaws.services.s3.AmazonS3; -import com.fasterxml.jackson.databind.ObjectMapper; -import com.iqser.red.service.persistence.service.v1.api.model.FileType; -import com.iqser.red.service.persistence.service.v1.api.model.JSONPrimitive; -import com.iqser.red.service.persistence.service.v1.api.model.ManualRedactions; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.AnnotationId; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.AnnotationStatus; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.Comment; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.IdRemoval; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.ManualForceRedaction; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.ManualImageRecategorization; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.ManualLegalBasisChange; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.ManualRedactionEntry; -import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.Rectangle; -import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.Colors; -import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.DictionaryEntry; -import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.Type; -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.AnnotateRequest; -import com.iqser.red.service.redaction.v1.model.AnnotateResponse; -import com.iqser.red.service.redaction.v1.model.FileAttribute; -import com.iqser.red.service.redaction.v1.model.RedactionLogEntry; -import com.iqser.red.service.redaction.v1.model.RedactionRequest; -import com.iqser.red.service.redaction.v1.model.RedactionResult; -import com.iqser.red.service.redaction.v1.model.StructureAnalyzeRequest; -import com.iqser.red.service.redaction.v1.server.classification.model.SectionText; -import com.iqser.red.service.redaction.v1.server.client.DictionaryClient; -import com.iqser.red.service.redaction.v1.server.client.ImageClassificationClient; -import com.iqser.red.service.redaction.v1.server.client.LegalBasisClient; -import com.iqser.red.service.redaction.v1.server.client.RulesClient; -import com.iqser.red.service.redaction.v1.server.controller.RedactionController; -import com.iqser.red.service.redaction.v1.server.memory.MemoryStats; -import com.iqser.red.service.redaction.v1.server.redaction.service.AnalyzeService; -import com.iqser.red.service.redaction.v1.server.redaction.utils.ResourceLoader; -import com.iqser.red.service.redaction.v1.server.redaction.utils.TextNormalizationUtilities; -import com.iqser.red.service.redaction.v1.server.storage.RedactionStorageService; -import com.iqser.red.storage.commons.service.StorageService; +import java.io.*; +import java.net.URL; +import java.nio.charset.StandardCharsets; +import java.time.OffsetDateTime; +import java.util.*; +import java.util.stream.Collectors; -import lombok.SneakyThrows; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.when; @RunWith(SpringRunner.class) @SpringBootTest(classes = Application.class, webEnvironment = SpringBootTest.WebEnvironment.RANDOM_PORT) @@ -220,53 +189,53 @@ public class RedactionIntegrationTest { when(dictionaryClient.getVersion(TEST_DOSSIER_TEMPLATE_ID)).thenReturn(0L); when(dictionaryClient.getAllTypesForDossier(TEST_DOSSIER_ID)).thenReturn(List.of(Type.builder() - .id(DOSSIER_REDACTIONS +":"+ TEST_DOSSIER_TEMPLATE_ID) + .id(DOSSIER_REDACTIONS + ":" + TEST_DOSSIER_TEMPLATE_ID) .type(DOSSIER_REDACTIONS) - .dossierTemplateId(TEST_DOSSIER_ID) - .hexColor("#ffe187") - .isHint(hintTypeMap.get(DOSSIER_REDACTIONS)) - .isCaseInsensitive(caseInSensitiveMap.get(DOSSIER_REDACTIONS)) - .isRecommendation(recommendationTypeMap.get(DOSSIER_REDACTIONS)) - .rank(rankTypeMap.get(DOSSIER_REDACTIONS)) - .build())); + .dossierTemplateId(TEST_DOSSIER_ID) + .hexColor("#ffe187") + .isHint(hintTypeMap.get(DOSSIER_REDACTIONS)) + .isCaseInsensitive(caseInSensitiveMap.get(DOSSIER_REDACTIONS)) + .isRecommendation(recommendationTypeMap.get(DOSSIER_REDACTIONS)) + .rank(rankTypeMap.get(DOSSIER_REDACTIONS)) + .build())); when(dictionaryClient.getDictionaryForType(VERTEBRATE + ":" + TEST_DOSSIER_TEMPLATE_ID)) .thenReturn(getDictionaryResponse(VERTEBRATE, false)); - when(dictionaryClient.getDictionaryForType(ADDRESS+ ":" + TEST_DOSSIER_TEMPLATE_ID)) + when(dictionaryClient.getDictionaryForType(ADDRESS + ":" + TEST_DOSSIER_TEMPLATE_ID)) .thenReturn(getDictionaryResponse(ADDRESS, false)); - when(dictionaryClient.getDictionaryForType(AUTHOR+ ":" + TEST_DOSSIER_TEMPLATE_ID)) + when(dictionaryClient.getDictionaryForType(AUTHOR + ":" + TEST_DOSSIER_TEMPLATE_ID)) .thenReturn(getDictionaryResponse(AUTHOR, false)); - when(dictionaryClient.getDictionaryForType(SPONSOR+ ":" + TEST_DOSSIER_TEMPLATE_ID)) + when(dictionaryClient.getDictionaryForType(SPONSOR + ":" + TEST_DOSSIER_TEMPLATE_ID)) .thenReturn(getDictionaryResponse(SPONSOR, false)); - when(dictionaryClient.getDictionaryForType(NO_REDACTION_INDICATOR+ ":" + TEST_DOSSIER_TEMPLATE_ID)) + when(dictionaryClient.getDictionaryForType(NO_REDACTION_INDICATOR + ":" + TEST_DOSSIER_TEMPLATE_ID)) .thenReturn(getDictionaryResponse(NO_REDACTION_INDICATOR, false)); - when(dictionaryClient.getDictionaryForType(REDACTION_INDICATOR+ ":" + TEST_DOSSIER_TEMPLATE_ID)) + when(dictionaryClient.getDictionaryForType(REDACTION_INDICATOR + ":" + TEST_DOSSIER_TEMPLATE_ID)) .thenReturn(getDictionaryResponse(REDACTION_INDICATOR, false)); - when(dictionaryClient.getDictionaryForType(HINT_ONLY+ ":" + TEST_DOSSIER_TEMPLATE_ID)) + when(dictionaryClient.getDictionaryForType(HINT_ONLY + ":" + TEST_DOSSIER_TEMPLATE_ID)) .thenReturn(getDictionaryResponse(HINT_ONLY, false)); - when(dictionaryClient.getDictionaryForType(MUST_REDACT+ ":" + TEST_DOSSIER_TEMPLATE_ID)) + when(dictionaryClient.getDictionaryForType(MUST_REDACT + ":" + TEST_DOSSIER_TEMPLATE_ID)) .thenReturn(getDictionaryResponse(MUST_REDACT, false)); - when(dictionaryClient.getDictionaryForType(PUBLISHED_INFORMATION+ ":" + TEST_DOSSIER_TEMPLATE_ID)) + when(dictionaryClient.getDictionaryForType(PUBLISHED_INFORMATION + ":" + TEST_DOSSIER_TEMPLATE_ID)) .thenReturn(getDictionaryResponse(PUBLISHED_INFORMATION, false)); - when(dictionaryClient.getDictionaryForType(TEST_METHOD+ ":" + TEST_DOSSIER_TEMPLATE_ID)) + when(dictionaryClient.getDictionaryForType(TEST_METHOD + ":" + TEST_DOSSIER_TEMPLATE_ID)) .thenReturn(getDictionaryResponse(TEST_METHOD, false)); - when(dictionaryClient.getDictionaryForType(PII+ ":" + TEST_DOSSIER_TEMPLATE_ID)).thenReturn(getDictionaryResponse(PII, false)); - when(dictionaryClient.getDictionaryForType(RECOMMENDATION_AUTHOR+ ":" + TEST_DOSSIER_TEMPLATE_ID)) + when(dictionaryClient.getDictionaryForType(PII + ":" + TEST_DOSSIER_TEMPLATE_ID)).thenReturn(getDictionaryResponse(PII, false)); + when(dictionaryClient.getDictionaryForType(RECOMMENDATION_AUTHOR + ":" + TEST_DOSSIER_TEMPLATE_ID)) .thenReturn(getDictionaryResponse(RECOMMENDATION_AUTHOR, false)); - when(dictionaryClient.getDictionaryForType(RECOMMENDATION_ADDRESS+ ":" + TEST_DOSSIER_TEMPLATE_ID)) + when(dictionaryClient.getDictionaryForType(RECOMMENDATION_ADDRESS + ":" + TEST_DOSSIER_TEMPLATE_ID)) .thenReturn(getDictionaryResponse(RECOMMENDATION_ADDRESS, false)); - when(dictionaryClient.getDictionaryForType(FALSE_POSITIVE+ ":" + TEST_DOSSIER_TEMPLATE_ID)) + when(dictionaryClient.getDictionaryForType(FALSE_POSITIVE + ":" + TEST_DOSSIER_TEMPLATE_ID)) .thenReturn(getDictionaryResponse(FALSE_POSITIVE, false)); - when(dictionaryClient.getDictionaryForType(PURITY+ ":" + TEST_DOSSIER_TEMPLATE_ID)) + when(dictionaryClient.getDictionaryForType(PURITY + ":" + TEST_DOSSIER_TEMPLATE_ID)) .thenReturn(getDictionaryResponse(PURITY, false)); - when(dictionaryClient.getDictionaryForType(IMAGE+ ":" + TEST_DOSSIER_TEMPLATE_ID)).thenReturn(getDictionaryResponse(IMAGE, false)); - when(dictionaryClient.getDictionaryForType(OCR+ ":" + TEST_DOSSIER_TEMPLATE_ID)).thenReturn(getDictionaryResponse(OCR, false)); - when(dictionaryClient.getDictionaryForType(LOGO+ ":" + TEST_DOSSIER_TEMPLATE_ID)).thenReturn(getDictionaryResponse(LOGO, false)); - when(dictionaryClient.getDictionaryForType(SIGNATURE+ ":" + TEST_DOSSIER_TEMPLATE_ID)) + when(dictionaryClient.getDictionaryForType(IMAGE + ":" + TEST_DOSSIER_TEMPLATE_ID)).thenReturn(getDictionaryResponse(IMAGE, false)); + when(dictionaryClient.getDictionaryForType(OCR + ":" + TEST_DOSSIER_TEMPLATE_ID)).thenReturn(getDictionaryResponse(OCR, false)); + when(dictionaryClient.getDictionaryForType(LOGO + ":" + TEST_DOSSIER_TEMPLATE_ID)).thenReturn(getDictionaryResponse(LOGO, false)); + when(dictionaryClient.getDictionaryForType(SIGNATURE + ":" + TEST_DOSSIER_TEMPLATE_ID)) .thenReturn(getDictionaryResponse(SIGNATURE, false)); - when(dictionaryClient.getDictionaryForType(FORMULA+ ":" + TEST_DOSSIER_TEMPLATE_ID)) + when(dictionaryClient.getDictionaryForType(FORMULA + ":" + TEST_DOSSIER_TEMPLATE_ID)) .thenReturn(getDictionaryResponse(FORMULA, false)); - when(dictionaryClient.getDictionaryForType(DOSSIER_REDACTIONS+ ":" + TEST_DOSSIER_TEMPLATE_ID)).thenReturn(getDictionaryResponse(DOSSIER_REDACTIONS, true)); + when(dictionaryClient.getDictionaryForType(DOSSIER_REDACTIONS + ":" + TEST_DOSSIER_TEMPLATE_ID)).thenReturn(getDictionaryResponse(DOSSIER_REDACTIONS, true)); when(dictionaryClient.getColors(TEST_DOSSIER_TEMPLATE_ID)).thenReturn(colors); } @@ -527,7 +496,7 @@ public class RedactionIntegrationTest { private Type getDictionaryResponse(String type, boolean isDossierDictionary) { return Type.builder() - .id(type + ":" +TEST_DOSSIER_TEMPLATE_ID) + .id(type + ":" + TEST_DOSSIER_TEMPLATE_ID) .hexColor(typeColorMap.get(type)) .entries(isDossierDictionary ? toDictionaryEntry(dossierDictionary.get(type)) : toDictionaryEntry(dictionary .get(type))) @@ -776,7 +745,8 @@ public class RedactionIntegrationTest { ManualRedactions manualRedactions = new ManualRedactions(); manualRedactions.setImageRecategorization(Set.of(ManualImageRecategorization.builder() - .id(new AnnotationId("37eee3e9d589a5cc529bfec38c3ba479", "fileId")) + .annotationId("37eee3e9d589a5cc529bfec38c3ba479") + .fileId("fileId") .status(AnnotationStatus.APPROVED) .type("signature") .build())); @@ -860,11 +830,13 @@ public class RedactionIntegrationTest { .text("This is a comment test") .build(); manualRedactions.setIdsToRemove(Set.of(IdRemoval.builder() - .id(new AnnotationId("5b940b2cb401ed9f5be6fc24f6e77bcf", "fileId")) + .annotationId("5b940b2cb401ed9f5be6fc24f6e77bcf") + .fileId("fileId") .status(AnnotationStatus.DECLINED) .build())); manualRedactions.setForceRedactions(Set.of(ManualForceRedaction.builder() - .id(new AnnotationId("675eba69b0c2917de55462c817adaa05", "fileId")) + .annotationId("675eba69b0c2917de55462c817adaa05") + .fileId("fileId") .legalBasis("Something") .status(AnnotationStatus.APPROVED) .build())); @@ -874,18 +846,19 @@ public class RedactionIntegrationTest { manualRedactions.getComments().put(manualAddId, List.of(comment)); ManualRedactionEntry manualRedactionEntry = new ManualRedactionEntry(); - manualRedactionEntry.setId(new AnnotationId(manualAddId, "fileId")); + manualRedactionEntry.setAnnotationId(manualAddId); + manualRedactionEntry.setFileId("fileId"); manualRedactionEntry.setStatus(AnnotationStatus.REQUESTED); manualRedactionEntry.setTypeId("name:" + TEST_DOSSIER_TEMPLATE_ID); manualRedactionEntry.setValue("O'Loughlin C.K."); manualRedactionEntry.setReason("Manual Redaction"); manualRedactionEntry.setPositions(List.of(Rectangle - .builder() - .topLeftX(375.61096f) - .topLeftY(241.282f) - .width(7.648041f) - .height(43.72262f) - .page(1).build() + .builder() + .topLeftX(375.61096f) + .topLeftY(241.282f) + .width(7.648041f) + .height(43.72262f) + .page(1).build() , Rectangle .builder() .topLeftX(384.83517f) @@ -893,7 +866,7 @@ public class RedactionIntegrationTest { .width(7.648041f) .height(17.043358f) .page(1).build()) - ); + ); // manualRedactions.getEntriesToAdd().add(manualRedactionEntry); @@ -904,11 +877,13 @@ public class RedactionIntegrationTest { manualRedactions.getEntriesToAdd().add(manualRedactionEntry); manualRedactions.setIdsToRemove(Set.of(IdRemoval.builder() - .id(new AnnotationId("5b940b2cb401ed9f5be6fc24f6e77bcf", "fileId")) + .annotationId("5b940b2cb401ed9f5be6fc24f6e77bcf") + .fileId("fileId") .status(AnnotationStatus.APPROVED) .build())); manualRedactions.setLegalBasisChanges((Set.of(ManualLegalBasisChange.builder() - .id(new AnnotationId("675eba69b0c2917de55462c817adaa05", "fileId")) + .annotationId("675eba69b0c2917de55462c817adaa05") + .fileId("fileId") .legalBasis("Manual Legal Basis Change") .status(AnnotationStatus.APPROVED) .build())));