From 93d54c088634985d8ab2d00513e252be8351042f Mon Sep 17 00:00:00 2001 From: devplant Date: Wed, 22 Jun 2022 16:40:43 +0300 Subject: [PATCH 1/2] RED-4249-As an admin of a dossier template I want to customize the highlighting color of a skipped redaction of an entity - initialise existing watermark configurations for the new columns - update of tests --- .../processor/service/WatermarkService.java | 15 +++++++++++ .../sql/31-watermark-configuration.sql | 4 ++- .../integration/tests/WatermarkTest.java | 25 +++++++++++++++---- 3 files changed, 38 insertions(+), 6 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/WatermarkService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/WatermarkService.java index 96000dc49..0b098bc84 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/WatermarkService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/WatermarkService.java @@ -2,6 +2,7 @@ package com.iqser.red.service.persistence.management.v1.processor.service; import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.WatermarkEntity; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; +import com.iqser.red.service.persistence.management.v1.processor.exception.ConflictException; import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierRepository; @@ -52,10 +53,12 @@ public class WatermarkService { if (watermark.getId() != null) { // update watermarkRepository.findById(watermark.getId()) .ifPresentOrElse(loadedWatermark -> { + validateWatermarkNameIsUnique(watermark.getName(), watermark.getDossierTemplateId(), loadedWatermark.getId()); BeanUtils.copyProperties(watermark, loadedWatermark, "dossierTemplateId"); var dossierTemplate = dossierTemplatePersistenceService.getDossierTemplate(watermark.getDossierTemplateId()); loadedWatermark.setDossierTemplate(dossierTemplate); }, () -> { + validateWatermarkNameIsUnique(watermark.getName(), watermark.getDossierTemplateId(), 0); WatermarkEntity watermarkEntity = new WatermarkEntity(); BeanUtils.copyProperties(watermark, watermarkEntity, "id"); var dossierTemplate = dossierTemplatePersistenceService.getDossierTemplate(watermark.getDossierTemplateId()); @@ -64,6 +67,7 @@ public class WatermarkService { }); return watermarkRepository.findById(watermark.getId()).orElseThrow(() -> new NotFoundException("Watermark Configuration not found")); } else { + validateWatermarkNameIsUnique(watermark.getName(), watermark.getDossierTemplateId(), 0); WatermarkEntity watermarkEntity = new WatermarkEntity(); BeanUtils.copyProperties(watermark, watermarkEntity, "id"); var dossierTemplate = dossierTemplatePersistenceService.getDossierTemplate(watermark.getDossierTemplateId()); @@ -78,12 +82,23 @@ public class WatermarkService { // if (watermark == null) { // throw new BadRequestException("The watermark may not be null"); // } + if (StringUtils.isBlank(watermark.getName())) { + throw new BadRequestException("The watermaek name must not be null"); + } if (StringUtils.isNotBlank(watermark.getText()) && !StringUtils.isAsciiPrintable(StringUtils.normalizeSpace(watermark.getText()))) { throw new BadRequestException("The watermark may only contain ASCII characters"); } } + private void validateWatermarkNameIsUnique(String watermarkName, String dossierTemplateId, long watermarkId) { + getWatermarksForDossierTemplateId(dossierTemplateId).forEach(existing -> { + if (existing.getName().equals(watermarkName) && existing.getId() != watermarkId) { + throw new ConflictException("Watermark name must be unique within the same dossier template"); + } + }); + } + public List getWatermarksForDossierTemplateId(String dossierTemplateId) { return watermarkRepository.findByDossierTemplateId(dossierTemplateId); } diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/sql/31-watermark-configuration.sql b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/sql/31-watermark-configuration.sql index a7d1d47d9..246eaedad 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/sql/31-watermark-configuration.sql +++ b/persistence-service-v1/persistence-service-server-v1/src/main/resources/db/changelog/sql/31-watermark-configuration.sql @@ -1,6 +1,8 @@ -- add the generated id to watermark_configuration table alter table watermark_configuration add column id BIGINT GENERATED ALWAYS AS IDENTITY; -alter table watermark_configuration add column name VARCHAR (255), add column enabled BOOLEAN; +alter table watermark_configuration add column name VARCHAR (255), add column enabled BOOLEAN DEFAULT TRUE; +--initialise the new columns for the current watermark configurations +update watermark_configuration set name = 'Watermark ' || id, enabled = true; -- update the primary key constraint based on the new configuration and add the foreign key contraints to the dossier and dossier_template tables alter table watermark_configuration drop constraint watermark_configuration_pkey; diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/WatermarkTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/WatermarkTest.java index fce23740a..0757387c0 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/WatermarkTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/WatermarkTest.java @@ -28,14 +28,14 @@ public class WatermarkTest extends AbstractPersistenceServerServiceTest { var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); try { - watermarkClient.getWatermark(Long.valueOf(13)); + watermarkClient.getWatermark(13L); } catch (FeignException.FeignClientException e) { assertThat(e.status()).isEqualTo(404); } Watermark watermark = new Watermark(); watermark.setName("watermark name"); - watermark.setEnabled(true); +// watermark.setEnabled(true); watermark.setText("Minions ipsum chasy para tu la bodaaa bananaaaa hana dul sae. Chasy hana dul sae pepete hana dul sae belloo! Tatata bala tu ti aamoo! Jeje."); watermark.setFontSize(12); watermark.setFontType("font"); @@ -47,12 +47,27 @@ public class WatermarkTest extends AbstractPersistenceServerServiceTest { var saved = watermarkClient.createOrUpdateWatermark(watermark); var loadedWatermark = watermarkClient.getWatermark(saved.getId()); assertThat(loadedWatermark).isEqualTo(saved); - - watermark.setFontSize(14); - saved = watermarkClient.createOrUpdateWatermark(watermark); + // update current watermark + saved.setFontSize(14); + saved = watermarkClient.createOrUpdateWatermark(saved); loadedWatermark = watermarkClient.getWatermark(saved.getId()); assertThat(loadedWatermark).isEqualTo(saved); + var watermarkList = watermarkClient.getWatermarksForDossierTemplateId(dossierTemplate.getId()); + assertThat(watermarkList.size()).isEqualTo(1); + + // create new watermark with same name: + Watermark watermark2 = new Watermark(); + watermark2.setName("watermark name"); + watermark2.setOrientation(WatermarkOrientation.DIAGONAL); + watermark2.setDossierTemplateId(dossierTemplate.getId()); + + try { + var saved2 = watermarkClient.createOrUpdateWatermark(watermark2); + } catch (FeignException.FeignClientException e) { + assertThat(e.status()).isEqualTo(409); + } +// loadedWatermark = watermarkClient.getWatermark(saved.getId()); // Delete first time watermarkClient.deleteWatermark(saved.getId()); From d9060e39d85c8abb65212a098375faceeb96c805 Mon Sep 17 00:00:00 2001 From: devplant Date: Thu, 23 Jun 2022 10:43:21 +0300 Subject: [PATCH 2/2] RED-4249-As an admin of a dossier template I want to customize the highlighting color of a skipped redaction of an entity - rework after review --- .../management/v1/processor/service/WatermarkService.java | 5 +---- .../v1/server/integration/tests/WatermarkTest.java | 4 +--- persistence-service-v1/pom.xml | 2 +- 3 files changed, 3 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/WatermarkService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/WatermarkService.java index 0b098bc84..9241ee552 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/WatermarkService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/WatermarkService.java @@ -79,11 +79,8 @@ public class WatermarkService { private void validateWatermark(Watermark watermark) { -// if (watermark == null) { -// throw new BadRequestException("The watermark may not be null"); -// } if (StringUtils.isBlank(watermark.getName())) { - throw new BadRequestException("The watermaek name must not be null"); + throw new BadRequestException("The watermark name must not be null"); } if (StringUtils.isNotBlank(watermark.getText()) && !StringUtils.isAsciiPrintable(StringUtils.normalizeSpace(watermark.getText()))) { throw new BadRequestException("The watermark may only contain ASCII characters"); diff --git a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/WatermarkTest.java b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/WatermarkTest.java index 0757387c0..0b3cf6248 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/WatermarkTest.java +++ b/persistence-service-v1/persistence-service-server-v1/src/test/java/com/iqser/red/service/peristence/v1/server/integration/tests/WatermarkTest.java @@ -35,7 +35,6 @@ public class WatermarkTest extends AbstractPersistenceServerServiceTest { Watermark watermark = new Watermark(); watermark.setName("watermark name"); -// watermark.setEnabled(true); watermark.setText("Minions ipsum chasy para tu la bodaaa bananaaaa hana dul sae. Chasy hana dul sae pepete hana dul sae belloo! Tatata bala tu ti aamoo! Jeje."); watermark.setFontSize(12); watermark.setFontType("font"); @@ -63,11 +62,10 @@ public class WatermarkTest extends AbstractPersistenceServerServiceTest { watermark2.setDossierTemplateId(dossierTemplate.getId()); try { - var saved2 = watermarkClient.createOrUpdateWatermark(watermark2); + watermarkClient.createOrUpdateWatermark(watermark2); } catch (FeignException.FeignClientException e) { assertThat(e.status()).isEqualTo(409); } -// loadedWatermark = watermarkClient.getWatermark(saved.getId()); // Delete first time watermarkClient.deleteWatermark(saved.getId()); diff --git a/persistence-service-v1/pom.xml b/persistence-service-v1/pom.xml index 9a3007c32..d53903a98 100755 --- a/persistence-service-v1/pom.xml +++ b/persistence-service-v1/pom.xml @@ -27,7 +27,7 @@ 3.114.0 2.36.0 - 3.105.0 + 3.111.0 3.47.0