From e4337bbedc75fbddc3566019aec92344a0abba61 Mon Sep 17 00:00:00 2001 From: aoezyetimoglu Date: Fri, 10 Jun 2022 16:04:36 +0200 Subject: [PATCH] RED-4153: Getting all existing dossiers returns deleted archived dossiers --- .../server/controller/DossierController.java | 37 +++++++--- .../server/integration/tests/DossierTest.java | 69 +++++++++++++++++-- 2 files changed, 92 insertions(+), 14 deletions(-) diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierController.java index 0f19d4310..8fc36354c 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierController.java @@ -63,8 +63,7 @@ public class DossierController implements DossierResource { @Override @Transactional - public Dossier updateDossier(@RequestBody CreateOrUpdateDossierRequest dossierRequest, - @PathVariable(DOSSIER_ID_PARAM) String dossierId) { + public Dossier updateDossier(@RequestBody CreateOrUpdateDossierRequest dossierRequest, @PathVariable(DOSSIER_ID_PARAM) String dossierId) { return convert(dossierService.updateDossier(dossierRequest, dossierId), Dossier.class, new DossierMapper()); } @@ -99,26 +98,44 @@ public class DossierController implements DossierResource { return getConvertedAllDossiers(dossierService.getAllDossiers(), includeArchived, includeDeleted); } + @Override @Transactional public List getAllDossiersForDossierTemplateId(@PathVariable(DOSSIER_TEMPLATE_ID_PARAM) String dossierTemplateId, - @RequestParam(name = INCLUDE_ARCHIVED_PARAM, defaultValue = "false", required = false) boolean includeArchived, - @RequestParam(name = INCLUDE_DELETED_PARAM, defaultValue = "false", required = false) boolean includeDeleted) { + @RequestParam(name = INCLUDE_ARCHIVED_PARAM, defaultValue = "false", required = false) boolean includeArchived, + @RequestParam(name = INCLUDE_DELETED_PARAM, defaultValue = "false", required = false) boolean includeDeleted) { - return getConvertedAllDossiers(dossierService.getAllDossiersForDossierTemplateId(dossierTemplateId), includeArchived, includeDeleted); + return getConvertedAllDossiers(dossierService.getAllDossiersForDossierTemplateId(dossierTemplateId), includeArchived, includeDeleted); } + private List getConvertedAllDossiers(List dossierEntityList, boolean includeArchived, boolean includeDeleted) { + + List dossierEntitiesList = dossierEntityList.stream().filter(dossierEntity -> dossierEntity.getHardDeletedTime() == null).collect(Collectors.toList()); + + // return all dossiers if (includeDeleted && includeArchived) { - return convert(dossierEntityList, Dossier.class, new DossierMapper()); + return convert(dossierEntitiesList, Dossier.class, new DossierMapper()); } - return convert(dossierEntityList.stream() - .filter(p -> p.getSoftDeletedTime() == null && p.getArchivedTime() == null || includeDeleted && p.getSoftDeletedTime() != null || includeArchived && p.getArchivedTime() != null) + // return archived and non-deleted dossiers + if (includeArchived) { + return convert(dossierEntitiesList.stream().filter(p -> p.getSoftDeletedTime() == null).collect(Collectors.toList()), Dossier.class, new DossierMapper()); + } + + // return deleted and non-archived dossiers + if (includeDeleted) { + return convert(dossierEntitiesList.stream().filter(p -> p.getArchivedTime() == null).collect(Collectors.toList()), Dossier.class, new DossierMapper()); + } + + // return only non-deleted and non-archived dossiers + return convert(dossierEntitiesList.stream() + .filter(p -> p.getSoftDeletedTime() == null && p.getArchivedTime() == null) .collect(Collectors.toList()), Dossier.class, new DossierMapper()); } + @Override public DossierInformation getDossierInformation(@RequestBody List filteredDossierIds) { @@ -168,6 +185,7 @@ public class DossierController implements DossierResource { return getArchivedDossiersList(dossierService.getAllDossiers()); } + @Override @Transactional public List getArchivedDossiersForDossierTemplateId(@PathVariable(DOSSIER_TEMPLATE_ID_PARAM) String dossierTemplateId) { @@ -175,6 +193,7 @@ public class DossierController implements DossierResource { return getArchivedDossiersList(dossierService.getAllDossiersForDossierTemplateId(dossierTemplateId)); } + private List getArchivedDossiersList(List dossierEntityList) { var archivedDossiers = convert(dossierEntityList.stream() @@ -185,6 +204,7 @@ public class DossierController implements DossierResource { return archivedDossiers; } + @Override @Transactional public List getSoftDeletedDossiers() { @@ -270,6 +290,7 @@ public class DossierController implements DossierResource { private void addToIndexingQueue(String dossierId, List fileStatuses) { + fileStatuses.forEach(f -> indexingService.addToIndexingQueue(IndexMessageType.UPDATE, null, dossierId, f.getId(), 2)); } 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 d8a9c89f5..aa113e1b2 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 @@ -106,8 +106,8 @@ public class DossierTest extends AbstractPersistenceServerServiceTest { dossierClient.hardDeleteDossiers(Sets.newHashSet(dossier.getId())); assertThat(dossierClient.getAllDossiers(false, false)).isEmpty(); assertThat(dossierClient.getAllDossiers(true, false)).isEmpty(); - assertThat(dossierClient.getAllDossiers(false, true)).hasSize(1); - assertThat(dossierClient.getAllDossiers(true, true)).hasSize(1); + assertThat(dossierClient.getAllDossiers(false, true)).hasSize(0); + assertThat(dossierClient.getAllDossiers(true, true)).hasSize(0); assertThat(dossierClient.getSoftDeletedDossiers()).isEmpty(); assertThatThrownBy(() -> dossierClient.undeleteDossiers(Sets.newHashSet(dossier.getId()))).isInstanceOf(FeignException.class); @@ -185,8 +185,8 @@ public class DossierTest extends AbstractPersistenceServerServiceTest { dossierClient.delete(dossier1.getId()); dossierClient.archiveDossiers(Set.of(dossier1.getId(), dossier2.getId())); assertThat(dossierClient.getAllDossiers(false, false)).hasSize(0); - assertThat(dossierClient.getAllDossiers(true, false)).hasSize(2); - assertThat(dossierClient.getAllDossiers(false, true)).hasSize(1); + assertThat(dossierClient.getAllDossiers(true, false)).hasSize(1); + assertThat(dossierClient.getAllDossiers(false, true)).hasSize(0); assertThat(dossierClient.getAllDossiers(true, true)).hasSize(2); assertThat(dossierClient.getArchivedDossiers()).hasSize(1); assertThat(dossierClient.getSoftDeletedDossiers()).hasSize(1); @@ -216,8 +216,8 @@ public class DossierTest extends AbstractPersistenceServerServiceTest { dossierClient.archiveDossiers(Set.of(dossier1.getId(), dossier2.getId())); assertThat(dossierClient.getAllDossiers(false, false)).hasSize(0); assertThat(dossierClient.getAllDossiers(true, false)).hasSize(1); - assertThat(dossierClient.getAllDossiers(false, true)).hasSize(1); - assertThat(dossierClient.getAllDossiers(true, true)).hasSize(2); + assertThat(dossierClient.getAllDossiers(false, true)).hasSize(0); + assertThat(dossierClient.getAllDossiers(true, true)).hasSize(1); assertThat(dossierClient.getArchivedDossiers()).hasSize(1); assertThat(dossierClient.getSoftDeletedDossiers()).hasSize(0); @@ -334,6 +334,63 @@ public class DossierTest extends AbstractPersistenceServerServiceTest { } + @Test + public void testGetAllDossiersWithoutDeleted() { + + var template = dossierTemplateTesterAndProvider.provideTestTemplate(); + + // Arrange + var dossier1 = dossierTesterAndProvider.provideTestDossier(template, "dossier1"); + + var nonDeletedDossiers = dossierClient.getAllDossiers(true, false); + assertThat(nonDeletedDossiers).hasSize(1); + + + dossierClient.archiveDossiers(Set.of(dossier1.getId())); + nonDeletedDossiers = dossierClient.getAllDossiers(true, false); + assertThat(nonDeletedDossiers).hasSize(1); + + dossierClient.delete(dossier1.getId()); + nonDeletedDossiers = dossierClient.getAllDossiers(true, false); + assertThat(nonDeletedDossiers).hasSize(0); + assertThat(dossierClient.getSoftDeletedDossiers()).hasSize(1); + + dossierClient.hardDeleteDossiers(Set.of(dossier1.getId())); + nonDeletedDossiers = dossierClient.getAllDossiers(true, false); + assertThat(nonDeletedDossiers).hasSize(0); + assertThat(dossierClient.getSoftDeletedDossiers()).hasSize(0); + + } + + + @Test + public void testCheckIncludeArchivedAndIncludeDeleted() { + + var template = dossierTemplateTesterAndProvider.provideTestTemplate(); + + // Arrange + var regularDossier = dossierTesterAndProvider.provideTestDossier(template, "regularDossier"); + var onlyArchivedDossier = dossierTesterAndProvider.provideTestDossier(template, "onlyArchivedDossier"); + var onlyDeletedDossier = dossierTesterAndProvider.provideTestDossier(template, "onlyDeletedDossier"); + var archivedAndDeletedDossier = dossierTesterAndProvider.provideTestDossier(template, "archivedAndDeletedDossier"); + var hardDeletedDossier = dossierTesterAndProvider.provideTestDossier(template, "hardDeletedDossier"); + + dossierClient.archiveDossiers(Set.of(onlyArchivedDossier.getId(), archivedAndDeletedDossier.getId())); + dossierClient.delete(onlyDeletedDossier.getId()); + dossierClient.delete(archivedAndDeletedDossier.getId()); + dossierClient.delete(hardDeletedDossier.getId()); + dossierClient.hardDeleteDossiers(Set.of(hardDeletedDossier.getId())); + + + // check get all dossiers with inclusions + assertThat(dossierClient.getAllDossiers(true, true)).hasSize(4); //all without harddeleted + assertThat(dossierClient.getAllDossiers(true, false)).hasSize(2); //regular and onlyarchived + assertThat(dossierClient.getAllDossiers(false, true)).hasSize(2); //regular and onlydeleted + assertThat(dossierClient.getAllDossiers(false, false)).hasSize(1); //regular + + } + + private List provideTestReportTemplates(Dossier dossier) { reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()