Pull request #387: RED-3800 clone fix

Merge in RED/persistence-service from fix-pdftron-api to master

* commit '151d466b1f75807971391c44a8a36528e49bc588':
  RED-3800 clone fix
This commit is contained in:
Timo Bejan 2022-05-03 15:01:02 +02:00
commit 76f70ad579
5 changed files with 16 additions and 19 deletions

View File

@ -15,18 +15,11 @@ import lombok.NoArgsConstructor;
@Builder @Builder
public class CloneDossierTemplateRequest { public class CloneDossierTemplateRequest {
private String dossierTemplateId; private String name;
private String nameOfClonedDossierTemplate;
private String description; private String description;
private OffsetDateTime validFrom; private OffsetDateTime validFrom;
private OffsetDateTime validTo; private OffsetDateTime validTo;
private String cloningUserId; private String cloningUserId;
private Set<DownloadFileType> downloadFileTypes = new HashSet<>(); private Set<DownloadFileType> downloadFileTypes = new HashSet<>();
} }

View File

@ -18,6 +18,8 @@ public interface DossierTemplateResource {
String USER_ID_PARAM = "userId"; String USER_ID_PARAM = "userId";
String CLONE_PATH = "/clone";
@ResponseBody @ResponseBody
@ResponseStatus(HttpStatus.ACCEPTED) @ResponseStatus(HttpStatus.ACCEPTED)
@PostMapping(value = DOSSIER_TEMPLATE_PATH, consumes = MediaType.APPLICATION_JSON_VALUE) @PostMapping(value = DOSSIER_TEMPLATE_PATH, consumes = MediaType.APPLICATION_JSON_VALUE)
@ -40,7 +42,8 @@ public interface DossierTemplateResource {
@ResponseBody @ResponseBody
@ResponseStatus(HttpStatus.OK) @ResponseStatus(HttpStatus.OK)
@PostMapping(value = DOSSIER_TEMPLATE_PATH + "/clone", produces = MediaType.APPLICATION_JSON_VALUE) @PostMapping(value = DOSSIER_TEMPLATE_PATH + DOSSIER_TEMPLATE_ID_PATH_VARIABLE+CLONE_PATH, produces = MediaType.APPLICATION_JSON_VALUE)
DossierTemplate cloneDossierTemplate(@RequestBody CloneDossierTemplateRequest cloneDossierTemplateRequest); DossierTemplate cloneDossierTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId,
@RequestBody CloneDossierTemplateRequest cloneDossierTemplateRequest);
} }

View File

@ -61,17 +61,17 @@ public class DossierTemplateCloneService {
private final DossierStatusPersistenceService dossierStatusPersistenceService; private final DossierStatusPersistenceService dossierStatusPersistenceService;
public DossierTemplateEntity cloneDossierTemplate(CloneDossierTemplateRequest cloneDossierTemplateRequest) { public DossierTemplateEntity cloneDossierTemplate(String dossierTemplateId, CloneDossierTemplateRequest cloneDossierTemplateRequest) {
dossierTemplatePersistenceService.validateDossierTemplateNameIsUnique(cloneDossierTemplateRequest.getNameOfClonedDossierTemplate()); dossierTemplatePersistenceService.validateDossierTemplateNameIsUnique(cloneDossierTemplateRequest.getName());
DossierTemplateEntity clonedDossierTemplate = new DossierTemplateEntity(); DossierTemplateEntity clonedDossierTemplate = new DossierTemplateEntity();
dossierTemplateRepository.findById(cloneDossierTemplateRequest.getDossierTemplateId()).ifPresentOrElse((dossierTemplate) -> { dossierTemplateRepository.findById(dossierTemplateId).ifPresentOrElse((dossierTemplate) -> {
OffsetDateTime now = OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS); OffsetDateTime now = OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS);
clonedDossierTemplate.setId(UUID.randomUUID().toString()); clonedDossierTemplate.setId(UUID.randomUUID().toString());
clonedDossierTemplate.setName(cloneDossierTemplateRequest.getNameOfClonedDossierTemplate()); clonedDossierTemplate.setName(cloneDossierTemplateRequest.getName());
clonedDossierTemplate.setDescription(cloneDossierTemplateRequest.getDescription() == null || cloneDossierTemplateRequest.getDescription().isEmpty() ? dossierTemplate.getDescription() : cloneDossierTemplateRequest.getDescription()); clonedDossierTemplate.setDescription(cloneDossierTemplateRequest.getDescription() == null || cloneDossierTemplateRequest.getDescription().isEmpty() ? dossierTemplate.getDescription() : cloneDossierTemplateRequest.getDescription());
clonedDossierTemplate.setDateAdded(now); clonedDossierTemplate.setDateAdded(now);
clonedDossierTemplate.setDateModified(now); clonedDossierTemplate.setDateModified(now);
@ -117,7 +117,7 @@ public class DossierTemplateCloneService {
dossierTemplateRepository.save(clonedDossierTemplate); dossierTemplateRepository.save(clonedDossierTemplate);
}, () -> { }, () -> {
throw new NotFoundException(String.format(dossierTemplatePersistenceService.DOSSIER_TEMPLATE_NOT_FOUND_MESSAGE, cloneDossierTemplateRequest.getDossierTemplateId())); throw new NotFoundException(String.format(dossierTemplatePersistenceService.DOSSIER_TEMPLATE_NOT_FOUND_MESSAGE, dossierTemplateId));
}); });
return clonedDossierTemplate; return clonedDossierTemplate;
} }

View File

@ -47,7 +47,8 @@ public class DossierTemplateController implements DossierTemplateResource {
} }
@Override @Override
public DossierTemplate cloneDossierTemplate(@RequestBody CloneDossierTemplateRequest cloneDossierTemplateRequest) { public DossierTemplate cloneDossierTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId,
return convert(dossierTemplateCloneService.cloneDossierTemplate(cloneDossierTemplateRequest), DossierTemplate.class); @RequestBody CloneDossierTemplateRequest cloneDossierTemplateRequest) {
return convert(dossierTemplateCloneService.cloneDossierTemplate(dossierTemplateId,cloneDossierTemplateRequest), DossierTemplate.class);
} }
} }

View File

@ -244,8 +244,8 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest {
assertThat(allTemplates.size()).isEqualTo(1); assertThat(allTemplates.size()).isEqualTo(1);
assertThat(allTemplates.get(0)).isEqualTo(dossierTemplate); assertThat(allTemplates.get(0)).isEqualTo(dossierTemplate);
CloneDossierTemplateRequest cdtr = CloneDossierTemplateRequest.builder().dossierTemplateId(dossierTemplate.getId()).nameOfClonedDossierTemplate("Clone of " + dossierTemplate.getName()).cloningUserId("user").build(); CloneDossierTemplateRequest cdtr = CloneDossierTemplateRequest.builder().name("Clone of " + dossierTemplate.getName()).cloningUserId("user").build();
var clonedDT = dossierTemplateClient.cloneDossierTemplate(cdtr); var clonedDT = dossierTemplateClient.cloneDossierTemplate(dossierTemplate.getId(), cdtr);
assertThat(clonedDT.getName()).isEqualTo("Clone of " + dossierTemplate.getName()); assertThat(clonedDT.getName()).isEqualTo("Clone of " + dossierTemplate.getName());
var loadedTemplate = dossierTemplateClient.getDossierTemplate(clonedDT.getId()); var loadedTemplate = dossierTemplateClient.getDossierTemplate(clonedDT.getId());