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
This commit is contained in:
devplant 2022-06-22 16:40:43 +03:00
parent 889c8f18a8
commit 93d54c0886
3 changed files with 38 additions and 6 deletions

View File

@ -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<WatermarkEntity> getWatermarksForDossierTemplateId(String dossierTemplateId) {
return watermarkRepository.findByDossierTemplateId(dossierTemplateId);
}

View File

@ -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;

View File

@ -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());