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 d16f9488..90d1bfca 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.279.0") + implementation("com.iqser.red.service:persistence-service-internal-api-v1:2.320.0") } 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 4dd49196..85c6583e 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.279.0" +val persistenceServiceVersion = "2.320.0" 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/component/Entity.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/model/component/Entity.java index 09343eec..dd7cfed4 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/model/component/Entity.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/model/component/Entity.java @@ -1,6 +1,7 @@ package com.iqser.red.service.redaction.v1.server.model.component; import java.util.List; +import java.util.Optional; import java.util.Set; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Change; @@ -87,7 +88,7 @@ public class Entity { .textAfter(e.getTextAfter()) .startOffset(e.getStartOffset()) .endOffset(e.getEndOffset()) - .length(e.getValue().length()) + .length(Optional.ofNullable(e.getValue()).orElse("").length()) .imageHasTransparency(e.isImageHasTransparency()) .isDictionaryEntry(e.isDictionaryEntry()) .isDossierDictionaryEntry(e.isDossierDictionaryEntry()) diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/ImportedRedactionService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/ImportedRedactionService.java index 2c31b51d..f2793281 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/ImportedRedactionService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/ImportedRedactionService.java @@ -8,6 +8,7 @@ import java.util.HashMap; import java.util.HashSet; import java.util.List; import java.util.Map; +import java.util.Optional; import java.util.Set; import java.util.stream.Collectors; @@ -92,16 +93,16 @@ public class ImportedRedactionService { // add all changes to entity log entityLog.getEntityLogEntry().addAll(newEntityLogsForImportedEntities); // remove all intersections and update with merged imported redactions - calculateIntersections(newEntityLogsForImportedEntities, entityLog); + calculateIntersections(newEntityLogsForImportedEntities, entityLog, analyzeRequest.getAnalysisNumber()); } - private void calculateIntersections(List importedRedactionAndMergedEntries, EntityLog entityLog) { + private void calculateIntersections(List importedRedactionAndMergedEntries, EntityLog entityLog, int analysisNumber) { if (!importedRedactionAndMergedEntries.isEmpty()) { // imported redactions present, intersections must be added with merged imported redactions Map> importedRedactionsMap = mapImportedRedactionsOnPage(importedRedactionAndMergedEntries); entityLog.getEntityLogEntry().stream().filter(entry -> !entry.getType().equals(ImportedRedactionService.IMPORTED_REDACTION_TYPE)).forEach(redactionLogEntry -> { redactionLogEntry.setImportedRedactionIntersections(new HashSet<>()); - addIntersections(redactionLogEntry, importedRedactionsMap); + addIntersections(redactionLogEntry, importedRedactionsMap, analysisNumber); }); } } @@ -141,12 +142,12 @@ public class ImportedRedactionService { .id(importedRedaction.getId()) .type(IMPORTED_REDACTION_TYPE) .entryType(EntryType.ENTITY) + .value(Optional.ofNullable(importedRedaction.getValue()).orElse("")) .imported(true) .state(EntryState.APPLIED) .positions(importedRedaction.getPositions()) .color(getColor(IMPORTED_REDACTION_TYPE, dossierTemplateId)) .containingNodeId(Collections.emptyList()) - .value("") .build(); redactionLogEntry.getChanges().add(new Change(1, ChangeType.ADDED, now)); initialImportedRedactionsEntityLogEntries.add(redactionLogEntry); @@ -202,7 +203,7 @@ public class ImportedRedactionService { return importedRedactionsMap; } - public void addIntersections(EntityLogEntry entityLogEntry, Map> importedRedactionsMap) { + public void addIntersections(EntityLogEntry entityLogEntry, Map> importedRedactionsMap, int analysisNumber) { for (Position rectangle : entityLogEntry.getPositions()) { var normalizedRectangle = normalize(rectangle); @@ -215,6 +216,11 @@ public class ImportedRedactionService { entityLogEntry.setImportedRedactionIntersections(new HashSet<>()); } entityLogEntry.getImportedRedactionIntersections().add(importedRedactionLogEntry.getId()); + + if(entityLogEntry.getState() != EntryState.REMOVED) { + entityLogEntry.setState(EntryState.REMOVED); + entityLogEntry.getChanges().add(new Change(analysisNumber, ChangeType.REMOVED, OffsetDateTime.now())); + } } } }