RED-3904 entities fix

This commit is contained in:
Timo Bejan 2022-04-21 20:29:02 +03:00
parent cf3334bff8
commit b5d81f2b54
4 changed files with 59 additions and 45 deletions

View File

@ -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<DictionaryEntryEntity> entries = new ArrayList<>();
@Fetch(FetchMode.SUBSELECT)
@BatchSize(size = 500)
@OneToMany(cascade = ALL, mappedBy = "type", orphanRemoval = true, fetch = FetchType.LAZY)
private List<DictionaryFalsePositiveEntryEntity> falsePositiveEntries = new ArrayList<>();
@Fetch(FetchMode.SUBSELECT)
@BatchSize(size=500)
@OneToMany(cascade = ALL, mappedBy = "type", orphanRemoval = true, fetch = FetchType.LAZY)
private List<DictionaryFalseRecommendationEntryEntity> falseRecommendationEntries = new ArrayList<>();
@ManyToOne(fetch = FetchType.LAZY)
@JoinColumn(name = "dossier_template_id")
private DossierTemplateEntity dossierTemplate;

View File

@ -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<TypeEntity> getCumulatedTypes(String dossierTemplateId, String dossierId, boolean includeDeleted) {
var types = typeRepository.findAllTypesByDossierTemplateIdOrDossierId(dossierTemplateId, dossierId);
return filterDeleted(types,includeDeleted);
return filterDeleted(types, includeDeleted);
}

View File

@ -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<String>();
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);
}
}

View File

@ -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();