diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/EntityChangeLogService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/EntityChangeLogService.java index e61f2ccd..1533b8b7 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/EntityChangeLogService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/service/EntityChangeLogService.java @@ -1,7 +1,6 @@ package com.iqser.red.service.redaction.v1.server.service; import java.time.OffsetDateTime; -import java.util.Comparator; import java.util.List; import java.util.Optional; import java.util.Set; @@ -13,7 +12,6 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.ChangeType; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntityLogEntry; import com.iqser.red.service.persistence.service.v1.api.shared.model.analysislog.entitylog.EntryState; -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.annotations.ManualRedactions; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.entitymapped.IdRemoval; @@ -26,10 +24,9 @@ import lombok.extern.slf4j.Slf4j; @Slf4j @Service @RequiredArgsConstructor -@FieldDefaults(makeFinal=true, level= AccessLevel.PRIVATE) +@FieldDefaults(makeFinal = true, level = AccessLevel.PRIVATE) public class EntityChangeLogService { - @Timed("redactmanager_computeChanges") public boolean computeChanges(List previousEntityLogEntries, List newEntityLogEntries, ManualRedactions manualRedactions, int analysisNumber) { @@ -42,7 +39,9 @@ public class EntityChangeLogService { boolean hasChanges = false; for (EntityLogEntry entityLogEntry : newEntityLogEntries) { - Optional optionalPreviousEntity = previousEntityLogEntries.stream().filter(entry -> entry.getId().equals(entityLogEntry.getId())).findAny(); + Optional optionalPreviousEntity = previousEntityLogEntries.stream() + .filter(entry -> entry.getId().equals(entityLogEntry.getId())) + .findAny(); if (optionalPreviousEntity.isEmpty()) { hasChanges = true; entityLogEntry.getChanges().add(new Change(analysisNumber, ChangeType.ADDED, now)); @@ -63,16 +62,20 @@ public class EntityChangeLogService { private void addRemovedEntriesAsRemoved(List previousEntityLogEntries, - List newEntityLogEntries, - ManualRedactions manualRedactions, - int analysisNumber, - OffsetDateTime now) { + List newEntityLogEntries, + ManualRedactions manualRedactions, + int analysisNumber, + OffsetDateTime now) { - Set existingIds = newEntityLogEntries.stream().map(EntityLogEntry::getId).collect(Collectors.toSet()); + Set existingIds = newEntityLogEntries.stream() + .map(EntityLogEntry::getId) + .collect(Collectors.toSet()); List removedEntries = previousEntityLogEntries.stream() .filter(entry -> !existingIds.contains(entry.getId())) .collect(Collectors.toList()); - var removedDossierRedaction = removedEntries.stream().filter(e -> e.getState() == EntryState.REMOVED && e.getType().equals("dossier_redaction")).toList(); + List removedDossierRedaction = removedEntries.stream() + .filter(e -> e.getState() == EntryState.REMOVED && e.getType().equals("dossier_redaction")) + .toList(); previousEntityLogEntries.removeAll(removedDossierRedaction); removedEntries.removeAll(removedDossierRedaction); removedEntries.forEach(entry -> entry.getChanges().add(new Change(analysisNumber, ChangeType.REMOVED, now))); @@ -88,13 +91,15 @@ public class EntityChangeLogService { return; } - manualRedactions.getIdsToRemove().stream() + manualRedactions.getIdsToRemove() + .stream() .filter(IdRemoval::isRemoveFromDictionary)// .filter(removed -> removed.getAnnotationId().equals(entry.getId()))// .findFirst()// .ifPresent(idRemove -> entry.getManualChanges().add(ManualChangeFactory.toManualChange(idRemove, false))); } + private ChangeType calculateChangeType(EntryState state, EntryState previousState) { if (state.equals(previousState)) { diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/resources/drools/acceptance_rules.drl b/redaction-service-v1/redaction-service-server-v1/src/test/resources/drools/acceptance_rules.drl index 79bfd519..7c3c9cb3 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/test/resources/drools/acceptance_rules.drl +++ b/redaction-service-v1/redaction-service-server-v1/src/test/resources/drools/acceptance_rules.drl @@ -700,6 +700,7 @@ rule "ETC.5.0: Skip dossier_redaction entries if confidentiality is 'confidentia end rule "ETC.5.1: Remove dossier_redaction entries if confidentiality is not 'confidential'" + salience 256 when not FileAttribute(label == "Confidentiality", value == "confidential") $dossierRedaction: TextEntity(type() == "dossier_redaction") diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/resources/drools/all_redact_manager_rules.drl b/redaction-service-v1/redaction-service-server-v1/src/test/resources/drools/all_redact_manager_rules.drl index 11c4f729..e971d5b2 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/test/resources/drools/all_redact_manager_rules.drl +++ b/redaction-service-v1/redaction-service-server-v1/src/test/resources/drools/all_redact_manager_rules.drl @@ -1158,6 +1158,7 @@ rule "ETC.5.0: Skip dossier_redaction entries if confidentiality is 'confidentia end rule "ETC.5.1: Remove dossier_redaction entries if confidentiality is not 'confidential'" + salience 256 when not FileAttribute(label == "Confidentiality", value == "confidential") $dossierRedaction: TextEntity(type() == "dossier_redaction") diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/resources/drools/rules.drl b/redaction-service-v1/redaction-service-server-v1/src/test/resources/drools/rules.drl index 0418db92..ec07fff7 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/test/resources/drools/rules.drl +++ b/redaction-service-v1/redaction-service-server-v1/src/test/resources/drools/rules.drl @@ -810,6 +810,7 @@ rule "ETC.5.0: Skip dossier_redaction entries if confidentiality is 'confidentia end rule "ETC.5.1: Remove dossier_redaction entries if confidentiality is not 'confidential'" + salience 256 when not FileAttribute(label == "Confidentiality", value == "confidential") $dossierRedaction: TextEntity(type() == "dossier_redaction") diff --git a/redaction-service-v1/redaction-service-server-v1/src/test/resources/performance/dictionaries/EFSA_sanitisation_GFL_v1/rules.drl b/redaction-service-v1/redaction-service-server-v1/src/test/resources/performance/dictionaries/EFSA_sanitisation_GFL_v1/rules.drl index 9cc2d93f..ecdd6e65 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/test/resources/performance/dictionaries/EFSA_sanitisation_GFL_v1/rules.drl +++ b/redaction-service-v1/redaction-service-server-v1/src/test/resources/performance/dictionaries/EFSA_sanitisation_GFL_v1/rules.drl @@ -459,6 +459,7 @@ rule "ETC.5.0: Skip dossier_redaction entries if confidentiality is 'confidentia end rule "ETC.5.1: Remove dossier_redaction entries if confidentiality is not 'confidential'" + salience 256 when not FileAttribute(label == "Confidentiality", value == "confidential") $dossierRedaction: TextEntity(type() == "dossier_redaction") diff --git a/redaction-service-v1/rules-management/src/main/resources/all_redact_manager_rules.drl b/redaction-service-v1/rules-management/src/main/resources/all_redact_manager_rules.drl index 9b8b529e..21c0f0b0 100644 --- a/redaction-service-v1/rules-management/src/main/resources/all_redact_manager_rules.drl +++ b/redaction-service-v1/rules-management/src/main/resources/all_redact_manager_rules.drl @@ -1167,6 +1167,7 @@ rule "ETC.5.0: Skip dossier_redaction entries if confidentiality is 'confidentia end rule "ETC.5.1: Remove dossier_redaction entries if confidentiality is not 'confidential'" + salience 256 when not FileAttribute(label == "Confidentiality", value == "confidential") $dossierRedaction: TextEntity(type() == "dossier_redaction")