From 8c7435f8b4ccf3614e361b6b4dc86678a57d4983 Mon Sep 17 00:00:00 2001 From: deiflaender Date: Wed, 30 Aug 2023 12:10:35 +0200 Subject: [PATCH] RED-7508: Fixed undelete of false positive entries at manual redaction at false positive to all dossiers --- .../service/DictionaryManagementService.java | 37 ++++----- .../service/ManualRedactionService.java | 61 ++++----------- .../persistence/EntryPersistenceService.java | 52 +++++++++---- .../FalsePositiveEntryRepository.java | 10 ++- .../FalseRecommendationEntryRepository.java | 10 ++- .../v1/server/integration/tests/FileTest.java | 75 +++++++------------ .../tests/ManualRedactionTest.java | 45 +++++------ 7 files changed, 123 insertions(+), 167 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryManagementService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryManagementService.java index 333e934db..60e096b89 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryManagementService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DictionaryManagementService.java @@ -1,23 +1,5 @@ package com.iqser.red.service.persistence.management.v1.processor.service; -import static com.iqser.red.service.persistence.management.v1.processor.utils.TypeIdUtils.getDossierIdFromTypeId; -import static com.iqser.red.service.persistence.management.v1.processor.utils.TypeIdUtils.getDossierTemplateIdFromTypeId; -import static com.iqser.red.service.persistence.management.v1.processor.utils.TypeIdUtils.getDosssierTemplateTypeIdFromTypeId; -import static com.iqser.red.service.persistence.management.v1.processor.utils.TypeIdUtils.isDossierTypeId; -import static java.util.stream.Collectors.toSet; - -import java.util.HashSet; -import java.util.List; -import java.util.Optional; -import java.util.Set; -import java.util.function.Predicate; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import org.apache.commons.collections4.CollectionUtils; -import org.apache.commons.lang3.StringUtils; -import org.springframework.stereotype.Service; - import com.iqser.red.service.dictionarymerge.commons.DictionaryEntry; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.BaseDictionaryEntry; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.TypeEntity; @@ -33,10 +15,23 @@ import com.iqser.red.service.persistence.management.v1.processor.validation.Dict import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.DictionaryEntryType; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.Type; import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; - import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.apache.commons.collections4.CollectionUtils; +import org.apache.commons.lang3.StringUtils; +import org.springframework.stereotype.Service; + +import java.util.HashSet; +import java.util.List; +import java.util.Optional; +import java.util.Set; +import java.util.function.Predicate; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +import static com.iqser.red.service.persistence.management.v1.processor.utils.TypeIdUtils.*; +import static java.util.stream.Collectors.toSet; @Slf4j @Service @@ -50,8 +45,8 @@ public class DictionaryManagementService { private final DossierService dossierService; - public List getAllEntriesInDossierTemplate(String dossierTemplateTypeId, String value){ - return MagicConverter.convert(entryPersistenceService.getAllEntriesInDossierTemplate(dossierTemplateTypeId, value),DictionaryEntry.class); + public List getAllEntriesInDossierTemplate(String dossierTemplateTypeId, String value, DictionaryEntryType dictionaryEntryType){ + return MagicConverter.convert(entryPersistenceService.getAllEntriesInDossierTemplate(dossierTemplateTypeId, value, dictionaryEntryType),DictionaryEntry.class); } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ManualRedactionService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ManualRedactionService.java index 6b5d74c49..0fbde10e3 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ManualRedactionService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ManualRedactionService.java @@ -1,68 +1,35 @@ package com.iqser.red.service.persistence.management.v1.processor.service; -import static com.iqser.red.service.persistence.management.v1.processor.utils.TypeIdUtils.toTypeId; - -import java.nio.charset.StandardCharsets; -import java.time.OffsetDateTime; -import java.time.temporal.ChronoUnit; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import java.util.Optional; -import java.util.Set; - -import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.stereotype.Service; -import org.springframework.transaction.annotation.Transactional; - -import com.fasterxml.jackson.databind.ObjectMapper; import com.google.common.hash.HashFunction; import com.google.common.hash.Hashing; -import com.iqser.red.service.persistence.management.v1.processor.configuration.MessagingConfiguration; -import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.AnnotationEntityId; -import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.CommentEntity; -import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.IdRemovalEntity; -import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualImageRecategorizationEntity; -import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualRedactionEntryEntity; -import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.ManualResizeRedactionEntity; +import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.*; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DictionaryPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.AddRedactionPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.CommentPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.ForceRedactionPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.ImageRecategorizationPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.LegalBasisChangePersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.RemoveRedactionPersistenceService; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.ResizeRedactionPersistenceService; -import com.iqser.red.service.persistence.service.v1.api.shared.model.AnalyzeRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.MessageType; -import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.AddRedactionRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.AnnotationStatus; -import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.CommentRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ForceRedactionRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ImageRecategorizationRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.LegalBasisChangeRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ManualAddResponse; -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.RemoveRedactionRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ResizeRedactionRequest; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.annotations.*; +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.IdRemoval; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.ProcessingStatus; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.WorkflowStatus; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.DictionaryEntryType; import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLog; import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLogEntry; import com.knecon.fforesight.databasetenantcommons.providers.utils.MagicConverter; - import feign.FeignException; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; +import org.springframework.transaction.annotation.Transactional; + +import java.nio.charset.StandardCharsets; +import java.time.OffsetDateTime; +import java.time.temporal.ChronoUnit; +import java.util.*; + +import static com.iqser.red.service.persistence.management.v1.processor.utils.TypeIdUtils.toTypeId; @Slf4j @Service @@ -195,7 +162,7 @@ public class ManualRedactionService { }); } else { if (addToAllDossiers) { - var dictionaryEntriesToUnDelete = dictionaryManagementService.getAllEntriesInDossierTemplate(dossierTemplateTypeId, value); + var dictionaryEntriesToUnDelete = dictionaryManagementService.getAllEntriesInDossierTemplate(dossierTemplateTypeId, value, dictionaryEntryType); dictionaryEntriesToUnDelete.forEach(entry -> { typeIdsOfModifiedDictionaries.add(entry.getTypeId()); addToDictionary(entry.getTypeId(), value, dossierId, fileId, dictionaryEntryType); @@ -356,7 +323,7 @@ public class ManualRedactionService { } else { if (removeFromAllDossiers) { var dictionaryEntriesToRemove = dictionaryManagementService.getAllEntriesInDossierTemplate(toTypeId(redactionLogEntry.getType(), - dossier.getDossierTemplateId()), redactionLogEntry.getValue()); + dossier.getDossierTemplateId()), redactionLogEntry.getValue(), DictionaryEntryType.ENTRY); dictionaryEntriesToRemove.forEach(entry -> { typeIdsOfModifiedDictionaries.add(entry.getTypeId()); removeFromDictionary(entry.getTypeId(), entry.getValue(), dossier.getId(), fileId, DictionaryEntryType.ENTRY); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntryPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntryPersistenceService.java index 7afda86bd..0f74d41c9 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntryPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/EntryPersistenceService.java @@ -1,11 +1,5 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persistence; -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -import org.springframework.stereotype.Service; - import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.BaseDictionaryEntry; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DictionaryEntryEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DictionaryFalsePositiveEntryEntity; @@ -16,10 +10,15 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry.FalseRecommendationEntryRepository; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.DictionaryEntryType; import com.knecon.fforesight.databasetenantcommons.providers.utils.JDBCWriteUtils; - import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; +import org.springframework.stereotype.Service; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; @Service @Slf4j @@ -33,8 +32,22 @@ public class EntryPersistenceService { private final JDBCWriteUtils jdbcWriteUtils; - public List getAllEntriesInDossierTemplate(String dossierTemplateTypeId, String value){ - return entryRepository.findByTypeIdContainsAndValue(dossierTemplateTypeId, value); + public List getAllEntriesInDossierTemplate(String dossierTemplateTypeId, String value, DictionaryEntryType dictionaryEntryType) { + + switch (dictionaryEntryType) { + case ENTRY -> { + return entryRepository.findByTypeIdContainsAndValue(dossierTemplateTypeId, value); + } + case FALSE_POSITIVE -> { + return falsePositiveEntryRepository.findByTypeIdContainsAndValue(dossierTemplateTypeId, value); + } + case FALSE_RECOMMENDATION -> { + return falseRecommendationEntryRepository.findByTypeIdContainsAndValue(dossierTemplateTypeId, value); + } + default -> { + return new ArrayList<>(); + } + } } @Transactional @@ -42,8 +55,10 @@ public class EntryPersistenceService { switch (dictionaryEntryType) { case ENTRY -> entryRepository.deleteAllByTypeIdAndVersionAndValueIn(typeId, values, version); - case FALSE_POSITIVE -> falsePositiveEntryRepository.deleteAllByTypeIdAndVersionAndValueIn(typeId, values, version); - case FALSE_RECOMMENDATION -> falseRecommendationEntryRepository.deleteAllByTypeIdAndVersionAndValueIn(typeId, values, version); + case FALSE_POSITIVE -> + falsePositiveEntryRepository.deleteAllByTypeIdAndVersionAndValueIn(typeId, values, version); + case FALSE_RECOMMENDATION -> + falseRecommendationEntryRepository.deleteAllByTypeIdAndVersionAndValueIn(typeId, values, version); } } @@ -53,8 +68,10 @@ public class EntryPersistenceService { switch (dictionaryEntryType) { case ENTRY -> entryRepository.deleteAllByTypeIdAndVersionAndValueIn(typeId, values, version); - case FALSE_POSITIVE -> falsePositiveEntryRepository.deleteAllByTypeIdAndVersionAndValueIn(typeId, values, version); - case FALSE_RECOMMENDATION -> falseRecommendationEntryRepository.deleteAllByTypeIdAndVersionAndValueIn(typeId, values, version); + case FALSE_POSITIVE -> + falsePositiveEntryRepository.deleteAllByTypeIdAndVersionAndValueIn(typeId, values, version); + case FALSE_RECOMMENDATION -> + falseRecommendationEntryRepository.deleteAllByTypeIdAndVersionAndValueIn(typeId, values, version); } } @@ -73,9 +90,12 @@ public class EntryPersistenceService { public List getEntries(String typeId, DictionaryEntryType dictionaryEntryType, Long fromVersion) { return switch (dictionaryEntryType) { - case ENTRY -> entryRepository.findByTypeIdAndVersionGreaterThan(typeId, fromVersion != null ? fromVersion : -1); - case FALSE_POSITIVE -> falsePositiveEntryRepository.findByTypeIdAndVersionGreaterThan(typeId, fromVersion != null ? fromVersion : -1); - case FALSE_RECOMMENDATION -> falseRecommendationEntryRepository.findByTypeIdAndVersionGreaterThan(typeId, fromVersion != null ? fromVersion : -1); + case ENTRY -> + entryRepository.findByTypeIdAndVersionGreaterThan(typeId, fromVersion != null ? fromVersion : -1); + case FALSE_POSITIVE -> + falsePositiveEntryRepository.findByTypeIdAndVersionGreaterThan(typeId, fromVersion != null ? fromVersion : -1); + case FALSE_RECOMMENDATION -> + falseRecommendationEntryRepository.findByTypeIdAndVersionGreaterThan(typeId, fromVersion != null ? fromVersion : -1); }; } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/dictionaryentry/FalsePositiveEntryRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/dictionaryentry/FalsePositiveEntryRepository.java index 4f1ba0c56..91dfb2d8c 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/dictionaryentry/FalsePositiveEntryRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/dictionaryentry/FalsePositiveEntryRepository.java @@ -1,14 +1,13 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry; -import java.util.List; - +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DictionaryEntryEntity; +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DictionaryFalsePositiveEntryEntity; import jakarta.transaction.Transactional; - import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; -import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DictionaryFalsePositiveEntryEntity; +import java.util.List; public interface FalsePositiveEntryRepository extends FalsePositiveEntryRepositoryCustom, JpaRepository { @@ -31,4 +30,7 @@ public interface FalsePositiveEntryRepository extends FalsePositiveEntryReposito @Query(value = "insert into dictionary_false_positive_entry (value, version, deleted, type_id) " + " select value, 1, false, :newTypeId from dictionary_false_positive_entry where type_id = :originalTypeId and deleted = false", nativeQuery = true) void cloneEntries(String originalTypeId, String newTypeId); + + List findByTypeIdContainsAndValue(String typeId, String value); + } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/dictionaryentry/FalseRecommendationEntryRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/dictionaryentry/FalseRecommendationEntryRepository.java index eed395872..1e8886194 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/dictionaryentry/FalseRecommendationEntryRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/dictionaryentry/FalseRecommendationEntryRepository.java @@ -1,14 +1,13 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.dictionaryentry; -import java.util.List; - +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DictionaryEntryEntity; +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DictionaryFalseRecommendationEntryEntity; import jakarta.transaction.Transactional; - import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; -import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.DictionaryFalseRecommendationEntryEntity; +import java.util.List; public interface FalseRecommendationEntryRepository extends FalseRecommendationEntryRepositoryCustom, JpaRepository { @@ -31,4 +30,7 @@ public interface FalseRecommendationEntryRepository extends FalseRecommendationE @Query(value = "insert into dictionary_false_recommendation_entry (value, version, deleted, type_id) " + " select value, 1, false, :newTypeId from dictionary_false_recommendation_entry where type_id = :originalTypeId and deleted = false", nativeQuery = true) void cloneEntries(String originalTypeId, String newTypeId); + + List findByTypeIdContainsAndValue(String typeId, String value); + } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java index 3fda4b517..2f2ebdb01 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/FileTest.java @@ -1,6 +1,27 @@ package com.iqser.red.service.peristence.v1.server.integration.tests; -import static org.assertj.core.api.Assertions.assertThat; +import com.google.common.collect.Sets; +import com.google.common.hash.HashFunction; +import com.google.common.hash.Hashing; +import com.iqser.red.service.peristence.v1.server.integration.client.*; +import com.iqser.red.service.peristence.v1.server.integration.service.*; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService; +import com.iqser.red.service.persistence.service.v1.api.shared.model.*; +import com.iqser.red.service.persistence.service.v1.api.shared.model.common.JSONPrimitive; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileAttributeConfig; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.ProcessingStatus; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.WorkflowStatus; +import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.DictionaryEntryType; +import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.*; +import feign.FeignException; +import lombok.SneakyThrows; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.mock.web.MockMultipartFile; import java.io.ByteArrayInputStream; import java.nio.charset.StandardCharsets; @@ -10,55 +31,7 @@ import java.util.List; import java.util.Map; import java.util.Set; -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.springframework.beans.factory.annotation.Autowired; -import org.springframework.mock.web.MockMultipartFile; - -import com.google.common.collect.Sets; -import com.google.common.hash.HashFunction; -import com.google.common.hash.Hashing; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeConfigClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; -import com.iqser.red.service.peristence.v1.server.integration.client.FileManagementClient; -import com.iqser.red.service.peristence.v1.server.integration.client.ManualRedactionClient; -import com.iqser.red.service.peristence.v1.server.integration.client.ReanalysisClient; -import com.iqser.red.service.peristence.v1.server.integration.client.RedactionLogClient; -import com.iqser.red.service.peristence.v1.server.integration.client.UploadClient; -import com.iqser.red.service.peristence.v1.server.integration.client.ViewedPagesClient; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.UserProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; -import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService; -import com.iqser.red.service.persistence.service.v1.api.shared.model.DossierTemplateModel; -import com.iqser.red.service.persistence.service.v1.api.shared.model.FileAttributes; -import com.iqser.red.service.persistence.service.v1.api.shared.model.FileAttributesConfig; -import com.iqser.red.service.persistence.service.v1.api.shared.model.FileStatus; -import com.iqser.red.service.persistence.service.v1.api.shared.model.FileUploadResult; -import com.iqser.red.service.persistence.service.v1.api.shared.model.PageExclusionRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.PageRange; -import com.iqser.red.service.persistence.service.v1.api.shared.model.ViewedPagesRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.common.JSONPrimitive; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.Dossier; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileAttributeConfig; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileType; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.ProcessingStatus; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.WorkflowStatus; -import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.AddCommentRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.AddRedactionRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.ForceRedactionRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.ImageRecategorizationRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.LegalBasisChangeRequest; -import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.RemoveRedactionRequest; - -import feign.FeignException; -import lombok.SneakyThrows; +import static org.assertj.core.api.Assertions.assertThat; public class FileTest extends AbstractPersistenceServerServiceTest { @@ -363,6 +336,7 @@ public class FileTest extends AbstractPersistenceServerServiceTest { .reason("1") .value("test") .legalBasis("1") + .dictionaryEntryType(DictionaryEntryType.ENTRY) .build())).iterator().next(); manualRedactionClient.removeRedactionBulk(dossierId, fileId, @@ -430,6 +404,7 @@ public class FileTest extends AbstractPersistenceServerServiceTest { .reason("1") .value("test") .legalBasis("1") + .dictionaryEntryType(DictionaryEntryType.ENTRY) .build())).iterator().next(); var loadedFile = fileClient.getFileStatus(dossier.getId(), file.getId()); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java index bf262530b..da817ecf5 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/ManualRedactionTest.java @@ -1,28 +1,11 @@ package com.iqser.red.service.peristence.v1.server.integration.tests; -import static com.iqser.red.service.persistence.management.v1.processor.utils.TypeIdUtils.toTypeId; -import static org.assertj.core.api.Assertions.assertThat; -import static org.mockito.Mockito.when; - -import java.util.ArrayList; -import java.util.List; -import java.util.Set; - -import org.junit.jupiter.api.Assertions; -import org.junit.jupiter.api.Test; -import org.mockito.Mockito; -import org.springframework.beans.factory.annotation.Autowired; - import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; import com.iqser.red.service.peristence.v1.server.integration.client.InternalDictionaryClient; import com.iqser.red.service.peristence.v1.server.integration.client.ManualRedactionClient; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.FileTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.UserProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.*; import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; import com.iqser.red.service.persistence.management.v1.processor.service.DictionaryManagementService; import com.iqser.red.service.persistence.management.v1.processor.service.FileManagementStorageService; @@ -38,8 +21,19 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.Remo import com.iqser.red.service.persistence.service.v1.api.shared.model.manual.ResizeRedactionRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLog; import com.iqser.red.service.persistence.service.v1.api.shared.model.redactionlog.RedactionLogEntry; - import feign.FeignException; +import org.junit.jupiter.api.Assertions; +import org.junit.jupiter.api.Test; +import org.mockito.Mockito; +import org.springframework.beans.factory.annotation.Autowired; + +import java.util.ArrayList; +import java.util.List; +import java.util.Set; + +import static com.iqser.red.service.persistence.management.v1.processor.utils.TypeIdUtils.toTypeId; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.Mockito.when; public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { @@ -177,6 +171,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { .section("section test") .addToDictionary(true) .addToAllDossiers(true) + .dictionaryEntryType(DictionaryEntryType.ENTRY) .type(type.getType()) .reason("1") .value("Luke Skywalker") @@ -469,7 +464,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { assertThat(loadedRedactionsFile1.getResizeRedactions()).hasSize(1); assertThat(loadedRedactionsFile1.getResizeRedactions().stream().toList().get(0).getValue()).isEqualTo("test redaction in dossier dictionary"); - var dictEntries = dictionaryManagementService.getAllEntriesInDossierTemplate(dossierTemplate.getDossierTemplateId(), "test redaction in dossier dictionary"); + var dictEntries = dictionaryManagementService.getAllEntriesInDossierTemplate(dossierTemplate.getDossierTemplateId(), "test redaction in dossier dictionary", DictionaryEntryType.ENTRY); assertThat(dictEntries.stream().filter(dictionaryEntry -> dictionaryEntry.getValue().equals("test redaction in dossier dictionary"))).isNotEmpty(); var dictionaryOfTypeDosDictInDossier1 = dictionaryClient.getDictionaryForType(typeDosDict.getType(), dossier1.getDossierTemplateId(), dossier1.getDossierId()); @@ -618,10 +613,10 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { assertThat(loadedRedactionsFile1.getResizeRedactions()).hasSize(1); assertThat(loadedRedactionsFile1.getResizeRedactions().stream().toList().get(0).getValue()).isEqualTo("test redaction in dossier"); - var dictEntriesOldValue = dictionaryManagementService.getAllEntriesInDossierTemplate(dossierTemplate.getDossierTemplateId(), "test redaction in dossier yayy"); + var dictEntriesOldValue = dictionaryManagementService.getAllEntriesInDossierTemplate(dossierTemplate.getDossierTemplateId(), "test redaction in dossier yayy", DictionaryEntryType.ENTRY); assertThat(dictEntriesOldValue.stream().filter(dictionaryEntry -> dictionaryEntry.getValue().equals("test redaction in dossier yayy") && dictionaryEntry.isDeleted())).hasSize(1); assertThat(dictEntriesOldValue.stream().filter(dictionaryEntry -> dictionaryEntry.getValue().equals("test redaction in dossier yayy") && !dictionaryEntry.isDeleted())).hasSize(1); - var dictEntriesNewValue = dictionaryManagementService.getAllEntriesInDossierTemplate(dossierTemplate.getDossierTemplateId(), "test redaction in dossier"); + var dictEntriesNewValue = dictionaryManagementService.getAllEntriesInDossierTemplate(dossierTemplate.getDossierTemplateId(), "test redaction in dossier", DictionaryEntryType.ENTRY); assertThat(dictEntriesNewValue.stream().filter(dictionaryEntry -> dictionaryEntry.getValue().equals("test redaction in dossier"))).isNotEmpty(); var dictionaryOfTypeDosDictInDossier1 = dictionaryClient.getDictionaryForType(typeDosDict.getType(), dossier1.getDossierTemplateId(), dossier1.getDossierId()); @@ -769,7 +764,7 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { assertThat(loadedRedactionsFile2.getResizeRedactions()).hasSize(1); assertThat(loadedRedactionsFile2.getResizeRedactions().stream().toList().get(0).getValue()).isEqualTo("test redaction in dossier template dictionary"); - var dictEntries = dictionaryManagementService.getAllEntriesInDossierTemplate(dossierTemplate.getDossierTemplateId(), "test redaction in dossier template dictionary"); + var dictEntries = dictionaryManagementService.getAllEntriesInDossierTemplate(dossierTemplate.getDossierTemplateId(), "test redaction in dossier template dictionary", DictionaryEntryType.ENTRY); assertThat(dictEntries.stream().filter(dictionaryEntry -> dictionaryEntry.getValue().equals("test redaction in dossier template dictionary"))).hasSize(1); var dictionaryOfTypeDosDictInDossier1 = dictionaryClient.getDictionaryForType(typeDosDict.getType(), dossier1.getDossierTemplateId(), dossier1.getDossierId()); @@ -917,12 +912,12 @@ public class ManualRedactionTest extends AbstractPersistenceServerServiceTest { assertThat(loadedRedactionsFile2.getResizeRedactions()).hasSize(1); assertThat(loadedRedactionsFile2.getResizeRedactions().stream().toList().get(0).getValue()).isEqualTo("test redaction in dossier template"); - var dictEntriesOldValue = dictionaryManagementService.getAllEntriesInDossierTemplate(dossierTemplate.getDossierTemplateId(), "test redaction in dossier template yayy"); + var dictEntriesOldValue = dictionaryManagementService.getAllEntriesInDossierTemplate(dossierTemplate.getDossierTemplateId(), "test redaction in dossier template yayy", DictionaryEntryType.ENTRY); assertThat(dictEntriesOldValue.stream() .filter(dictionaryEntry -> dictionaryEntry.getValue().equals("test redaction in dossier template yayy") && dictionaryEntry.isDeleted())).hasSize(3); assertThat(dictEntriesOldValue.stream() .filter(dictionaryEntry -> dictionaryEntry.getValue().equals("test redaction in dossier template yayy") && !dictionaryEntry.isDeleted())).isEmpty(); - var dictEntriesNewValue = dictionaryManagementService.getAllEntriesInDossierTemplate(dossierTemplate.getDossierTemplateId(), "test redaction in dossier template"); + var dictEntriesNewValue = dictionaryManagementService.getAllEntriesInDossierTemplate(dossierTemplate.getDossierTemplateId(), "test redaction in dossier template", DictionaryEntryType.ENTRY); assertThat(dictEntriesNewValue.stream().filter(dictionaryEntry -> dictionaryEntry.getValue().equals("test redaction in dossier template"))).isNotEmpty(); var dictionaryOfTypeDosDictInDossier1 = dictionaryClient.getDictionaryForType(typeDosDict.getType(), dossier1.getDossierTemplateId(), dossier1.getDossierId()); -- 2.47.2