From b5d81f2b54e67b3aa5a2ae0d9fe2fed6d52e90bb Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Thu, 21 Apr 2022 20:29:02 +0300 Subject: [PATCH] RED-3904 entities fix --- .../entity/configuration/TypeEntity.java | 15 ------ .../DictionaryPersistenceService.java | 4 +- .../integration/tests/DictionaryTest.java | 48 +++++++++++++++++++ .../AbstractPersistenceServerServiceTest.java | 37 ++++---------- 4 files changed, 59 insertions(+), 45 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/TypeEntity.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/TypeEntity.java index abfba3845..076b7bccd 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/TypeEntity.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/entity/configuration/TypeEntity.java @@ -68,21 +68,6 @@ public class TypeEntity { @Column private OffsetDateTime softDeletedTime; - @Fetch(FetchMode.SUBSELECT) - @BatchSize(size = 500) - @OneToMany(cascade = ALL, mappedBy = "type", orphanRemoval = true, fetch = FetchType.LAZY) - private List entries = new ArrayList<>(); - - @Fetch(FetchMode.SUBSELECT) - @BatchSize(size = 500) - @OneToMany(cascade = ALL, mappedBy = "type", orphanRemoval = true, fetch = FetchType.LAZY) - private List falsePositiveEntries = new ArrayList<>(); - - @Fetch(FetchMode.SUBSELECT) - @BatchSize(size=500) - @OneToMany(cascade = ALL, mappedBy = "type", orphanRemoval = true, fetch = FetchType.LAZY) - private List falseRecommendationEntries = new ArrayList<>(); - @ManyToOne(fetch = FetchType.LAZY) @JoinColumn(name = "dossier_template_id") private DossierTemplateEntity dossierTemplate; diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java index 43711cb3f..48ed03c7a 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DictionaryPersistenceService.java @@ -57,10 +57,10 @@ public class DictionaryPersistenceService { .hasDictionary(hasDictionary) .systemManaged(systemManaged) .autoHideSkipped(autoHideSkipped) + .softDeletedTime(null) .build(); return typeRepository.save(t); - } @@ -107,7 +107,7 @@ public class DictionaryPersistenceService { public List getCumulatedTypes(String dossierTemplateId, String dossierId, boolean includeDeleted) { var types = typeRepository.findAllTypesByDossierTemplateIdOrDossierId(dossierTemplateId, dossierId); - return filterDeleted(types,includeDeleted); + return filterDeleted(types, includeDeleted); } 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 9b4ef0653..c28bbc062 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 @@ -261,4 +261,52 @@ public class DictionaryTest extends AbstractPersistenceServerServiceTest { assertThat(dictionaryClient.getAllTypesForDossier(dossier2.getId(), false).size()).isEqualTo(1); } + + @Test + public void testDeleteAndRecreateDictionary() { + + var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); + + var type = Type.builder() + .type("dossier_redaction") + .label("Dossier Redactions") + .hexColor("#fcba03") + .rank(100) + .isHint(false) + .isCaseInsensitive(false) + .isRecommendation(false) + .description("Something") + .hasDictionary(true) + .addToDictionaryAction(false) + .dossierTemplateId(dossierTemplate.getId()) + .build(); + + var createdType = dictionaryClient.addType(type); + + var word1 = "Luke Skywalker"; + var word2 = "Anakin Skywalker"; + var word3 = "Yoda"; + + // Act & Assert: Add different words; All three should exist + var entries = new ArrayList(); + entries.add(word1); + entries.add(word2); + entries.add(word3); + dictionaryClient.addEntries(createdType.getTypeId(), entries, false, false, DictionaryEntryType.ENTRY); + + var actualEntries = dictionaryClient.getEntriesForType(createdType.getTypeId(), 0L, DictionaryEntryType.ENTRY); + assertThat(actualEntries.size()).isEqualTo(3); + + dictionaryClient.deleteType(createdType.getTypeId()); + actualEntries = dictionaryClient.getEntriesForType(createdType.getTypeId(), 0L, DictionaryEntryType.ENTRY); + actualEntries = actualEntries.stream().filter(e -> !e.isDeleted()).collect(Collectors.toList()); + assertThat(actualEntries.size()).isEqualTo(0); + + + dictionaryClient.addType(type); + actualEntries = dictionaryClient.getEntriesForType(createdType.getTypeId(), 0L, DictionaryEntryType.ENTRY); + actualEntries = actualEntries.stream().filter(e -> !e.isDeleted()).collect(Collectors.toList()); + assertThat(actualEntries.size()).isEqualTo(0); + } + } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java index f10d53f52..9d7d1e854 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/utils/AbstractPersistenceServerServiceTest.java @@ -5,6 +5,7 @@ import static org.mockito.Mockito.doAnswer; import static org.mockito.Mockito.doNothing; import static org.mockito.Mockito.when; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.*; import org.assertj.core.util.Lists; import org.junit.After; import org.junit.Before; @@ -41,34 +42,6 @@ import com.iqser.red.service.peristence.v1.server.integration.client.FileClient; import com.iqser.red.service.peristence.v1.server.utils.MetricsPrinterService; import com.iqser.red.service.peristence.v1.server.utils.StorageIdUtils; import com.iqser.red.service.persistence.management.v1.processor.client.PDFTronRedactionClient; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.AuditRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DigitalSignatureRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierAttributeConfigRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierAttributeRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierStatusRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DownloadStatusRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.EntryRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileAttributeConfigRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileAttributesGeneralConfigurationRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileAttributesRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.FileRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ForceRedactionRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ImageRecategorizationRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.IndexInformationRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.LegalBasisChangeRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.LegalBasisMappingRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ManualRedactionRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.NotificationPreferencesRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.NotificationRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.RemoveRedactionRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ReportTemplateRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.RuleSetRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.SMTPRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.TypeRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.ViewedPagesRepository; -import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.WatermarkRepository; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileType; import com.iqser.red.service.redaction.v1.model.AnnotateResponse; import com.iqser.red.service.redaction.v1.model.RedactionLog; @@ -155,6 +128,12 @@ public abstract class AbstractPersistenceServerServiceTest { @Autowired protected IndexInformationRepository indexInformationRepository; + @Autowired + protected FalsePositiveEntryRepository falsePositiveEntryRepository; + + @Autowired + protected FalseRecommendationEntryRepository falseRecommendationEntryRepository; + @Before public void setupOptimize() { @@ -200,6 +179,8 @@ public abstract class AbstractPersistenceServerServiceTest { @After public void afterTests() { + falsePositiveEntryRepository.deleteAll(); + falseRecommendationEntryRepository.deleteAll(); entryRepository.deleteAll(); dossierAttributeRepository.deleteAll(); dossierAttributeConfigRepository.deleteAll();