From 00f2a0cb8238e3c9127014eeddcea6f164b18d06 Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Tue, 19 Apr 2022 14:32:23 +0300 Subject: [PATCH] soft delete types RED-3880 --- .../redaction-service-api-v1/pom.xml | 2 +- .../controller/RedactionController.java | 50 +++++++------------ .../service/RedactionLogMergeService.java | 40 ++++++++++----- 3 files changed, 48 insertions(+), 44 deletions(-) diff --git a/redaction-service-v1/redaction-service-api-v1/pom.xml b/redaction-service-v1/redaction-service-api-v1/pom.xml index dfbbcf4d..7cfe7a06 100644 --- a/redaction-service-v1/redaction-service-api-v1/pom.xml +++ b/redaction-service-v1/redaction-service-api-v1/pom.xml @@ -12,7 +12,7 @@ redaction-service-api-v1 - 1.85.0 + 1.143.0 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 a5f6c95d..1e711ae0 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,42 +1,30 @@ package com.iqser.red.service.redaction.v1.server.controller; -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.stream.Collectors; - +import com.iqser.red.service.persistence.service.v1.api.model.annotations.ManualRedactions; +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; +import com.iqser.red.service.redaction.v1.server.classification.model.Page; +import com.iqser.red.service.redaction.v1.server.exception.NotFoundException; +import com.iqser.red.service.redaction.v1.server.exception.RedactionException; +import com.iqser.red.service.redaction.v1.server.redaction.service.*; +import com.iqser.red.service.redaction.v1.server.segmentation.PdfSegmentationService; +import com.iqser.red.service.redaction.v1.server.storage.RedactionStorageService; +import com.iqser.red.service.redaction.v1.server.tableextraction.model.AbstractTextContainer; +import com.iqser.red.service.redaction.v1.server.tableextraction.model.Table; +import com.iqser.red.service.redaction.v1.server.visualization.service.PdfVisualisationService; +import lombok.RequiredArgsConstructor; +import lombok.extern.slf4j.Slf4j; import org.apache.pdfbox.io.MemoryUsageSetting; import org.apache.pdfbox.pdmodel.PDDocument; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RestController; -import com.iqser.red.service.persistence.service.v1.api.model.annotations.ManualRedactions; -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType; -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.RedactionLog; -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.SectionArea; -import com.iqser.red.service.redaction.v1.model.SectionGrid; -import com.iqser.red.service.redaction.v1.resources.RedactionResource; -import com.iqser.red.service.redaction.v1.server.classification.model.Document; -import com.iqser.red.service.redaction.v1.server.classification.model.Page; -import com.iqser.red.service.redaction.v1.server.exception.NotFoundException; -import com.iqser.red.service.redaction.v1.server.exception.RedactionException; -import com.iqser.red.service.redaction.v1.server.redaction.service.AnnotationService; -import com.iqser.red.service.redaction.v1.server.redaction.service.DictionaryService; -import com.iqser.red.service.redaction.v1.server.redaction.service.DroolsExecutionService; -import com.iqser.red.service.redaction.v1.server.redaction.service.ManualRedactionSurroundingTextService; -import com.iqser.red.service.redaction.v1.server.redaction.service.RedactionLogMergeService; -import com.iqser.red.service.redaction.v1.server.segmentation.PdfSegmentationService; -import com.iqser.red.service.redaction.v1.server.storage.RedactionStorageService; -import com.iqser.red.service.redaction.v1.server.tableextraction.model.AbstractTextContainer; -import com.iqser.red.service.redaction.v1.server.tableextraction.model.Table; -import com.iqser.red.service.redaction.v1.server.visualization.service.PdfVisualisationService; - -import lombok.RequiredArgsConstructor; -import lombok.extern.slf4j.Slf4j; +import java.io.ByteArrayOutputStream; +import java.io.IOException; +import java.util.stream.Collectors; @Slf4j @RestController 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 58b9b692..e61f8191 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 @@ -6,6 +6,8 @@ import com.iqser.red.service.persistence.service.v1.api.model.annotations.Manual import com.iqser.red.service.persistence.service.v1.api.model.annotations.entitymapped.*; 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.Type; +import com.iqser.red.service.redaction.v1.model.Point; +import com.iqser.red.service.redaction.v1.model.Rectangle; import com.iqser.red.service.redaction.v1.model.*; import lombok.AllArgsConstructor; import lombok.Data; @@ -13,8 +15,9 @@ import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import org.springframework.stereotype.Service; -import java.awt.Color; +import java.awt.*; import java.time.OffsetDateTime; +import java.util.List; import java.util.*; import java.util.stream.Collectors; @@ -48,7 +51,7 @@ public class RedactionLogMergeService { .filter(mr -> entry.getId().equals(mr.getId())) .collect(Collectors.toList()), entry, types, colors); - if(entry.isImported() && !entry.isRedacted()){ + if (entry.isImported() && !entry.isRedacted()) { skippedImportedRedactions.add(entry.getId()); } @@ -67,7 +70,7 @@ public class RedactionLogMergeService { Set processedIds = new HashSet<>(); redactionLog.getRedactionLogEntry().removeIf(entry -> { - if(entry.getImportedRedactionIntersections() != null) { + if (entry.getImportedRedactionIntersections() != null) { entry.getImportedRedactionIntersections().removeAll(skippedImportedRedactions); if (!entry.getImportedRedactionIntersections().isEmpty() && (!entry.isImage() || entry.isImage() && !(entry.getType().equals("image") || entry.getType().equals("ocr")))) { return true; @@ -379,20 +382,25 @@ public class RedactionLogMergeService { private float[] getColor(List types, String type) { - Optional foundType = types.stream().filter(t -> t.getType().equals(type)).findFirst(); - if (foundType.isPresent()){ - return convertColor(foundType.get().getHexColor()); + var matchingTypes = getMatchingTypes(types, type); + Optional foundAndNotDeletedType = matchingTypes.stream().filter(t -> !isDeletedType(t)).findFirst(); + if (foundAndNotDeletedType.isPresent()) { + return convertColor(foundAndNotDeletedType.get().getHexColor()); } - return convertColor("#9398a0"); + Optional firstDeletedType = matchingTypes.stream().findFirst(); + return firstDeletedType.map(value -> convertColor(value.getHexColor())).orElseGet(() -> convertColor("#9398a0")); } - boolean isHint(List types, String type){ - Optional foundType = types.stream().filter(t -> t.getType().equals(type)).findFirst(); - if (foundType.isPresent()){ - return foundType.get().isHint(); + boolean isHint(List types, String type) { + + var matchingTypes = getMatchingTypes(types, type); + Optional foundAndNotDeletedType = matchingTypes.stream().filter(t -> !isDeletedType(t)).findFirst(); + if (foundAndNotDeletedType.isPresent()) { + return foundAndNotDeletedType.get().isHint(); } - return false; + Optional firstDeletedType = matchingTypes.stream().findFirst(); + return firstDeletedType.map(Type::isHint).orElse(false); } @@ -402,6 +410,14 @@ public class RedactionLogMergeService { return new float[]{color.getRed() / 255f, color.getGreen() / 255f, color.getBlue() / 255f}; } + private List getMatchingTypes(List types, String type) { + return types.stream().filter(t -> t.getType().equals(type)).collect(Collectors.toList()); + } + + private boolean isDeletedType(Type type) { + return type.getSoftDeletedTime() != null; + } + @Data @AllArgsConstructor