Pull request #443: RED-4153: Getting all existing dossiers returns deleted archived dossiers

Merge in RED/persistence-service from RED-4153-2 to master

* commit 'e4337bbedc75fbddc3566019aec92344a0abba61':
  RED-4153: Getting all existing dossiers returns deleted archived dossiers
This commit is contained in:
Ali Oezyetimoglu 2022-06-15 14:15:23 +02:00
commit d93e413b82
2 changed files with 92 additions and 14 deletions

View File

@ -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<Dossier> 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<Dossier> getConvertedAllDossiers(List<DossierEntity> dossierEntityList, boolean includeArchived, boolean includeDeleted) {
List<DossierEntity> 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<String> filteredDossierIds) {
@ -168,6 +185,7 @@ public class DossierController implements DossierResource {
return getArchivedDossiersList(dossierService.getAllDossiers());
}
@Override
@Transactional
public List<Dossier> getArchivedDossiersForDossierTemplateId(@PathVariable(DOSSIER_TEMPLATE_ID_PARAM) String dossierTemplateId) {
@ -175,6 +193,7 @@ public class DossierController implements DossierResource {
return getArchivedDossiersList(dossierService.getAllDossiersForDossierTemplateId(dossierTemplateId));
}
private List<Dossier> getArchivedDossiersList(List<DossierEntity> dossierEntityList) {
var archivedDossiers = convert(dossierEntityList.stream()
@ -185,6 +204,7 @@ public class DossierController implements DossierResource {
return archivedDossiers;
}
@Override
@Transactional
public List<Dossier> getSoftDeletedDossiers() {
@ -270,6 +290,7 @@ public class DossierController implements DossierResource {
private void addToIndexingQueue(String dossierId, List<FileModel> fileStatuses) {
fileStatuses.forEach(f -> indexingService.addToIndexingQueue(IndexMessageType.UPDATE, null, dossierId, f.getId(), 2));
}

View File

@ -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<ReportTemplate> provideTestReportTemplates(Dossier dossier) {
reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder()