From f9ac8fafe6ba5d649a013fd6250b7256acdae8d0 Mon Sep 17 00:00:00 2001 From: aoezyetimoglu Date: Fri, 29 Apr 2022 14:15:13 +0200 Subject: [PATCH] RED-3938: Extend the clone dossier template endpoint --- .../CloneDossierTemplateRequest.java | 32 +++++++++++++++++++ .../resources/DossierTemplateResource.java | 7 ++-- .../service/DossierTemplateCloneService.java | 23 ++++++------- .../controller/DossierTemplateController.java | 5 +-- .../tests/DossierTemplateTest.java | 3 +- 5 files changed, 52 insertions(+), 18 deletions(-) create mode 100644 persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/CloneDossierTemplateRequest.java diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/CloneDossierTemplateRequest.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/CloneDossierTemplateRequest.java new file mode 100644 index 000000000..7f89ef6d1 --- /dev/null +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/model/dossiertemplate/CloneDossierTemplateRequest.java @@ -0,0 +1,32 @@ +package com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate; + +import java.time.OffsetDateTime; +import java.util.HashSet; +import java.util.Set; + +import lombok.AllArgsConstructor; +import lombok.Builder; +import lombok.Data; +import lombok.NoArgsConstructor; + +@Data +@AllArgsConstructor +@NoArgsConstructor +@Builder +public class CloneDossierTemplateRequest { + + private String dossierTemplateId; + + private String nameOfClonedDossierTemplate; + + private String description; + + private OffsetDateTime validFrom; + + private OffsetDateTime validTo; + + private String cloningUserId; + + private Set downloadFileTypes = new HashSet<>(); + +} diff --git a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierTemplateResource.java b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierTemplateResource.java index b17bfb955..8e3597780 100644 --- a/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierTemplateResource.java +++ b/persistence-service-v1/persistence-service-api-v1/src/main/java/com/iqser/red/service/persistence/service/v1/api/resources/DossierTemplateResource.java @@ -1,5 +1,6 @@ package com.iqser.red.service.persistence.service.v1.api.resources; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.CloneDossierTemplateRequest; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.CreateOrUpdateDossierTemplateRequest; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplate; import org.springframework.http.HttpStatus; @@ -17,8 +18,6 @@ public interface DossierTemplateResource { String USER_ID_PARAM = "userId"; - String NAME_OF_CLONED_TOSSIER_TEMPLATE = "nameOfClonedDossierTemplate"; - @ResponseBody @ResponseStatus(HttpStatus.ACCEPTED) @PostMapping(value = DOSSIER_TEMPLATE_PATH, consumes = MediaType.APPLICATION_JSON_VALUE) @@ -41,7 +40,7 @@ public interface DossierTemplateResource { @ResponseBody @ResponseStatus(HttpStatus.OK) - @PostMapping(value = DOSSIER_TEMPLATE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE + "/clone", produces = MediaType.APPLICATION_JSON_VALUE) - DossierTemplate cloneDossierTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, @RequestParam(value = NAME_OF_CLONED_TOSSIER_TEMPLATE) String nameOfClonedDossierTemplate, @RequestParam(USER_ID_PARAM) String cloningUserId); + @PostMapping(value = DOSSIER_TEMPLATE_PATH + "/clone", produces = MediaType.APPLICATION_JSON_VALUE) + DossierTemplate cloneDossierTemplate(@RequestBody CloneDossierTemplateRequest cloneDossierTemplateRequest); } 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 a0dbcc75b..2d57737fe 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 @@ -31,6 +31,7 @@ import com.iqser.red.service.persistence.management.v1.processor.service.persist import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService; 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.CloneDossierTemplateRequest; 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.legalbasis.LegalBasis; @@ -60,26 +61,26 @@ public class DossierTemplateCloneService { private final DossierStatusPersistenceService dossierStatusPersistenceService; - public DossierTemplateEntity cloneDossierTemplate(String dossierTemplateId, String nameOfClonedDossierTemplate, String cloningUserId) { + public DossierTemplateEntity cloneDossierTemplate(CloneDossierTemplateRequest cloneDossierTemplateRequest) { - dossierTemplatePersistenceService.validateDossierTemplateNameIsUnique(nameOfClonedDossierTemplate); + dossierTemplatePersistenceService.validateDossierTemplateNameIsUnique(cloneDossierTemplateRequest.getNameOfClonedDossierTemplate()); DossierTemplateEntity clonedDossierTemplate = new DossierTemplateEntity(); - dossierTemplateRepository.findById(dossierTemplateId).ifPresentOrElse((dossierTemplate) -> { + dossierTemplateRepository.findById(cloneDossierTemplateRequest.getDossierTemplateId()).ifPresentOrElse((dossierTemplate) -> { OffsetDateTime now = OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS); clonedDossierTemplate.setId(UUID.randomUUID().toString()); - clonedDossierTemplate.setName(nameOfClonedDossierTemplate); - clonedDossierTemplate.setDescription(dossierTemplate.getDescription()); + clonedDossierTemplate.setName(cloneDossierTemplateRequest.getNameOfClonedDossierTemplate()); + clonedDossierTemplate.setDescription(cloneDossierTemplateRequest.getDescription() == null || cloneDossierTemplateRequest.getDescription().isEmpty() ? dossierTemplate.getDescription() : cloneDossierTemplateRequest.getDescription()); clonedDossierTemplate.setDateAdded(now); clonedDossierTemplate.setDateModified(now); - clonedDossierTemplate.setCreatedBy(cloningUserId); - clonedDossierTemplate.setModifiedBy(cloningUserId); - clonedDossierTemplate.setValidFrom(dossierTemplate.getValidFrom()); - clonedDossierTemplate.setValidTo(dossierTemplate.getValidTo()); + clonedDossierTemplate.setCreatedBy(cloneDossierTemplateRequest.getCloningUserId()); + clonedDossierTemplate.setModifiedBy(cloneDossierTemplateRequest.getCloningUserId()); + clonedDossierTemplate.setValidFrom(cloneDossierTemplateRequest.getValidFrom() == null ? dossierTemplate.getValidFrom() : cloneDossierTemplateRequest.getValidFrom()); + clonedDossierTemplate.setValidTo(cloneDossierTemplateRequest.getValidTo() == null ? dossierTemplate.getValidTo() : cloneDossierTemplateRequest.getValidTo()); clonedDossierTemplate.setSoftDeleteTime(dossierTemplate.getSoftDeleteTime()); - clonedDossierTemplate.setDownloadFileTypes(dossierTemplate.getDownloadFileTypes()); + clonedDossierTemplate.setDownloadFileTypes(cloneDossierTemplateRequest.getDownloadFileTypes() == null || cloneDossierTemplateRequest.getDownloadFileTypes().isEmpty() ? dossierTemplate.getDownloadFileTypes() : cloneDossierTemplateRequest.getDownloadFileTypes()); //set rules cloneRules(dossierTemplate.getId(), clonedDossierTemplate.getId()); @@ -116,7 +117,7 @@ public class DossierTemplateCloneService { dossierTemplateRepository.save(clonedDossierTemplate); }, () -> { - throw new NotFoundException(String.format(dossierTemplatePersistenceService.DOSSIER_TEMPLATE_NOT_FOUND_MESSAGE, dossierTemplateId)); + throw new NotFoundException(String.format(dossierTemplatePersistenceService.DOSSIER_TEMPLATE_NOT_FOUND_MESSAGE, cloneDossierTemplateRequest.getDossierTemplateId())); }); return clonedDossierTemplate; } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierTemplateController.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierTemplateController.java index a184b5e35..55bcfc1fa 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierTemplateController.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/controller/DossierTemplateController.java @@ -3,6 +3,7 @@ package com.iqser.red.service.peristence.v1.server.controller; import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateCloneService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.CloneDossierTemplateRequest; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.CreateOrUpdateDossierTemplateRequest; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplate; import com.iqser.red.service.persistence.service.v1.api.resources.DossierTemplateResource; @@ -46,7 +47,7 @@ public class DossierTemplateController implements DossierTemplateResource { } @Override - public DossierTemplate cloneDossierTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, String nameOfClonedDossierTemplate, String cloningUserId) { - return convert(dossierTemplateCloneService.cloneDossierTemplate(dossierTemplateId, nameOfClonedDossierTemplate, cloningUserId), DossierTemplate.class); + public DossierTemplate cloneDossierTemplate(@RequestBody CloneDossierTemplateRequest cloneDossierTemplateRequest) { + return convert(dossierTemplateCloneService.cloneDossierTemplate(cloneDossierTemplateRequest), DossierTemplate.class); } } 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 c0684f024..12bc2aa47 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 @@ -244,7 +244,8 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { assertThat(allTemplates.size()).isEqualTo(1); assertThat(allTemplates.get(0)).isEqualTo(dossierTemplate); - var clonedDT = dossierTemplateClient.cloneDossierTemplate(dossierTemplate.getId(), "Clone of " + dossierTemplate.getName(), "user"); + CloneDossierTemplateRequest cdtr = CloneDossierTemplateRequest.builder().dossierTemplateId(dossierTemplate.getId()).nameOfClonedDossierTemplate("Clone of " + dossierTemplate.getName()).cloningUserId("user").build(); + var clonedDT = dossierTemplateClient.cloneDossierTemplate(cdtr); assertThat(clonedDT.getName()).isEqualTo("Clone of " + dossierTemplate.getName()); var loadedTemplate = dossierTemplateClient.getDossierTemplate(clonedDT.getId());