From 274f7da04ae271e0de17eee6d9e179f17297778b Mon Sep 17 00:00:00 2001 From: Philipp Schramm Date: Mon, 21 Mar 2022 09:21:08 +0100 Subject: [PATCH 01/10] RED-3628 Bugfix for downloading archived dossiers --- .../v1/api/resources/DownloadResource.java | 16 ++++--- .../DossierPersistenceService.java | 43 +++++++++++++------ .../server/controller/DownloadController.java | 32 +++++++------- 3 files changed, 56 insertions(+), 35 deletions(-) diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DownloadResource.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DownloadResource.java index bba222ef2..4d308ee51 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DownloadResource.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DownloadResource.java @@ -1,13 +1,18 @@ package com.iqser.red.service.persistence.service.v1.api.resources; +import java.util.List; + +import org.springframework.http.HttpStatus; +import org.springframework.http.MediaType; +import org.springframework.web.bind.annotation.GetMapping; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.PostMapping; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.ResponseStatus; + import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimitive; import com.iqser.red.service.persistence.service.v1.api.model.download.DownloadRequest; import com.iqser.red.service.persistence.service.v1.api.model.download.DownloadStatus; -import org.springframework.http.HttpStatus; -import org.springframework.http.MediaType; -import org.springframework.web.bind.annotation.*; - -import java.util.List; @ResponseStatus(value = HttpStatus.OK) public interface DownloadResource { @@ -19,7 +24,6 @@ public interface DownloadResource { @PostMapping(value = REST_PATH + "/prepare", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) JSONPrimitive prepareDownload(@RequestBody DownloadRequest request); - @GetMapping(value = REST_PATH + "/status/{" + USER_ID + "}", consumes = MediaType.APPLICATION_JSON_VALUE, produces = MediaType.APPLICATION_JSON_VALUE) List getDownloadStatus(@PathVariable(USER_ID) String userId); diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierPersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierPersistenceService.java index 20458903a..8f1d74dc0 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierPersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierPersistenceService.java @@ -1,5 +1,20 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persistence; +import static com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException.DOSSIER_NOT_FOUND_MESSAGE; + +import java.time.OffsetDateTime; +import java.time.temporal.ChronoUnit; +import java.util.HashSet; +import java.util.List; +import java.util.Set; +import java.util.UUID; +import java.util.stream.Collectors; + +import javax.transaction.Transactional; + +import org.springframework.beans.BeanUtils; +import org.springframework.stereotype.Service; + import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; import com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException; @@ -10,21 +25,11 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierRequest; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierChange; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatus; + import lombok.RequiredArgsConstructor; -import org.springframework.beans.BeanUtils; -import org.springframework.stereotype.Service; - -import javax.transaction.Transactional; -import java.time.OffsetDateTime; -import java.time.temporal.ChronoUnit; -import java.util.HashSet; -import java.util.List; -import java.util.Set; -import java.util.UUID; -import java.util.stream.Collectors; - -import static com.iqser.red.service.persistence.management.v1.processor.exception.DossierNotFoundException.DOSSIER_NOT_FOUND_MESSAGE; +import lombok.extern.slf4j.Slf4j; +@Slf4j @Service @RequiredArgsConstructor public class DossierPersistenceService { @@ -92,6 +97,18 @@ public class DossierPersistenceService { } + public DossierEntity getActiveOrArchivedDossier(String dossierId) { + + var dossier = findByDossierId(dossierId); + + if (dossier == null || dossier.getHardDeletedTime() != null || dossier.getSoftDeletedTime() != null) { + throw new DossierNotFoundException(String.format(DOSSIER_NOT_FOUND_MESSAGE, dossierId)); + } + + return dossier; + } + + public DossierEntity getAndValidateDossier(String dossierId) { // check whether the dossierId exists and is not deleted var dossier = findByDossierId(dossierId); diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DownloadController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DownloadController.java index 658f91e67..1f6be3a28 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DownloadController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DownloadController.java @@ -1,5 +1,16 @@ package com.iqser.red.service.peristence.v1.server.controller; +import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; + +import java.util.List; +import java.util.Set; +import java.util.stream.Collectors; + +import org.springframework.amqp.rabbit.core.RabbitTemplate; +import org.springframework.web.bind.annotation.PathVariable; +import org.springframework.web.bind.annotation.RequestBody; +import org.springframework.web.bind.annotation.RestController; + import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; import com.iqser.red.service.peristence.v1.server.configuration.MessagingConfiguration; @@ -14,18 +25,11 @@ import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimiti import com.iqser.red.service.persistence.service.v1.api.model.download.DownloadRequest; import com.iqser.red.service.persistence.service.v1.api.model.download.DownloadStatus; import com.iqser.red.service.persistence.service.v1.api.resources.DownloadResource; + import lombok.RequiredArgsConstructor; -import org.springframework.amqp.rabbit.core.RabbitTemplate; -import org.springframework.web.bind.annotation.PathVariable; -import org.springframework.web.bind.annotation.RequestBody; -import org.springframework.web.bind.annotation.RestController; - -import java.util.List; -import java.util.Set; -import java.util.stream.Collectors; - -import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; +import lombok.extern.slf4j.Slf4j; +@Slf4j @RestController @RequiredArgsConstructor public class DownloadController implements DownloadResource { @@ -42,15 +46,11 @@ public class DownloadController implements DownloadResource { var mimeType = "application/zip"; var existingFileStatuses = fileStatusPersistenceService.getStatusesForDossier(request.getDossierId()); - String downloadFilename = buildName(request.getDossierId(), request.getFileIds(), request.getUserId(), mimeType, existingFileStatuses); - String storageId = StorageIdUtils.getStorageId(request.getUserId(), request.getDossierId(), downloadFilename); - - var dossier = dossierPersistenceService.getAndValidateDossier(request.getDossierId()); + var dossier = dossierPersistenceService.getActiveOrArchivedDossier(request.getDossierId()); downloadStatusPersistenceService.createStatus(request.getUserId(), storageId, dossier, downloadFilename, mimeType, request.getFileIds(), dossier.getDownloadFileTypes()); - addToDownloadQueue(DownloadJob.builder().storageId(storageId).userId(request.getUserId()).build(), 1); return new JSONPrimitive<>(storageId); @@ -92,7 +92,7 @@ public class DownloadController implements DownloadResource { private String buildName(String dossierId, List fileIds, String userId, String mimeType, List existingFileStatuses) { - var dossier = dossierPersistenceService.getAndValidateDossier(dossierId); + var dossier = dossierPersistenceService.getActiveOrArchivedDossier(dossierId); Set existingFilenames = downloadStatusPersistenceService.getStatusesByUser(userId) .stream() From b98a57de7b3e1cef10365246b8bcb5c4fe57ca91 Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Mon, 21 Mar 2022 12:56:31 +0200 Subject: [PATCH 02/10] dossier status cleanup --- .../v1/api/model/dossiertemplate/dossier/DossierStatus.java | 5 ----- .../service/persistence/repository/DossierRepository.java | 2 -- .../peristence/v1/server/service/IndexingService.java | 1 - 3 files changed, 8 deletions(-) delete mode 100644 persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/DossierStatus.java diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/DossierStatus.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/DossierStatus.java deleted file mode 100644 index 53efd6b52..000000000 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/dossier/DossierStatus.java +++ /dev/null @@ -1,5 +0,0 @@ -package com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier; - -public enum DossierStatus { - ACTIVE, DELETED, ARCHIVED; -} diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierRepository.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierRepository.java index 32be7bb9a..f6d2739e4 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierRepository.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/repository/DossierRepository.java @@ -1,8 +1,6 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity; -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierChange; -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatus; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.data.jpa.repository.Modifying; import org.springframework.data.jpa.repository.Query; diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/IndexingService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/IndexingService.java index cdf34a922..02a0f0b99 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/IndexingService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/IndexingService.java @@ -15,7 +15,6 @@ import com.iqser.red.service.peristence.v1.server.configuration.MessagingConfigu import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileEntity; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileStatusPersistenceService; -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatus; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.ProcessingStatus; import com.iqser.red.service.search.v1.model.IndexMessage; import com.iqser.red.service.search.v1.model.IndexMessageType; From 4d63908c8a8e495ca9f22beac694ce2bfaf5e583 Mon Sep 17 00:00:00 2001 From: deiflaender Date: Mon, 21 Mar 2022 13:14:26 +0100 Subject: [PATCH 03/10] RED-2836: Upgraded to redaction-service api --- .../service/v1/api/resources/RedactionLogResource.java | 3 ++- .../v1/server/controller/RedactionLogController.java | 5 +++-- .../v1/server/service/AnalysisFlagsCalculationService.java | 6 +++--- .../peristence/v1/server/service/RedactionLogService.java | 7 ++++--- .../service/download/DownloadPreparationService.java | 2 +- .../v1/server/integration/tests/RedactionLogTest.java | 4 ++-- persistence-service-v1/pom.xml | 2 +- 7 files changed, 16 insertions(+), 13 deletions(-) diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/RedactionLogResource.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/RedactionLogResource.java index f6db5e13c..b0e8a1d2c 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/RedactionLogResource.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/RedactionLogResource.java @@ -26,7 +26,8 @@ public interface RedactionLogResource { @GetMapping(value = REDACTION_LOG_PATH + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) RedactionLog getRedactionLog(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestParam(value = "excludedType", required = false) List excludedTypes, - @RequestParam(value = "withManualRedactions", required = false, defaultValue = "true") boolean withManualRedactions); + @RequestParam(value = "withManualRedactions", required = false, defaultValue = "true") boolean withManualRedactions, + @RequestParam(value = "includeFalsePositives", required = false, defaultValue = "false") boolean includeFalsePositives); @GetMapping(value = SECTION_GRID_PATH + DOSSIER_ID_PATH_PARAM + FILE_ID_PATH_VARIABLE, produces = MediaType.APPLICATION_JSON_VALUE) SectionGrid getSectionGrid(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId); diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/RedactionLogController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/RedactionLogController.java index 437bf5669..625832bc5 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/RedactionLogController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/RedactionLogController.java @@ -21,9 +21,10 @@ public class RedactionLogController implements RedactionLogResource { public RedactionLog getRedactionLog(@PathVariable(DOSSIER_ID_PARAM) String dossierId, @PathVariable(FILE_ID) String fileId, @RequestParam(value = "excludedType", required = false) List excludedTypes, - @RequestParam(value = "withManualRedactions", required = false, defaultValue = "true") boolean withManualRedactions) { + @RequestParam(value = "withManualRedactions", required = false, defaultValue = "true") boolean withManualRedactions, + @RequestParam(value = "includeFalsePositives", required = false, defaultValue = "false") boolean includeFalsePositives) { - return redactionLogService.getRedactionLog(dossierId, fileId, excludedTypes, withManualRedactions); + return redactionLogService.getRedactionLog(dossierId, fileId, excludedTypes, withManualRedactions, includeFalsePositives); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/AnalysisFlagsCalculationService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/AnalysisFlagsCalculationService.java index 9f0740614..e52005456 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/AnalysisFlagsCalculationService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/AnalysisFlagsCalculationService.java @@ -34,7 +34,7 @@ public class AnalysisFlagsCalculationService { long startTime = System.currentTimeMillis(); var file = fileStatusPersistenceService.getStatus(fileId); - var redactionLog = redactionLogService.getRedactionLog(dossierId, fileId, true); + var redactionLog = redactionLogService.getRedactionLog(dossierId, fileId, true, false); var viewedPagesForCurrentAssignee = viewedPagesPersistenceService.findViewedPages(fileId, file.getAssignee()); @@ -76,11 +76,11 @@ public class AnalysisFlagsCalculationService { lastModification = lastChange.getDateTime(); } - if (!hasRedactions && entry.isRedacted()) { + if (!hasRedactions && entry.isRedacted() && !entry.isRecommendation()) { hasRedactions = true; } - if (!hasHints && entry.isHint() && !type.equals("false_positive")) { + if (!hasHints && entry.isHint()) { hasHints = true; } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/RedactionLogService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/RedactionLogService.java index e7d3c9a98..d2b5b1e97 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/RedactionLogService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/RedactionLogService.java @@ -26,13 +26,13 @@ public class RedactionLogService { private final FileStatusService fileStatusService; - public RedactionLog getRedactionLog(String dossierId, String fileId, boolean withManualRedactions) { + public RedactionLog getRedactionLog(String dossierId, String fileId, boolean withManualRedactions, boolean includeFalsePositives) { - return getRedactionLog(dossierId, fileId, null, withManualRedactions); + return getRedactionLog(dossierId, fileId, null, withManualRedactions, includeFalsePositives); } - public RedactionLog getRedactionLog(String dossierId, String fileId, List excludedTypes, boolean withManualRedactions) { + public RedactionLog getRedactionLog(String dossierId, String fileId, List excludedTypes, boolean withManualRedactions, boolean includeFalsePositives) { var fileStatus = fileStatusService.getStatus(fileId); @@ -52,6 +52,7 @@ public class RedactionLogService { .manualRedactions(manualRedactions) .dossierTemplateId(dossier.getDossierTemplateId()) .excludedPages(fileStatus.getExcludedPages()) + .includeFalsePositives(includeFalsePositives) .build()); } catch (FeignException e) { if (e.status() == HttpStatus.NOT_FOUND.value()) { diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/download/DownloadPreparationService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/download/DownloadPreparationService.java index 6f12faad5..56e2f0c9f 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/download/DownloadPreparationService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/download/DownloadPreparationService.java @@ -228,7 +228,7 @@ public class DownloadPreparationService { return null; } try { - return redactionLogService.getRedactionLog(dossierId, fileId, true); + return redactionLogService.getRedactionLog(dossierId, fileId, true, false); } catch (NotFoundException e) { return null; } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RedactionLogTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RedactionLogTest.java index e4dd1b093..3671ca024 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RedactionLogTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/RedactionLogTest.java @@ -27,8 +27,8 @@ public class RedactionLogTest extends AbstractPersistenceServerServiceTest { var file = fileTesterAndProvider.testAndProvideFile(dossier); assertThat(redactionLogClient.getSectionGrid(dossier.getId(), file.getId())).isNotNull(); - assertThat(redactionLogClient.getRedactionLog(dossier.getId(), file.getId(), null,true)).isNotNull(); - assertThat(redactionLogClient.getRedactionLog(dossier.getId(), file.getId(), null,false)).isNotNull(); + assertThat(redactionLogClient.getRedactionLog(dossier.getId(), file.getId(), null,true, false)).isNotNull(); + assertThat(redactionLogClient.getRedactionLog(dossier.getId(), file.getId(), null,false, false)).isNotNull(); } } diff --git a/persistence-service-v1/pom.xml b/persistence-service-v1/pom.xml index 1d4b67c71..c6e7571ad 100755 --- a/persistence-service-v1/pom.xml +++ b/persistence-service-v1/pom.xml @@ -25,7 +25,7 @@ - 3.76.0 + 3.86.0 2.26.0 3.44.0 3.19.0 From e274eb484420e3fb3ec62841ecc8fbf92d52782c Mon Sep 17 00:00:00 2001 From: aoezyetimoglu Date: Mon, 21 Mar 2022 16:46:02 +0100 Subject: [PATCH 04/10] RED-3246: As an admin I want to clone a dossier template --- .../service/DossierTemplateCloneService.java | 13 ++++++-- .../tests/DossierTemplateTest.java | 32 +++++++++++++++++-- 2 files changed, 40 insertions(+), 5 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java index 30ac3a422..b0c4166d7 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java @@ -8,6 +8,7 @@ import java.time.temporal.ChronoUnit; import java.util.ArrayList; import java.util.List; import java.util.UUID; +import java.util.stream.Collectors; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; @@ -25,6 +26,7 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.NotFo import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DictionaryPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributeConfigPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.EntryPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileAttributeConfigPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.LegalBasisMappingPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService; @@ -32,6 +34,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplateStatus; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.legalbasis.LegalBasis; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntryType; import com.iqser.red.storage.commons.service.StorageService; import lombok.RequiredArgsConstructor; @@ -48,6 +51,7 @@ public class DossierTemplateCloneService { private final DossierTemplatePersistenceService dossierTemplatePersistenceService; private final DossierAttributeConfigPersistenceService dossierAttributeConfigPersistenceService; private final DictionaryPersistenceService dictionaryPersistenceService; + private final EntryPersistenceService entryPersistenceService; private final FileAttributeConfigPersistenceService fileAttributeConfigPersistenceService; private final ReportTemplatePersistenceService reportTemplatePersistenceService; private final WatermarkService watermarkService; @@ -86,7 +90,7 @@ public class DossierTemplateCloneService { dossierTemplateRepository.save(clonedDossierTemplate); //set dictionaries - clonedDossierTemplate.setDossierTypes(cloneDictionaries(dossierTemplate.getId(), clonedDossierTemplate.getId())); + clonedDossierTemplate.setDossierTypes(cloneDictionariesWithEntries(dossierTemplate.getId(), clonedDossierTemplate.getId())); //set dossier attributes cloneDossierAttributesConfig(dossierTemplate.getId(), clonedDossierTemplate.getId()); @@ -126,7 +130,7 @@ public class DossierTemplateCloneService { } - private List cloneDictionaries(String dossierTemplateId, String clonedDossierTemplateId) { + private List cloneDictionariesWithEntries(String dossierTemplateId, String clonedDossierTemplateId) { List clonedTypes = new ArrayList<>(); var types = dictionaryPersistenceService.getAllTypesForDossierTemplate(dossierTemplateId); @@ -134,6 +138,11 @@ public class DossierTemplateCloneService { TypeEntity te = dictionaryPersistenceService.addType(t.getType(), clonedDossierTemplateId, t.getHexColor(), t.getRecommendationHexColor(), t.getRank(), t.isHint(), t.isCaseInsensitive(), t.isRecommendation(), t.getDescription(), t.isAddToDictionaryAction(), t.getLabel(), null); te.setDossierTemplateId(clonedDossierTemplateId); clonedTypes.add(te); + for (DictionaryEntryType det : DictionaryEntryType.values()) { + var baseDictionaryEntries = entryPersistenceService.getEntries(t.getId(), det, t.getVersion()); + List entries = baseDictionaryEntries.stream().map(baseDictionaryEntry -> baseDictionaryEntry.getValue()).collect(Collectors.toList()); + entryPersistenceService.addEntry(te.getId(), entries, te.getVersion(), det); + } } return clonedTypes; } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java index 52231e876..4332c40a6 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java @@ -54,6 +54,7 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.do import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileAttributeConfig; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileAttributeType; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntry; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntryType; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.Type; import feign.FeignException; @@ -145,8 +146,8 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); Type type = Type.builder() - .id("t.id") - .type("t.getType()") +// .id("t1id") + .type("t") .dossierTemplateId(dossierTemplate.getId()) .hexColor("#ddddd") .recommendationHexColor("#cccccc") @@ -163,7 +164,31 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { .falsePositiveEntries(List.of(DictionaryEntry.builder().entryId(2001).value("dictEntry2").version(23).deleted(false).typeId("t.getType()").build())) .falseRecommendationEntries(List.of(DictionaryEntry.builder().entryId(3001).value("dictEntry3").version(23).deleted(false).typeId("t.getType()").build())) .build(); - dictionaryClient.addType(type); + Type type2 = Type.builder() +// .id("t2id") + .type("t2") + .dossierTemplateId(dossierTemplate.getId()) + .hexColor("#12345") + .recommendationHexColor("#6789a") + .rank(1002) + .isHint(false) + .isRecommendation(false) + .isCaseInsensitive(false) + .description("t2.getDescription()") + .addToDictionaryAction(true) + .label("t2.getLabel()") + .dossierId(null) + .version(23) + .entries(List.of(DictionaryEntry.builder().entryId(1001).value("dictEntry1").version(23).deleted(false).typeId("t2.getType()").build())) + .falsePositiveEntries(List.of(DictionaryEntry.builder().entryId(2001).value("dictEntry2").version(23).deleted(false).typeId("t2.getType()").build())) + .falseRecommendationEntries(List.of(DictionaryEntry.builder().entryId(3001).value("dictEntry3").version(23).deleted(false).typeId("t2.getType()").build())) + .build(); + var createdType1 = dictionaryClient.addType(type); + var createdType2 = dictionaryClient.addType(type2); + var loadedType1 = dictionaryClient.getDictionaryForType(createdType1.getId(),null); + var loadedType2 = dictionaryClient.getDictionaryForType(createdType2.getId(),null); + dictionaryClient.addEntries(loadedType1.getTypeId(), List.of("entry1", "entry2"), false, false, DictionaryEntryType.ENTRY); + dictionaryClient.addEntries(loadedType2.getTypeId(), List.of("entry3", "entry4"), false, false, DictionaryEntryType.FALSE_POSITIVE); dossierAttributeConfigClient.setDossierAttributesConfig(dossierTemplate.getId(), List.of(DossierAttributeConfig.builder() .dossierTemplateId(dossierTemplate.getId()) .editable(false) @@ -248,6 +273,7 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { assertThat(reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId()).get(0).getFileName()).isEqualTo(reportTemplateClient.getAvailableReportTemplates(clonedDT.getId()).get(0).getFileName()); assertThat(watermarkClient.getWatermark(dossierTemplate.getId()).getText()).isEqualTo(watermarkClient.getWatermark(clonedDT.getId()).getText()); assertThat(dictionaryClient.getColors(dossierTemplate.getId()).getRequestAdd()).isEqualTo(dictionaryClient.getColors(clonedDT.getId()).getRequestAdd()); + assertThat(dictionaryClient.getAllTypesForDossierTemplate(dossierTemplate.getId()).get(0).getRank()).isEqualTo(dictionaryClient.getAllTypesForDossierTemplate(clonedDT.getId()).get(0).getRank()); } } From ce0a9bfd0be3551877633c8d5f5aaaf8e70b5735 Mon Sep 17 00:00:00 2001 From: aoezyetimoglu Date: Mon, 21 Mar 2022 18:11:37 +0100 Subject: [PATCH 05/10] RED-3246: As an admin I want to clone a dossier template --- .../service/DossierTemplateCloneService.java | 23 ++++++++++ .../tests/DossierTemplateTest.java | 45 +++++++++++++++---- 2 files changed, 60 insertions(+), 8 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java index b0c4166d7..22326a2b9 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java @@ -25,6 +25,7 @@ import com.iqser.red.service.persistence.management.v1.processor.exception.Confl import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DictionaryPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributeConfigPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierStatusPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.EntryPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileAttributeConfigPersistenceService; @@ -33,6 +34,8 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.management.v1.processor.service.persistence.RulesPersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplateStatus; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.legalbasis.LegalBasis; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntryType; import com.iqser.red.storage.commons.service.StorageService; @@ -57,6 +60,7 @@ public class DossierTemplateCloneService { private final WatermarkService watermarkService; private final ColorsService colorsService; private final StorageService storageService; + private final DossierStatusPersistenceService dossierStatusPersistenceService; public DossierTemplateEntity cloneDossierTemplate(String dossierTemplateId, String nameOfClonedDossierTemplate, String cloningUserId) { @@ -109,6 +113,9 @@ public class DossierTemplateCloneService { //set colors cloneColors(dossierTemplate.getId(), clonedDossierTemplate.getId()); + //set dossier status + cloneDossierStates(dossierTemplate.getId(), clonedDossierTemplate.getId()); + dossierTemplateRepository.save(clonedDossierTemplate); }, () -> { @@ -243,4 +250,20 @@ public class DossierTemplateCloneService { colorsService.saveColors(clonedColors); } + + private void cloneDossierStates(String dossierTemplateId, String clonedDossierTemplateId) { + + var states = dossierStatusPersistenceService.getAllDossierStatusForTemplate(dossierTemplateId); + for (var state : states) { + var clonedState = CreateOrUpdateDossierStatusRequest.builder() + .name(state.getName()) + .description(state.getDescription()) + .color(state.getColor()) + .dossierTemplateId(clonedDossierTemplateId) + .rank(state.getRank()) + .build(); + dossierStatusPersistenceService.createOrUpdateDossierStatus(clonedState); + } + } + } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java index 4332c40a6..647c85107 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java @@ -21,6 +21,7 @@ import org.springframework.boot.test.mock.mockito.MockBean; import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; import com.iqser.red.service.peristence.v1.server.integration.client.DossierAttributeConfigClient; import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierStatusClient; import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeConfigClient; import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient; @@ -50,6 +51,7 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.Re import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.Colors; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.Watermark; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.WatermarkOrientation; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierAttributeType; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileAttributeConfig; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileAttributeType; @@ -88,6 +90,9 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { @Autowired private WatermarkClient watermarkClient; + @Autowired + private DossierStatusClient dossierStatusClient; + @Test public void testDossierTemplate() { @@ -185,8 +190,8 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { .build(); var createdType1 = dictionaryClient.addType(type); var createdType2 = dictionaryClient.addType(type2); - var loadedType1 = dictionaryClient.getDictionaryForType(createdType1.getId(),null); - var loadedType2 = dictionaryClient.getDictionaryForType(createdType2.getId(),null); + var loadedType1 = dictionaryClient.getDictionaryForType(createdType1.getId(), null); + var loadedType2 = dictionaryClient.getDictionaryForType(createdType2.getId(), null); dictionaryClient.addEntries(loadedType1.getTypeId(), List.of("entry1", "entry2"), false, false, DictionaryEntryType.ENTRY); dictionaryClient.addEntries(loadedType2.getTypeId(), List.of("entry3", "entry4"), false, false, DictionaryEntryType.FALSE_POSITIVE); dossierAttributeConfigClient.setDossierAttributesConfig(dossierTemplate.getId(), List.of(DossierAttributeConfig.builder() @@ -225,7 +230,13 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { .storageId("storageId") .uploadDate(OffsetDateTime.now()) .build(); - reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder().template("some text".getBytes(StandardCharsets.UTF_8)).dossierTemplateId(dossierTemplate.getId()).fileName("Report Template").activeByDefault(true).multiFileReport(false).build()); + reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder() + .template("some text".getBytes(StandardCharsets.UTF_8)) + .dossierTemplateId(dossierTemplate.getId()) + .fileName("Report Template") + .activeByDefault(true) + .multiFileReport(false) + .build()); watermarkClient.saveWatermark(dossierTemplate.getId(), Watermark.builder() .dossierTemplateId(dossierTemplate.getId()) .fontSize(10) @@ -250,6 +261,14 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { .manualRedactionColor("#bbbbbb") .build(); dictionaryClient.setColors(dossierTemplate.getId(), col); + var dossierStatus = CreateOrUpdateDossierStatusRequest.builder() + .name("dossStatus1") + .description("dossier status description") + .color("#115599") + .rank(456) + .dossierTemplateId(dossierTemplate.getId()) + .build(); + dossierStatusClient.createOrUpdateDossierStatus(dossierStatus); var allTemplates = dossierTemplateClient.getAllDossierTemplates(); assertThat(allTemplates.size()).isEqualTo(1); @@ -267,13 +286,23 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { assertThat(loadedTemplate.getModifiedBy()).isEqualTo("user"); assertThat(loadedTemplate.getCreatedBy()).isEqualTo("user"); - assertThat(dossierAttributeConfigClient.getDossierAttributes(dossierTemplate.getId()).get(0).getLabel()).isEqualTo(dossierAttributeConfigClient.getDossierAttributes(clonedDT.getId()).get(0).getLabel()); - assertThat(fileAttributeConfigClient.getFileAttributeConfigs(dossierTemplate.getId()).get(0).getCsvColumnHeader()).isEqualTo(fileAttributeConfigClient.getFileAttributeConfigs(clonedDT.getId()).get(0).getCsvColumnHeader()); - assertThat(fileAttributeConfigClient.getFileAttributesGeneralConfig(dossierTemplate.getId()).getFilenameMappingColumnHeaderName()).isEqualTo(fileAttributeConfigClient.getFileAttributesGeneralConfig(clonedDT.getId()).getFilenameMappingColumnHeaderName()); - assertThat(reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId()).get(0).getFileName()).isEqualTo(reportTemplateClient.getAvailableReportTemplates(clonedDT.getId()).get(0).getFileName()); + assertThat(dossierAttributeConfigClient.getDossierAttributes(dossierTemplate.getId()) + .get(0) + .getLabel()).isEqualTo(dossierAttributeConfigClient.getDossierAttributes(clonedDT.getId()).get(0).getLabel()); + assertThat(fileAttributeConfigClient.getFileAttributeConfigs(dossierTemplate.getId()) + .get(0) + .getCsvColumnHeader()).isEqualTo(fileAttributeConfigClient.getFileAttributeConfigs(clonedDT.getId()).get(0).getCsvColumnHeader()); + assertThat(fileAttributeConfigClient.getFileAttributesGeneralConfig(dossierTemplate.getId()) + .getFilenameMappingColumnHeaderName()).isEqualTo(fileAttributeConfigClient.getFileAttributesGeneralConfig(clonedDT.getId()).getFilenameMappingColumnHeaderName()); + assertThat(reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId()) + .get(0) + .getFileName()).isEqualTo(reportTemplateClient.getAvailableReportTemplates(clonedDT.getId()).get(0).getFileName()); assertThat(watermarkClient.getWatermark(dossierTemplate.getId()).getText()).isEqualTo(watermarkClient.getWatermark(clonedDT.getId()).getText()); assertThat(dictionaryClient.getColors(dossierTemplate.getId()).getRequestAdd()).isEqualTo(dictionaryClient.getColors(clonedDT.getId()).getRequestAdd()); - assertThat(dictionaryClient.getAllTypesForDossierTemplate(dossierTemplate.getId()).get(0).getRank()).isEqualTo(dictionaryClient.getAllTypesForDossierTemplate(clonedDT.getId()).get(0).getRank()); + assertThat(dictionaryClient.getAllTypesForDossierTemplate(dossierTemplate.getId()) + .get(0) + .getRank()).isEqualTo(dictionaryClient.getAllTypesForDossierTemplate(clonedDT.getId()).get(0).getRank()); + assertThat(dossierStatusClient.getAllDossierStatuses(List.of(dossierTemplate.getId()))).isEqualTo(dossierStatusClient.getAllDossierStatuses(List.of(clonedDT.getId()))); } } From eddfe5247cb6f4ac45ea8015a3eb396ca4b816d1 Mon Sep 17 00:00:00 2001 From: aoezyetimoglu Date: Tue, 22 Mar 2022 09:23:40 +0100 Subject: [PATCH 06/10] RED-3246: As an admin I want to clone a dossier template --- .../service/DossierTemplateCloneService.java | 2 ++ .../tests/DossierTemplateTest.java | 19 +++++++++---------- 2 files changed, 11 insertions(+), 10 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java index 22326a2b9..e0b07c3fe 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java @@ -142,11 +142,13 @@ public class DossierTemplateCloneService { List clonedTypes = new ArrayList<>(); var types = dictionaryPersistenceService.getAllTypesForDossierTemplate(dossierTemplateId); for (TypeEntity t : types) { + log.info("type: {} id: {}", t.getType(), t.getId()); TypeEntity te = dictionaryPersistenceService.addType(t.getType(), clonedDossierTemplateId, t.getHexColor(), t.getRecommendationHexColor(), t.getRank(), t.isHint(), t.isCaseInsensitive(), t.isRecommendation(), t.getDescription(), t.isAddToDictionaryAction(), t.getLabel(), null); te.setDossierTemplateId(clonedDossierTemplateId); clonedTypes.add(te); for (DictionaryEntryType det : DictionaryEntryType.values()) { var baseDictionaryEntries = entryPersistenceService.getEntries(t.getId(), det, t.getVersion()); + log.info("type: {} det {} size: {}", t.getType(), det.name(), baseDictionaryEntries.size()); List entries = baseDictionaryEntries.stream().map(baseDictionaryEntry -> baseDictionaryEntry.getValue()).collect(Collectors.toList()); entryPersistenceService.addEntry(te.getId(), entries, te.getVersion(), det); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java index 647c85107..04a35d323 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java @@ -53,6 +53,7 @@ import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.co import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.WatermarkOrientation; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.CreateOrUpdateDossierStatusRequest; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierAttributeType; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierStatusInfo; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileAttributeConfig; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileAttributeType; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntry; @@ -151,7 +152,6 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); Type type = Type.builder() -// .id("t1id") .type("t") .dossierTemplateId(dossierTemplate.getId()) .hexColor("#ddddd") @@ -170,7 +170,6 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { .falseRecommendationEntries(List.of(DictionaryEntry.builder().entryId(3001).value("dictEntry3").version(23).deleted(false).typeId("t.getType()").build())) .build(); Type type2 = Type.builder() -// .id("t2id") .type("t2") .dossierTemplateId(dossierTemplate.getId()) .hexColor("#12345") @@ -261,14 +260,14 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { .manualRedactionColor("#bbbbbb") .build(); dictionaryClient.setColors(dossierTemplate.getId(), col); - var dossierStatus = CreateOrUpdateDossierStatusRequest.builder() - .name("dossStatus1") - .description("dossier status description") - .color("#115599") - .rank(456) - .dossierTemplateId(dossierTemplate.getId()) - .build(); - dossierStatusClient.createOrUpdateDossierStatus(dossierStatus); +// var dossierStatus = CreateOrUpdateDossierStatusRequest.builder() +// .name("dossStatus1") +// .description("dossier status description") +// .color("#115599") +// .rank(456) +// .dossierTemplateId(dossierTemplate.getId()) +// .build(); +// dossierStatusClient.createOrUpdateDossierStatus(dossierStatus); var allTemplates = dossierTemplateClient.getAllDossierTemplates(); assertThat(allTemplates.size()).isEqualTo(1); From 8fa416e39e1df6d113ca89e710f1623145c68ab1 Mon Sep 17 00:00:00 2001 From: aoezyetimoglu Date: Tue, 22 Mar 2022 09:44:23 +0100 Subject: [PATCH 07/10] RED-3246: As an admin I want to clone a dossier template --- .../service/DossierTemplateCloneService.java | 4 +--- .../tests/DossierTemplateTest.java | 20 ++++++++++--------- 2 files changed, 12 insertions(+), 12 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java index e0b07c3fe..16c83b492 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java @@ -142,13 +142,11 @@ public class DossierTemplateCloneService { List clonedTypes = new ArrayList<>(); var types = dictionaryPersistenceService.getAllTypesForDossierTemplate(dossierTemplateId); for (TypeEntity t : types) { - log.info("type: {} id: {}", t.getType(), t.getId()); TypeEntity te = dictionaryPersistenceService.addType(t.getType(), clonedDossierTemplateId, t.getHexColor(), t.getRecommendationHexColor(), t.getRank(), t.isHint(), t.isCaseInsensitive(), t.isRecommendation(), t.getDescription(), t.isAddToDictionaryAction(), t.getLabel(), null); te.setDossierTemplateId(clonedDossierTemplateId); clonedTypes.add(te); for (DictionaryEntryType det : DictionaryEntryType.values()) { - var baseDictionaryEntries = entryPersistenceService.getEntries(t.getId(), det, t.getVersion()); - log.info("type: {} det {} size: {}", t.getType(), det.name(), baseDictionaryEntries.size()); + var baseDictionaryEntries = entryPersistenceService.getEntries(t.getId(), det, null); List entries = baseDictionaryEntries.stream().map(baseDictionaryEntry -> baseDictionaryEntry.getValue()).collect(Collectors.toList()); entryPersistenceService.addEntry(te.getId(), entries, te.getVersion(), det); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java index 04a35d323..5ea7e8773 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java @@ -260,14 +260,14 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { .manualRedactionColor("#bbbbbb") .build(); dictionaryClient.setColors(dossierTemplate.getId(), col); -// var dossierStatus = CreateOrUpdateDossierStatusRequest.builder() -// .name("dossStatus1") -// .description("dossier status description") -// .color("#115599") -// .rank(456) -// .dossierTemplateId(dossierTemplate.getId()) -// .build(); -// dossierStatusClient.createOrUpdateDossierStatus(dossierStatus); + var dossierStatus = CreateOrUpdateDossierStatusRequest.builder() + .name("dossStatus1") + .description("ds description") + .color("#115599") + .rank(456) + .dossierTemplateId(dossierTemplate.getId()) + .build(); + dossierStatusClient.createOrUpdateDossierStatus(dossierStatus); var allTemplates = dossierTemplateClient.getAllDossierTemplates(); assertThat(allTemplates.size()).isEqualTo(1); @@ -301,7 +301,9 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { assertThat(dictionaryClient.getAllTypesForDossierTemplate(dossierTemplate.getId()) .get(0) .getRank()).isEqualTo(dictionaryClient.getAllTypesForDossierTemplate(clonedDT.getId()).get(0).getRank()); - assertThat(dossierStatusClient.getAllDossierStatuses(List.of(dossierTemplate.getId()))).isEqualTo(dossierStatusClient.getAllDossierStatuses(List.of(clonedDT.getId()))); + assertThat(dossierStatusClient.getAllDossierStatuses(List.of(dossierTemplate.getId())) + .get(0) + .getDescription()).isEqualTo(dossierStatusClient.getAllDossierStatuses(List.of(clonedDT.getId())).get(0).getDescription()); } } From 4d4840bbc253b66a2837c93b961eb6586d69707d Mon Sep 17 00:00:00 2001 From: deiflaender Date: Tue, 22 Mar 2022 11:18:59 +0100 Subject: [PATCH 08/10] RED-2836: Added hasDictionary and systemManaged to entities --- .../v1/api/model/dossiertemplate/type/Type.java | 2 ++ .../processor/entity/configuration/TypeEntity.java | 4 ++++ .../service/DossierTemplateCloneService.java | 2 +- .../persistence/DictionaryPersistenceService.java | 4 +++- .../v1/server/controller/DictionaryController.java | 8 +++++++- ...added-has-dictionary-to-entities.changelog.yaml | 14 ++++++++++++++ .../db/changelog/db.changelog-master.yaml | 4 ++-- .../server/integration/service/TypeProvider.java | 2 ++ .../tests/DossierTemplateStatsTest.java | 8 ++++++++ 9 files changed, 43 insertions(+), 5 deletions(-) create mode 100644 persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/16-added-has-dictionary-to-entities.changelog.yaml diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/type/Type.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/type/Type.java index 881961a23..67790ae3b 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/type/Type.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/type/Type.java @@ -32,6 +32,8 @@ public class Type { private List entries = new ArrayList<>(); private List falsePositiveEntries = new ArrayList<>(); private List falseRecommendationEntries = new ArrayList<>(); + private boolean hasDictionary; + private boolean systemManaged; // For auto-mappers @JsonIgnore 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 e070caf68..7224754a3 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 @@ -58,6 +58,10 @@ public class TypeEntity { private long version; @Column private boolean addToDictionaryAction; + @Column + private boolean hasDictionary; + @Column + private boolean systemManaged; @Fetch(FetchMode.SUBSELECT) @BatchSize(size=500) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java index 30ac3a422..80d4824bb 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java @@ -131,7 +131,7 @@ public class DossierTemplateCloneService { List clonedTypes = new ArrayList<>(); var types = dictionaryPersistenceService.getAllTypesForDossierTemplate(dossierTemplateId); for (TypeEntity t : types) { - TypeEntity te = dictionaryPersistenceService.addType(t.getType(), clonedDossierTemplateId, t.getHexColor(), t.getRecommendationHexColor(), t.getRank(), t.isHint(), t.isCaseInsensitive(), t.isRecommendation(), t.getDescription(), t.isAddToDictionaryAction(), t.getLabel(), null); + TypeEntity te = dictionaryPersistenceService.addType(t.getType(), clonedDossierTemplateId, t.getHexColor(), t.getRecommendationHexColor(), t.getRank(), t.isHint(), t.isCaseInsensitive(), t.isRecommendation(), t.getDescription(), t.isAddToDictionaryAction(), t.getLabel(), null, t.isHasDictionary(), t.isSystemManaged()); te.setDossierTemplateId(clonedDossierTemplateId); clonedTypes.add(te); } 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 23058dc7f..1114930a2 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 @@ -36,7 +36,7 @@ public class DictionaryPersistenceService { public TypeEntity addType(String type, String dossierTemplateId, String hexColor, String recommendationHexColor, int rank, boolean isHint, boolean caseInsensitive, boolean isRecommendation, - String description, boolean addToDictionaryAction, String label, String dossierId) { + String description, boolean addToDictionaryAction, String label, String dossierId, boolean hasDictionary, boolean systemManaged) { checkRankAlreadyExists(type, dossierTemplateId, rank, dossierId); @@ -55,6 +55,8 @@ public class DictionaryPersistenceService { .addToDictionaryAction(addToDictionaryAction) .label(label) .version(1) + .hasDictionary(hasDictionary) + .systemManaged(systemManaged) .build(); return typeRepository.save(t); diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DictionaryController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DictionaryController.java index da3e0f75d..817542639 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DictionaryController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DictionaryController.java @@ -70,6 +70,9 @@ public class DictionaryController implements DictionaryResource { // To check whether the type exists, type should not be added into database implicitly by addEntry. Type typeResult = convert(dictionaryPersistenceService.getType(typeId), Type.class); + if (!typeResult.isHasDictionary()){ + throw new BadRequestException("Entity type does not have a dictionary"); + } var currentVersion = getCurrentVersion(typeResult); @@ -204,7 +207,7 @@ public class DictionaryController implements DictionaryResource { validateColor(color); return convert(dictionaryPersistenceService.addType(typeRequest.getType(), typeRequest.getDossierTemplateId(), color, typeRequest.getRecommendationHexColor(), typeRequest .getRank(), typeRequest.isHint(), typeRequest.isCaseInsensitive(), typeRequest.isRecommendation(), typeRequest - .getDescription(), typeRequest.isAddToDictionaryAction(), typeRequest.getLabel(), typeRequest.getDossierId()), Type.class); + .getDescription(), typeRequest.isAddToDictionaryAction(), typeRequest.getLabel(), typeRequest.getDossierId(), typeRequest.isHasDictionary(), typeRequest.isSystemManaged()), Type.class); } @@ -213,6 +216,9 @@ public class DictionaryController implements DictionaryResource { // NotFoundException would be thrown if the type not found in database. Type typeResult = convert(dictionaryPersistenceService.getType(typeId), Type.class); + if(typeResult.isSystemManaged()){ + throw new BadRequestException("Can not delete system managed entity type"); + } var currentVersion = getCurrentVersion(typeResult); diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/16-added-has-dictionary-to-entities.changelog.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/16-added-has-dictionary-to-entities.changelog.yaml new file mode 100644 index 000000000..78cd55f7d --- /dev/null +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/16-added-has-dictionary-to-entities.changelog.yaml @@ -0,0 +1,14 @@ +databaseChangeLog: + - changeSet: + id: add-has-dictionary + author: dom + changes: + - addColumn: + columns: + - column: + name: has_dictionary + type: BOOLEAN + - column: + name: system_managed + type: BOOLEAN + tableName: entity \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml index e1c4dd304..df39f35b3 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/db.changelog-master.yaml @@ -37,5 +37,5 @@ databaseChangeLog: file: db/changelog/14-add-redaction-source-id.changelog.yaml - include: file: db/changelog/15-dossier-remove-dossier-state.changelog.yaml - - + - include: + file: db/changelog/16-added-has-dictionary-to-entities.changelog.yaml \ No newline at end of file diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java index c967d1356..de5a207c6 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/service/TypeProvider.java @@ -29,6 +29,8 @@ public class TypeProvider { type.setRecommendation(false); type.setCaseInsensitive(true); type.setDossierTemplateId(dossierTemplate.getId()); + type.setHasDictionary(true); + type.setSystemManaged(false); type.setDossierId(dossier != null ? dossier.getId() : null); var createdType = dictionaryClient.addType(type); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java index 2cf1cb100..dd1541f17 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateStatsTest.java @@ -73,6 +73,8 @@ public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTe .addToDictionaryAction(false) .dossierTemplateId(dossierTemplate2.getId()) .dossierId(null) + .hasDictionary(true) + .systemManaged(false) .build()); assertThat(addedType).isNotNull(); @@ -93,6 +95,8 @@ public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTe .addToDictionaryAction(false) .dossierTemplateId(dossierTemplate2.getId()) .dossierId(null) + .hasDictionary(true) + .systemManaged(false) .build()); var entries2 = new ArrayList(); entries2.add("entry1"); @@ -113,6 +117,8 @@ public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTe .addToDictionaryAction(false) .dossierTemplateId(dossierTemplate3.getId()) .dossierId(null) + .hasDictionary(true) + .systemManaged(false) .build()); assertThat(addedType3).isNotNull(); @@ -136,6 +142,8 @@ public class DossierTemplateStatsTest extends AbstractPersistenceServerServiceTe .description("Something") .addToDictionaryAction(false) .dossierTemplateId(dossierTemplate5.getId()) + .hasDictionary(true) + .systemManaged(false) .build()); assertThat(addedType5).isNotNull(); From 9a5dfa251f579bf31408c8a02dce71051335ab26 Mon Sep 17 00:00:00 2001 From: aoezyetimoglu Date: Tue, 22 Mar 2022 13:35:04 +0100 Subject: [PATCH 09/10] RED-3246: As an admin I want to clone a dossier template --- .../v1/server/integration/tests/DossierTemplateTest.java | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java index 5ea7e8773..104519e7f 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/DossierTemplateTest.java @@ -168,6 +168,8 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { .entries(List.of(DictionaryEntry.builder().entryId(1001).value("dictEntry1").version(23).deleted(false).typeId("t.getType()").build())) .falsePositiveEntries(List.of(DictionaryEntry.builder().entryId(2001).value("dictEntry2").version(23).deleted(false).typeId("t.getType()").build())) .falseRecommendationEntries(List.of(DictionaryEntry.builder().entryId(3001).value("dictEntry3").version(23).deleted(false).typeId("t.getType()").build())) + .hasDictionary(true) + .systemManaged(false) .build(); Type type2 = Type.builder() .type("t2") @@ -186,6 +188,8 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { .entries(List.of(DictionaryEntry.builder().entryId(1001).value("dictEntry1").version(23).deleted(false).typeId("t2.getType()").build())) .falsePositiveEntries(List.of(DictionaryEntry.builder().entryId(2001).value("dictEntry2").version(23).deleted(false).typeId("t2.getType()").build())) .falseRecommendationEntries(List.of(DictionaryEntry.builder().entryId(3001).value("dictEntry3").version(23).deleted(false).typeId("t2.getType()").build())) + .hasDictionary(true) + .systemManaged(false) .build(); var createdType1 = dictionaryClient.addType(type); var createdType2 = dictionaryClient.addType(type2); From f4068b213745e084997de2251d69fc52e8577aee Mon Sep 17 00:00:00 2001 From: devplant Date: Wed, 23 Mar 2022 10:14:14 +0200 Subject: [PATCH 10/10] RED-3594 - archived dossier can be unarchived, when using trash - remove from the list of archived dossiers the ones that were soft deleted - update junit tests --- .../peristence/v1/server/controller/DossierController.java | 2 +- .../peristence/v1/server/integration/tests/DossierTest.java | 2 +- 2 files changed, 2 insertions(+), 2 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 5e46e62f8..d253a9f91 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 @@ -143,7 +143,7 @@ public class DossierController implements DossierResource { var archivedDossiers = convert(dossierService.getAllDossiers() .stream() - .filter(p -> p.getArchivedTime() != null && p.getHardDeletedTime() == null) + .filter(p -> p.getArchivedTime() != null && p.getHardDeletedTime() == null && p.getSoftDeletedTime() == null) .collect(Collectors.toList()), Dossier.class, new DossierMapper()); archivedDossiers.sort((dossier1, dossier2) -> dossier2.getArchivedTime().compareTo(dossier1.getArchivedTime())); 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 0212a0fc7..ed55b66bc 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 @@ -182,7 +182,7 @@ public class DossierTest extends AbstractPersistenceServerServiceTest { assertThat(dossierClient.getAllDossiers(true, false)).hasSize(2); assertThat(dossierClient.getAllDossiers(false, true)).hasSize(1); assertThat(dossierClient.getAllDossiers(true, true)).hasSize(2); - assertThat(dossierClient.getArchivedDossiers()).hasSize(2); + assertThat(dossierClient.getArchivedDossiers()).hasSize(1); assertThat(dossierClient.getSoftDeletedDossiers()).hasSize(1); dossierInformation = dossierClient.getDossierInformation();