diff --git a/redaction-service-v1/redaction-service-api-v1/build.gradle.kts b/redaction-service-v1/redaction-service-api-v1/build.gradle.kts index de4ed8bd..588ff571 100644 --- a/redaction-service-v1/redaction-service-api-v1/build.gradle.kts +++ b/redaction-service-v1/redaction-service-api-v1/build.gradle.kts @@ -7,7 +7,7 @@ description = "redaction-service-api-v1" dependencies { implementation("org.springframework:spring-web:6.0.12") - implementation("com.iqser.red.service:persistence-service-internal-api-v1:2.338.0") + implementation("com.iqser.red.service:persistence-service-internal-api-v1:RED-8480-2") } publishing { diff --git a/redaction-service-v1/redaction-service-server-v1/build.gradle.kts b/redaction-service-v1/redaction-service-server-v1/build.gradle.kts index a45fbb68..2bf191b6 100644 --- a/redaction-service-v1/redaction-service-server-v1/build.gradle.kts +++ b/redaction-service-v1/redaction-service-server-v1/build.gradle.kts @@ -16,7 +16,7 @@ val layoutParserVersion = "0.86.0" val jacksonVersion = "2.15.2" val droolsVersion = "9.44.0.Final" val pdfBoxVersion = "3.0.0" -val persistenceServiceVersion = "2.338.0" +val persistenceServiceVersion = "RED-8480-2" val springBootStarterVersion = "3.1.5" configurations { diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/model/document/entity/ManualChangeOverwrite.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/model/document/entity/ManualChangeOverwrite.java index d2e8059c..7fb76a2f 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/model/document/entity/ManualChangeOverwrite.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/model/document/entity/ManualChangeOverwrite.java @@ -27,12 +27,12 @@ import lombok.experimental.FieldDefaults; public class ManualChangeOverwrite { private static final Map, String> MANUAL_CHANGE_DESCRIPTIONS = Map.of(// - ManualRedactionEntry.class, "created by manual change", // - ManualLegalBasisChange.class, "legal basis was manually changed", // - ManualResizeRedaction.class, "resized by manual override", // - ManualForceRedaction.class, "forced by manual override", // - IdRemoval.class, "removed by manual override", // - ManualRecategorization.class, "recategorized by manual override"); + ManualRedactionEntry.class, "created by manual change", // + ManualLegalBasisChange.class, "legal basis was manually changed", // + ManualResizeRedaction.class, "resized by manual override", // + ManualForceRedaction.class, "forced by manual override", // + IdRemoval.class, "removed by manual override", // + ManualRecategorization.class, "recategorized by manual override"); List manualChanges = new LinkedList<>(); boolean changed; @@ -80,7 +80,8 @@ public class ManualChangeOverwrite { manualChanges.sort(Comparator.comparing(BaseAnnotation::getRequestDate)); updateFields(manualChanges); // make list unmodifiable. - return manualChanges.stream().toList(); + return manualChanges.stream() + .toList(); } @@ -121,14 +122,18 @@ public class ManualChangeOverwrite { resized = true; // This is only for not found Manual Entities. value = manualResizeRedaction.getValue(); - positions = manualResizeRedaction.getPositions().stream().map(RectangleWithPage::fromAnnotationRectangle).toList(); + positions = manualResizeRedaction.getPositions() + .stream() + .map(RectangleWithPage::fromAnnotationRectangle) + .toList(); } if (manualChange instanceof ManualRecategorization recategorization) { - // recategorization logic happens in ManualChangesApplicationService. recategorized = true; - // this is only relevant for ManualEntities. Image and TextEntity is recategorized in the ManualChangesApplicationService. type = recategorization.getType(); + if (!recategorization.getLegalBasis().isEmpty()) { + legalBasis = recategorization.getLegalBasis(); + } } descriptions.add(MANUAL_CHANGE_DESCRIPTIONS.get(manualChange.getClass())); diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/ManualChangeFactory.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/ManualChangeFactory.java index 0add07c9..d53701ce 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/ManualChangeFactory.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/ManualChangeFactory.java @@ -4,8 +4,8 @@ import java.time.OffsetDateTime; import java.util.List; import java.util.stream.Collectors; -import org.springframework.stereotype.Service; - +import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualChange; +import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualRedactionType; 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.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualForceRedaction; @@ -13,8 +13,6 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualRecategorization; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualRedactionEntry; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.ManualResizeRedaction; -import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualChange; -import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ManualRedactionType; import lombok.experimental.UtilityClass; @@ -23,7 +21,9 @@ public class ManualChangeFactory { public List toManualChangeList(List manualChanges, boolean isHint) { - return manualChanges.stream().map(baseAnnotation -> toManualChange(baseAnnotation, isHint)).collect(Collectors.toList()); + return manualChanges.stream() + .map(baseAnnotation -> toManualChange(baseAnnotation, isHint)) + .collect(Collectors.toList()); } @@ -37,7 +37,8 @@ public class ManualChangeFactory { } else if (baseAnnotation instanceof ManualForceRedaction) { manualChange.withManualRedactionType(isHint ? ManualRedactionType.FORCE_HINT : ManualRedactionType.FORCE_REDACT); } else if (baseAnnotation instanceof ManualResizeRedaction manualResizeRedact) { - manualChange.withManualRedactionType(manualResizeRedact.getUpdateDictionary() ? ManualRedactionType.RESIZE_IN_DICTIONARY : ManualRedactionType.RESIZE).withChange("value", manualResizeRedact.getValue()); + manualChange.withManualRedactionType(manualResizeRedact.getUpdateDictionary() ? ManualRedactionType.RESIZE_IN_DICTIONARY : ManualRedactionType.RESIZE) + .withChange("value", manualResizeRedact.getValue()); } else if (baseAnnotation instanceof ManualRedactionEntry manualRedactionEntry) { manualChange.withManualRedactionType(manualRedactionEntry.isAddToDictionary() ? ManualRedactionType.ADD_TO_DICTIONARY : ManualRedactionType.ADD_LOCALLY) .withChange("value", manualRedactionEntry.getValue()); diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/document/SectionFinderService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/document/SectionFinderService.java index f8f4e47c..a78360b8 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/document/SectionFinderService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/document/SectionFinderService.java @@ -57,18 +57,23 @@ public class SectionFinderService { if (entry.getContainingNodeId().isEmpty()) { continue; // Empty list means either Entity has not been found or it is between main sections. Thus, this might lead to wrong reanalysis. } - sectionsToReanalyse.add(entry.getContainingNodeId().get(0)); + sectionsToReanalyse.add(entry.getContainingNodeId() + .get(0)); } } - var dictionaryIncrementsSearch = new SearchImplementation(dictionaryIncrement.getValues().stream().map(DictionaryIncrementValue::getValue).collect(Collectors.toList()), - true); + var dictionaryIncrementsSearch = new SearchImplementation(dictionaryIncrement.getValues() + .stream() + .map(DictionaryIncrementValue::getValue) + .toList(), true); - document.streamChildren().forEach(mainNode -> { - if (dictionaryIncrementsSearch.atLeastOneMatches(mainNode.getTextBlock().getSearchText())) { - sectionsToReanalyse.add(mainNode.getTreeId().get(0)); - } - }); + document.streamChildren() + .forEach(mainNode -> { + if (dictionaryIncrementsSearch.atLeastOneMatches(mainNode.getTextBlock().getSearchText())) { + sectionsToReanalyse.add(mainNode.getTreeId() + .get(0)); + } + }); Set relevantPagesForReanalysis = getRelevantPageNumbersForAddRedactions(analyzeRequest); relevantPagesForReanalysis.addAll(getRelevantPageNumbersForImportedRedactions(importedRedactions, relevantManuallyModifiedAnnotationIds)); @@ -87,8 +92,11 @@ public class SectionFinderService { return document.getPages() .stream() .filter(page -> relevantPagesForReanalysis.contains(page.getNumber())) - .flatMap(page -> Stream.concat(page.getMainBody().stream().filter(node -> node.getType().equals(NodeType.SECTION)), Stream.of(page.getHeader(), page.getFooter()))) - .map(node -> node.getTreeId().get(0)) + .flatMap(page -> Stream.concat(page.getMainBody() + .stream() + .filter(node -> node.getType().equals(NodeType.SECTION)), Stream.of(page.getHeader(), page.getFooter()))) + .map(node -> node.getTreeId() + .get(0)) .toList(); } @@ -99,8 +107,7 @@ public class SectionFinderService { return Collections.emptySet(); } - return analyzeRequest.getManualRedactions() - .getEntriesToAdd() + return analyzeRequest.getManualRedactions().getEntriesToAdd() .stream() .filter(addRedaction -> !(addRedaction.isAddToDictionary() || addRedaction.isAddToDossierDictionary())) .map(ManualRedactionEntry::getPositions) @@ -132,11 +139,22 @@ public class SectionFinderService { return new HashSet<>(); } - return Stream.concat(manualRedactions.getResizeRedactions().stream().map(ManualResizeRedaction::getAnnotationId), - Stream.concat(manualRedactions.getLegalBasisChanges().stream().map(ManualLegalBasisChange::getAnnotationId), - Stream.concat(manualRedactions.getRecategorizations().stream().map(ManualRecategorization::getAnnotationId), - Stream.concat(manualRedactions.getIdsToRemove().stream().map(IdRemoval::getAnnotationId), - manualRedactions.getForceRedactions().stream().map(ManualForceRedaction::getAnnotationId))))).collect(Collectors.toSet()); + return Stream.concat(manualRedactions.getResizeRedactions() + .stream() + .map(ManualResizeRedaction::getAnnotationId), + Stream.concat(manualRedactions.getLegalBasisChanges() + .stream() + .map(ManualLegalBasisChange::getAnnotationId), + Stream.concat(manualRedactions.getRecategorizations() + .stream() + .map(ManualRecategorization::getAnnotationId), + Stream.concat(manualRedactions.getIdsToRemove() + .stream() + .map(IdRemoval::getAnnotationId), + manualRedactions.getForceRedactions() + .stream() + .map(ManualForceRedaction::getAnnotationId))))) + .collect(Collectors.toSet()); } }