diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierManagementService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierManagementService.java index f2a5993ca..07d82a23c 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierManagementService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierManagementService.java @@ -23,7 +23,6 @@ import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemp 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.DossierChange; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.dossier.file.FileModel; -import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.Type; import com.iqser.red.service.search.v1.model.IndexMessageType; import lombok.RequiredArgsConstructor; @@ -53,7 +52,6 @@ public class DossierManagementService { var dossier = dossierService.addDossier(dossierRequest); - addDossierDictionary(dossier.getDossierTemplateId(), dossier.getId()); return MagicConverter.convert(dossier, Dossier.class, new DossierMapper()); } @@ -275,24 +273,4 @@ public class DossierManagementService { } - - private void addDossierDictionary(String dossierTemplateId, String dossierId) { - - dictionaryManagementService.addType(Type.builder() - .type(fileManagementServiceSettings.getDossierDictionarySettings().getName()) - .dossierTemplateId(dossierTemplateId) - .hexColor(fileManagementServiceSettings.getDossierDictionarySettings().getHexColor()) - .rank(fileManagementServiceSettings.getDossierDictionarySettings().getRank()) - .isHint(fileManagementServiceSettings.getDossierDictionarySettings().isHint()) - .isCaseInsensitive(fileManagementServiceSettings.getDossierDictionarySettings().isCaseInsensitive()) - .isRecommendation(fileManagementServiceSettings.getDossierDictionarySettings().isRecommendation()) - .description(fileManagementServiceSettings.getDossierDictionarySettings().getDescription()) - .addToDictionaryAction(fileManagementServiceSettings.getDossierDictionarySettings().isAddToDictionaryAction()) - .dossierId(dossierId) - .hasDictionary(true) - .systemManaged(true) - .dossierDictionaryOnly(true) - .build()); - } - } diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ManualRedactionProviderService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ManualRedactionProviderService.java index 1da0466b5..dc8745357 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ManualRedactionProviderService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/ManualRedactionProviderService.java @@ -9,10 +9,8 @@ import java.util.Map; import java.util.Set; import java.util.stream.Collectors; - import org.springframework.dao.EmptyResultDataAccessException; import org.springframework.stereotype.Service; -import org.springframework.transaction.UnexpectedRollbackException; import org.springframework.transaction.annotation.Transactional; import com.iqser.red.service.persistence.management.v1.processor.entity.annotations.CommentEntity; @@ -24,7 +22,6 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist 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.management.v1.processor.utils.MagicConverter; import com.iqser.red.service.persistence.management.v1.processor.utils.ManualImageRecategorizationMapper; import com.iqser.red.service.persistence.management.v1.processor.utils.ManualRedactionMapper; import com.iqser.red.service.persistence.management.v1.processor.utils.ManualResizeRedactionMapper; @@ -82,6 +79,13 @@ public class ManualRedactionProviderService { } + @Transactional + public ManualRedactionEntry getAddRedaction(String fileId, String annotationId){ + + return convert(addRedactionPersistenceService.findAddRedaction(fileId, annotationId), ManualRedactionEntry.class, new ManualRedactionMapper()); + } + + private Set convertEntriesToAdd(List source) { return source.stream().map(entry -> convert(entry, ManualRedactionEntry.class, new ManualRedactionMapper())).collect(Collectors.toSet()); 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 f11b9a827..7eb1c1af5 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 @@ -10,7 +10,6 @@ import java.util.HashSet; import java.util.List; import java.util.Optional; import java.util.Set; -import java.util.stream.Collectors; import org.springframework.amqp.rabbit.core.RabbitTemplate; import org.springframework.stereotype.Service; @@ -43,7 +42,6 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist 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.management.v1.processor.utils.MagicConverter; -import com.iqser.red.service.persistence.management.v1.processor.utils.ManualRedactionMapper; 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; @@ -57,7 +55,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.RemoveRedactionRequest; import com.iqser.red.service.persistence.service.v1.api.shared.model.annotations.ResizeRedactionRequest; 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.ManualRedactionEntry; 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; @@ -140,10 +137,10 @@ public class ManualRedactionService { reprocess(dossierId, fileId); } else { - var manualTextRedactions = MagicConverter.convert(response.stream() - .map(r -> getAddRedaction(fileId, r.getAnnotationId())) + var manualTextRedactions = response.stream() + .map(r -> manualRedactionProviderService.getAddRedaction(fileId, r.getAnnotationId())) .filter(m -> !m.isAddToDictionary() && !m.isRectangle()) - .collect(Collectors.toList()), ManualRedactionEntry.class, new ManualRedactionMapper()); + .toList(); if (!manualTextRedactions.isEmpty()) { ManualRedactions manualRedactions = ManualRedactions.builder().entriesToAdd(new HashSet<>(manualTextRedactions)).build(); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/AddRedactionPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/AddRedactionPersistenceService.java index 5ec8d03de..20ae538a1 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/AddRedactionPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/annotations/AddRedactionPersistenceService.java @@ -76,6 +76,9 @@ public class AddRedactionPersistenceService { } + + + public List findAddRedactions(String fileId, boolean includeDeletions) { return manualRedactionRepository.findByFileIdIncludeDeletions(fileId, includeDeletions); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/settings/DossierDictionarySettings.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/settings/DossierDictionarySettings.java deleted file mode 100644 index b781f1d71..000000000 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/settings/DossierDictionarySettings.java +++ /dev/null @@ -1,17 +0,0 @@ -package com.iqser.red.service.persistence.management.v1.processor.settings; - -import lombok.Data; - -@Data -public class DossierDictionarySettings { - - private String name = "dossier_redaction"; - private String hexColor = "#9398a0"; - private int rank = 1500; - private boolean hint; - private boolean caseInsensitive; - private boolean recommendation; - private String description = "Entries in this dictionary will only be redacted in this dossier"; - private boolean addToDictionaryAction; - -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/settings/FileManagementServiceSettings.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/settings/FileManagementServiceSettings.java index a4ec70b6b..517faabac 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/settings/FileManagementServiceSettings.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/settings/FileManagementServiceSettings.java @@ -47,6 +47,5 @@ public class FileManagementServiceSettings { private String applicationName = "RedactManager"; private Set defaultFilterTypes = new HashSet<>(); private Set defaultFilterHintTypes = new HashSet<>(); - private DossierDictionarySettings dossierDictionarySettings = new DossierDictionarySettings(); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java index 946549537..829091da5 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DictionaryTest.java @@ -7,6 +7,7 @@ import java.util.Comparator; import java.util.List; import java.util.stream.IntStream; +import org.junit.jupiter.api.BeforeEach; import org.junit.jupiter.api.Test; import org.springframework.beans.BeanUtils; import org.springframework.beans.factory.annotation.Autowired; @@ -17,7 +18,9 @@ import com.iqser.red.service.peristence.v1.server.integration.service.DossierTem import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; import com.iqser.red.service.peristence.v1.server.integration.service.TypeProvider; import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.management.v1.processor.utils.multitenancy.TenantContext; import com.iqser.red.service.persistence.service.v1.api.shared.model.CreateTypeValue; +import com.iqser.red.service.persistence.service.v1.api.shared.model.TypeValue; import com.iqser.red.service.persistence.service.v1.api.shared.model.UpdateTypeValue; import com.iqser.red.service.persistence.service.v1.api.shared.model.dossiertemplate.type.DictionaryEntryType; @@ -41,6 +44,13 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest { private DossierTemplateClient dossierTemplateClient; + @BeforeEach + public void createDossierRedactionDictionary() { + + TenantContext.setTenantId("redaction"); + } + + @Test public void testAddFalsePositiveAndFalseRecommendation() { @@ -90,6 +100,7 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest { public void testAddEntriesWithStopWord() { var dossier = dossierTesterAndProvider.provideTestDossier(); + createDossierRedactionsDictionary(dossier.getDossierTemplateId()); var typeId = "dossier_redaction"; var entries = new ArrayList(); entries.add("age"); @@ -106,40 +117,42 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest { public void testAddEntriesWithStopWord2() { var dossier = dossierTesterAndProvider.provideTestDossier(); - var typeId = "dossier_redaction"; + createDossierRedactionsDictionary(dossier.getDossierTemplateId()); + var type = "dossier_redaction"; + var entries = new ArrayList(); entries.add("age"); entries.add("p"); try { - dictionaryClient.addEntry(typeId, dossier.getDossierTemplateId(), entries, false, dossier.getId(), DictionaryEntryType.ENTRY); + dictionaryClient.addEntry(type, dossier.getDossierTemplateId(), entries, false, dossier.getId(), DictionaryEntryType.ENTRY); } catch (FeignException e) { assertThat(e.status()).isEqualTo(400); } entries.remove(1); entries.add("5"); try { - dictionaryClient.addEntry(typeId, dossier.getDossierTemplateId(), entries, false, dossier.getId(), DictionaryEntryType.ENTRY); + dictionaryClient.addEntry(type, dossier.getDossierTemplateId(), entries, false, dossier.getId(), DictionaryEntryType.ENTRY); } catch (FeignException e) { assertThat(e.status()).isEqualTo(400); } entries.remove(1); entries.add("12"); try { - dictionaryClient.addEntry(typeId, dossier.getDossierTemplateId(), entries, false, dossier.getId(), DictionaryEntryType.ENTRY); + dictionaryClient.addEntry(type, dossier.getDossierTemplateId(), entries, false, dossier.getId(), DictionaryEntryType.ENTRY); } catch (FeignException e) { assertThat(e.status()).isEqualTo(400); } entries.remove(1); entries.add(";"); try { - dictionaryClient.addEntry(typeId, dossier.getDossierTemplateId(), entries, false, dossier.getId(), DictionaryEntryType.ENTRY); + dictionaryClient.addEntry(type, dossier.getDossierTemplateId(), entries, false, dossier.getId(), DictionaryEntryType.ENTRY); } catch (FeignException e) { assertThat(e.status()).isEqualTo(400); } entries.remove(1); entries.add("шин"); - dictionaryClient.addEntry(typeId, dossier.getDossierTemplateId(), entries, false, dossier.getId(), DictionaryEntryType.ENTRY); + dictionaryClient.addEntry(type, dossier.getDossierTemplateId(), entries, false, dossier.getId(), DictionaryEntryType.ENTRY); } @@ -266,11 +279,10 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest { .build()); assertThat(returnedtype1.isDossierDictionaryOnly()).isTrue(); - assertThat(dictionaryClient.getAllTypes(dossier.getDossierTemplateId(), null, false).getTypes().size()).isEqualTo(1); - assertThat(dictionaryClient.getAllTypes(dossier.getDossierTemplateId(), dossier.getId(), false).getTypes().size()).isEqualTo(3); - var dictionary = dictionaryClient.getDictionaryForType(returnedtype1.getType(), dossier.getDossierTemplateId(), dossier2.getId()); - assertThat(dictionaryClient.getAllTypes(dossier.getDossierTemplateId(), dossier2.getId(), false).getTypes().size()).isEqualTo(3); + assertThat(dictionaryClient.getAllTypes(dossier.getDossierTemplateId(), dossier.getId(), false).getTypes().size()).isEqualTo(2); + var dictionary = dictionaryClient.getDictionaryForType(returnedtype1.getType(), dossier.getDossierTemplateId(), dossier2.getId()); + assertThat(dictionaryClient.getAllTypes(dossier.getDossierTemplateId(), dossier2.getId(), false).getTypes().size()).isEqualTo(2); } @@ -326,19 +338,7 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest { var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); - var type = CreateTypeValue.builder() - .type("dossier_redaction") - .label("Dossier Redactions") - .hexColor("#fcba03") - .rank(100) - .hint(false) - .description("Something") - .hasDictionary(true) - .addToDictionaryAction(false) - .dossierTemplateId(dossierTemplate.getId()) - .build(); - - var createdType = dictionaryClient.addType(type); + var createdType = createDossierRedactionsDictionary(dossierTemplate.getId()); var word1 = "Luke Skywalker"; var word2 = "Anakin Skywalker"; @@ -363,7 +363,7 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest { entries.add(word3); dictionaryClient.addEntry(createdType.getType(), createdType.getDossierTemplateId(), entries, false, null, DictionaryEntryType.ENTRY); - var dictionary = dictionaryClient.getDictionaryForType(type.getType(), type.getDossierTemplateId(), null); + var dictionary = dictionaryClient.getDictionaryForType(createdType.getType(), createdType.getDossierTemplateId(), null); assertThat(dictionary.getEntries().size()).isEqualTo(5); } @@ -424,4 +424,22 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest { } + + private TypeValue createDossierRedactionsDictionary(String dossierTemplateId){ + return dictionaryClient.addType(CreateTypeValue.builder() + .type("dossier_redaction") + .label("Dossier Redaction") + .addToDictionaryAction(true) + .hasDictionary(true) + .hint(false) + .rank(100) + .dossierTemplateId(dossierTemplateId) + .hexColor("#FFFFFF") + .recommendationHexColor("#FFFFFF") + .build()); + } + + + + } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java index 5b265fce5..c34ae8152 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTest.java @@ -1,7 +1,6 @@ package com.iqser.red.service.peristence.v1.server.integration.tests; import static org.assertj.core.api.Assertions.assertThat; -import static org.assertj.core.api.Assertions.assertThatIllegalStateException; import static org.assertj.core.api.Assertions.assertThatThrownBy; import java.time.OffsetDateTime; @@ -107,8 +106,7 @@ public class DossierTest extends AbstractPersistenceServerServiceTest { var dossier = dossierTesterAndProvider.provideTestDossier(); var returnedTypes = dictionaryClient.getAllTypes(dossier.getDossierTemplateId(), dossier.getDossierId(), false); - assertThat(returnedTypes.getTypes().size()).isEqualTo(1); - assertThat(returnedTypes.getTypes().get(0).isDossierDictionaryOnly()).isTrue(); + assertThat(returnedTypes.getTypes().size()).isEqualTo(0); var watermark = new WatermarkModel(); watermark.setName("watermark name");