RED-5449: Wrong behaviour of imported redactions only from PREVIEW-File

This commit is contained in:
Maverick Studer 2024-01-24 11:55:26 +01:00
parent 23a3d08e85
commit f84f63cc64
4 changed files with 15 additions and 8 deletions

View File

@ -7,7 +7,7 @@ description = "redaction-service-api-v1"
dependencies { dependencies {
implementation("org.springframework:spring-web:6.0.12") 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 { publishing {

View File

@ -16,7 +16,7 @@ val layoutParserVersion = "0.86.0"
val jacksonVersion = "2.15.2" val jacksonVersion = "2.15.2"
val droolsVersion = "9.44.0.Final" val droolsVersion = "9.44.0.Final"
val pdfBoxVersion = "3.0.0" val pdfBoxVersion = "3.0.0"
val persistenceServiceVersion = "2.279.0" val persistenceServiceVersion = "2.320.0"
val springBootStarterVersion = "3.1.5" val springBootStarterVersion = "3.1.5"
configurations { configurations {

View File

@ -1,6 +1,7 @@
package com.iqser.red.service.redaction.v1.server.model.component; package com.iqser.red.service.redaction.v1.server.model.component;
import java.util.List; import java.util.List;
import java.util.Optional;
import java.util.Set; import java.util.Set;
import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Change; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.Change;
@ -87,7 +88,7 @@ public class Entity {
.textAfter(e.getTextAfter()) .textAfter(e.getTextAfter())
.startOffset(e.getStartOffset()) .startOffset(e.getStartOffset())
.endOffset(e.getEndOffset()) .endOffset(e.getEndOffset())
.length(e.getValue().length()) .length(Optional.ofNullable(e.getValue()).orElse("").length())
.imageHasTransparency(e.isImageHasTransparency()) .imageHasTransparency(e.isImageHasTransparency())
.isDictionaryEntry(e.isDictionaryEntry()) .isDictionaryEntry(e.isDictionaryEntry())
.isDossierDictionaryEntry(e.isDossierDictionaryEntry()) .isDossierDictionaryEntry(e.isDossierDictionaryEntry())

View File

@ -8,6 +8,7 @@ import java.util.HashMap;
import java.util.HashSet; import java.util.HashSet;
import java.util.List; import java.util.List;
import java.util.Map; import java.util.Map;
import java.util.Optional;
import java.util.Set; import java.util.Set;
import java.util.stream.Collectors; import java.util.stream.Collectors;
@ -92,16 +93,16 @@ public class ImportedRedactionService {
// add all changes to entity log // add all changes to entity log
entityLog.getEntityLogEntry().addAll(newEntityLogsForImportedEntities); entityLog.getEntityLogEntry().addAll(newEntityLogsForImportedEntities);
// remove all intersections and update with merged imported redactions // remove all intersections and update with merged imported redactions
calculateIntersections(newEntityLogsForImportedEntities, entityLog); calculateIntersections(newEntityLogsForImportedEntities, entityLog, analyzeRequest.getAnalysisNumber());
} }
private void calculateIntersections(List<EntityLogEntry> importedRedactionAndMergedEntries, EntityLog entityLog) { private void calculateIntersections(List<EntityLogEntry> importedRedactionAndMergedEntries, EntityLog entityLog, int analysisNumber) {
if (!importedRedactionAndMergedEntries.isEmpty()) { if (!importedRedactionAndMergedEntries.isEmpty()) {
// imported redactions present, intersections must be added with merged imported redactions // imported redactions present, intersections must be added with merged imported redactions
Map<Integer, List<EntityLogEntry>> importedRedactionsMap = mapImportedRedactionsOnPage(importedRedactionAndMergedEntries); Map<Integer, List<EntityLogEntry>> importedRedactionsMap = mapImportedRedactionsOnPage(importedRedactionAndMergedEntries);
entityLog.getEntityLogEntry().stream().filter(entry -> !entry.getType().equals(ImportedRedactionService.IMPORTED_REDACTION_TYPE)).forEach(redactionLogEntry -> { entityLog.getEntityLogEntry().stream().filter(entry -> !entry.getType().equals(ImportedRedactionService.IMPORTED_REDACTION_TYPE)).forEach(redactionLogEntry -> {
redactionLogEntry.setImportedRedactionIntersections(new HashSet<>()); redactionLogEntry.setImportedRedactionIntersections(new HashSet<>());
addIntersections(redactionLogEntry, importedRedactionsMap); addIntersections(redactionLogEntry, importedRedactionsMap, analysisNumber);
}); });
} }
} }
@ -141,12 +142,12 @@ public class ImportedRedactionService {
.id(importedRedaction.getId()) .id(importedRedaction.getId())
.type(IMPORTED_REDACTION_TYPE) .type(IMPORTED_REDACTION_TYPE)
.entryType(EntryType.ENTITY) .entryType(EntryType.ENTITY)
.value(Optional.ofNullable(importedRedaction.getValue()).orElse(""))
.imported(true) .imported(true)
.state(EntryState.APPLIED) .state(EntryState.APPLIED)
.positions(importedRedaction.getPositions()) .positions(importedRedaction.getPositions())
.color(getColor(IMPORTED_REDACTION_TYPE, dossierTemplateId)) .color(getColor(IMPORTED_REDACTION_TYPE, dossierTemplateId))
.containingNodeId(Collections.emptyList()) .containingNodeId(Collections.emptyList())
.value("")
.build(); .build();
redactionLogEntry.getChanges().add(new Change(1, ChangeType.ADDED, now)); redactionLogEntry.getChanges().add(new Change(1, ChangeType.ADDED, now));
initialImportedRedactionsEntityLogEntries.add(redactionLogEntry); initialImportedRedactionsEntityLogEntries.add(redactionLogEntry);
@ -202,7 +203,7 @@ public class ImportedRedactionService {
return importedRedactionsMap; return importedRedactionsMap;
} }
public void addIntersections(EntityLogEntry entityLogEntry, Map<Integer, List<EntityLogEntry>> importedRedactionsMap) { public void addIntersections(EntityLogEntry entityLogEntry, Map<Integer, List<EntityLogEntry>> importedRedactionsMap, int analysisNumber) {
for (Position rectangle : entityLogEntry.getPositions()) { for (Position rectangle : entityLogEntry.getPositions()) {
var normalizedRectangle = normalize(rectangle); var normalizedRectangle = normalize(rectangle);
@ -215,6 +216,11 @@ public class ImportedRedactionService {
entityLogEntry.setImportedRedactionIntersections(new HashSet<>()); entityLogEntry.setImportedRedactionIntersections(new HashSet<>());
} }
entityLogEntry.getImportedRedactionIntersections().add(importedRedactionLogEntry.getId()); entityLogEntry.getImportedRedactionIntersections().add(importedRedactionLogEntry.getId());
if(entityLogEntry.getState() != EntryState.REMOVED) {
entityLogEntry.setState(EntryState.REMOVED);
entityLogEntry.getChanges().add(new Change(analysisNumber, ChangeType.REMOVED, OffsetDateTime.now()));
}
} }
} }
} }