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 622c7af00..805f19058 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 @@ -46,7 +46,7 @@ public class DossierPersistenceService { public DossierEntity insert(CreateOrUpdateDossierRequest createOrUpdateDossierRequest) { DossierEntity dossier = new DossierEntity(); - BeanUtils.copyProperties(createOrUpdateDossierRequest, dossier); + BeanUtils.copyProperties(createOrUpdateDossierRequest, dossier, "watermarkId", "previewWatermarkId"); dossier.setId(UUID.randomUUID().toString()); dossier.setDate(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); dossier.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); @@ -66,7 +66,7 @@ public class DossierPersistenceService { public void update(String dossierId, CreateOrUpdateDossierRequest createOrUpdateDossierRequest) { dossierRepository.findById(dossierId).ifPresent(dossier -> { - BeanUtils.copyProperties(createOrUpdateDossierRequest, dossier); + BeanUtils.copyProperties(createOrUpdateDossierRequest, dossier, "watermarkId", "previewWatermarkId"); dossier.setDossierTemplate(dossierTemplateRepository.getOne(createOrUpdateDossierRequest.getDossierTemplateId())); dossier.setLastUpdated(OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS)); @@ -99,27 +99,33 @@ public class DossierPersistenceService { private void handleWatermark(CreateOrUpdateDossierRequest createOrUpdateDossierRequest, DossierEntity dossier) { if (createOrUpdateDossierRequest.getWatermarkId() != null) { - var watermarkEntity = watermarkService.getWatermark(createOrUpdateDossierRequest.getWatermarkId()); - if (watermarkEntity.getDossierTemplateId().equals(createOrUpdateDossierRequest.getDossierTemplateId())) { - if (!watermarkEntity.isEnabled()) { - throw new BadRequestException("Watermark configuration is disabled"); + if (!createOrUpdateDossierRequest.getWatermarkId().equals(dossier.getWatermarkId())) { + var watermarkEntity = watermarkService.getWatermark(createOrUpdateDossierRequest.getWatermarkId()); + if (watermarkEntity.getDossierTemplateId().equals(createOrUpdateDossierRequest.getDossierTemplateId())) { + if (!watermarkEntity.isEnabled()) { + throw new BadRequestException("Watermark configuration is disabled"); + } + dossier.setWatermarkId(createOrUpdateDossierRequest.getWatermarkId()); + dossier.setWatermark(watermarkEntity); + } else { + throw new BadRequestException("Invalid watermark id - dossierTemplate id does not match"); } - dossier.setWatermark(watermarkEntity); - } else { - throw new BadRequestException("Invalid watermark id - dossierTemplate id does not match"); } } else { dossier.setWatermark(null); } if (createOrUpdateDossierRequest.getPreviewWatermarkId() != null) { - var previewWatermarkEntity = watermarkService.getWatermark(createOrUpdateDossierRequest.getPreviewWatermarkId()); - if (previewWatermarkEntity.getDossierTemplateId().equals(createOrUpdateDossierRequest.getDossierTemplateId())) { - if (!previewWatermarkEntity.isEnabled()) { - throw new BadRequestException("Preview watermark configuration is disabled"); + if (!createOrUpdateDossierRequest.getPreviewWatermarkId().equals(dossier.getPreviewWatermarkId())) { + var previewWatermarkEntity = watermarkService.getWatermark(createOrUpdateDossierRequest.getPreviewWatermarkId()); + if (previewWatermarkEntity.getDossierTemplateId().equals(createOrUpdateDossierRequest.getDossierTemplateId())) { + if (!previewWatermarkEntity.isEnabled()) { + throw new BadRequestException("Preview watermark configuration is disabled"); + } + dossier.setPreviewWatermarkId(createOrUpdateDossierRequest.getPreviewWatermarkId()); + dossier.setPreviewWatermark(previewWatermarkEntity); + } else { + throw new BadRequestException("Invalid preview watermark id - dossierTemplate id does not match"); } - dossier.setPreviewWatermark(previewWatermarkEntity); - } else { - throw new BadRequestException("Invalid preview watermark id - dossierTemplate id does not match"); } } else { dossier.setPreviewWatermark(null); 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 c94708e28..8d989ba07 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 @@ -77,7 +77,7 @@ public class DossierTest extends AbstractPersistenceServerServiceTest { var changes = dossierClient.changesSince(JSONPrimitive.of(start)); assertThat(changes).isNotEmpty(); - // update + // update with a disabled preview watermark CreateOrUpdateDossierRequest cru = new CreateOrUpdateDossierRequest(); cru.setDossierTemplateId(dossier.getId()); cru.setWatermarkId(watermarkConfig.getId()); @@ -102,14 +102,35 @@ public class DossierTest extends AbstractPersistenceServerServiceTest { } cru.setPreviewWatermarkId(watermarkConfig.getId()); + // update the watermark preview to an enabled one var updated = dossierClient.updateDossier(cru, dossier.getId()); assertThat(updated.getDossierName()).isEqualTo("Dossier 1 Update"); + assertThat(updated.getWatermarkId()).isNull(); assertThat(updated.getPreviewWatermarkId()).isEqualTo(watermarkConfig.getId()); assertThat(updated.getDossierStatusId()).isEqualTo(loadedDossierStatus.getId()); assertThat(watermarkClient.isWatermarkUsed(watermarkConfig.getId())).isEqualTo(JSONPrimitive.of(true)); + // disable the watermark used + watermarkConfig.setEnabled(false); + watermarkClient.createOrUpdateWatermark(watermarkConfig); + // update dossier description, while the watermark used was disabled + cru.setDescription("new description"); + updated = dossierClient.updateDossier(cru, dossier.getId()); + assertThat(updated.getDescription()).isEqualTo(cru.getDescription()); + assertThat(updated.getPreviewWatermarkId()).isEqualTo(watermarkConfig.getId()); + assertThat(updated.getWatermarkId()).isNull(); + + cru.setPreviewWatermarkId(watermarkConfigDisabled.getId()); + //try to update the dossier with a different disabled watermark + try { + dossierClient.updateDossier(cru, dossier.getId()); + } catch (FeignException e) { + assertThat(e.status()).isEqualTo(400); + } + // put dossier status to null + cru.setPreviewWatermarkId(watermarkConfig.getId()); cru.setDossierStatusId(null); updated = dossierClient.updateDossier(cru, dossier.getId()); assertThat(updated.getDossierStatusId()).isNull();