diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierTemplatePersistenceService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierTemplatePersistenceService.java index 33d83c0bc..cd58c9e27 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierTemplatePersistenceService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/persistence/DossierTemplatePersistenceService.java @@ -1,7 +1,11 @@ package com.iqser.red.service.persistence.management.v1.processor.service.persistence; +import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; + +import java.io.IOException; import java.time.OffsetDateTime; import java.time.temporal.ChronoUnit; +import java.util.ArrayList; import java.util.List; import java.util.Optional; import java.util.UUID; @@ -11,13 +15,25 @@ import javax.transaction.Transactional; import org.springframework.beans.BeanUtils; import org.springframework.stereotype.Service; +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.ColorsEntity; +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.FileAttributesGeneralConfigurationEntity; +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.TypeEntity; +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.WatermarkEntity; +import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierAttributeConfigEntity; import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity; +import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileAttributeConfigEntity; +import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ReportTemplateEntity; 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.ColorsService; +import com.iqser.red.service.persistence.management.v1.processor.service.WatermarkService; import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.CreateOrUpdateDossierTemplateRequest; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplateStatus; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.legalbasis.LegalBasis; +import com.iqser.red.service.persistence.service.v1.api.resources.ReportTemplateResource; +import com.iqser.red.storage.commons.service.StorageService; import lombok.RequiredArgsConstructor; @@ -30,10 +46,18 @@ public class DossierTemplatePersistenceService { private final DossierTemplateRepository dossierTemplateRepository; private final LegalBasisMappingPersistenceService legalBasisMappingPersistenceService; private final RulesPersistenceService rulesPersistenceService; + private final DossierAttributeConfigPersistenceService dossierAttributeConfigPersistenceService; + private final DictionaryPersistenceService dictionaryPersistenceService; + private final FileAttributeConfigPersistenceService fileAttributeConfigPersistenceService; + private final ReportTemplatePersistenceService reportTemplatePersistenceService; + private final WatermarkService watermarkService; + private final ColorsService colorsService; + private final StorageService storageService; @Transactional public DossierTemplateEntity createOrUpdateDossierTemplate(CreateOrUpdateDossierTemplateRequest createOrUpdateDossierRequest) { + if (createOrUpdateDossierRequest.getDossierTemplateId() != null) { Optional dossierTemplate = dossierTemplateRepository.findById(createOrUpdateDossierRequest.getDossierTemplateId()); if (dossierTemplate.isPresent()) { @@ -70,6 +94,7 @@ public class DossierTemplatePersistenceService { private DossierTemplateStatus computeDossierTemplateStatus(DossierTemplateEntity dossierTemplate) { + var legalBasis = legalBasisMappingPersistenceService.getLegalBasisMapping(dossierTemplate.getId()); if (legalBasis == null || legalBasis.isEmpty()) { return DossierTemplateStatus.INCOMPLETE; @@ -91,6 +116,7 @@ public class DossierTemplatePersistenceService { public void validateDossierTemplateNameIsUnique(String templateName) { + getAllDossierTemplates().forEach(existing -> { if (existing.getName().equals(templateName)) { throw new ConflictException("DossierTemplate name must be unique"); @@ -98,6 +124,7 @@ public class DossierTemplatePersistenceService { }); } + public List getAllDossierTemplates() { var allDossierTemplates = dossierTemplateRepository.findAllWhereDeletedIsFalse(); @@ -106,15 +133,20 @@ public class DossierTemplatePersistenceService { return allDossierTemplates; } + public DossierTemplateEntity getDossierTemplate(String dossierTemplateId) { - var dossierTemplate = dossierTemplateRepository.findByIdAndNotDeleted(dossierTemplateId).orElseThrow(() -> new NotFoundException(String.format(DOSSIER_TEMPLATE_NOT_FOUND_MESSAGE, dossierTemplateId))); + + var dossierTemplate = dossierTemplateRepository.findByIdAndNotDeleted(dossierTemplateId) + .orElseThrow(() -> new NotFoundException(String.format(DOSSIER_TEMPLATE_NOT_FOUND_MESSAGE, dossierTemplateId))); dossierTemplate.setDossierTemplateStatus(computeDossierTemplateStatus(dossierTemplate)); return dossierTemplate; } + @Transactional public void deleteDossierTemplate(String dossierTemplateId, String deletingUserId) { + dossierTemplateRepository.findById(dossierTemplateId).ifPresentOrElse((dossierTemplate) -> { var hasNonDeletedDossiers = dossierTemplate.getDossiers().stream().anyMatch(template -> template.getHardDeletedTime() == null); @@ -139,18 +171,117 @@ public class DossierTemplatePersistenceService { DossierTemplateEntity clonedDossierTemplate = new DossierTemplateEntity(); dossierTemplateRepository.findById(dossierTemplateId).ifPresentOrElse((dossierTemplate) -> { - BeanUtils.copyProperties(dossierTemplate, clonedDossierTemplate); + OffsetDateTime now = OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS); clonedDossierTemplate.setId(UUID.randomUUID().toString()); clonedDossierTemplate.setName(nameOfClonedDossierTemplate); - clonedDossierTemplate.setCreatedBy(cloningUserId); - clonedDossierTemplate.setModifiedBy(cloningUserId); + clonedDossierTemplate.setDescription(dossierTemplate.getDescription()); clonedDossierTemplate.setDateAdded(now); clonedDossierTemplate.setDateModified(now); + clonedDossierTemplate.setCreatedBy(cloningUserId); + clonedDossierTemplate.setModifiedBy(cloningUserId); + clonedDossierTemplate.setValidFrom(dossierTemplate.getValidFrom()); + clonedDossierTemplate.setValidTo(dossierTemplate.getValidTo()); + clonedDossierTemplate.setSoftDeleteTime(dossierTemplate.getSoftDeleteTime()); + clonedDossierTemplate.setDownloadFileTypes(dossierTemplate.getDownloadFileTypes()); + + //set rules + rulesPersistenceService.setRules(rulesPersistenceService.getRules(dossierTemplate.getId()).getValue(), clonedDossierTemplate.getId()); + //set legal basis + legalBasisMappingPersistenceService.setLegalBasisMapping(clonedDossierTemplate.getId(), convert(legalBasisMappingPersistenceService.getLegalBasisMapping(dossierTemplate.getId()), LegalBasis.class)); + clonedDossierTemplate.setDossierTemplateStatus(DossierTemplateStatus.valueOf(computeDossierTemplateStatus(clonedDossierTemplate).name())); dossierTemplateRepository.save(clonedDossierTemplate); + //set dictionaries + List clonedTypes = new ArrayList<>(); + var types = dictionaryPersistenceService.getAllTypesForDossierTemplate(dossierTemplate.getId()); + for (TypeEntity t : types) { + TypeEntity te = dictionaryPersistenceService.addType(t.getType(), clonedDossierTemplate.getId(), t.getHexColor(), t.getRecommendationHexColor(), t.getRank(), t.isHint(), t.isCaseInsensitive(), t.isRecommendation(), t.getDescription(), t.isAddToDictionaryAction(), t.getLabel(), null); + te.setDossierTemplateId(clonedDossierTemplate.getId()); + clonedTypes.add(te); + } + clonedDossierTemplate.setDossierTypes(clonedTypes); + + //set dossier attributes + var dossierAttributesConfig = dossierAttributeConfigPersistenceService.getDossierAttributes(dossierTemplate.getId()); + List dacList = new ArrayList<>(); + dossierAttributesConfig.forEach(dossierAttributeConfigEntity -> { + var dac = DossierAttributeConfigEntity.builder() + .label(dossierAttributeConfigEntity.getLabel()) + .editable(dossierAttributeConfigEntity.isEditable()) + .placeholder(dossierAttributeConfigEntity.getPlaceholder()) + .type(dossierAttributeConfigEntity.getType()) + .build(); + dacList.add(dac); + }); + dossierAttributeConfigPersistenceService.setDossierAttributesConfig(clonedDossierTemplate.getId(), dacList); + + //set file attributes + var fileAttributesGeneralConfig = fileAttributeConfigPersistenceService.getFileAttributesGeneralConfiguration(dossierTemplate.getId()); + var fagc = FileAttributesGeneralConfigurationEntity.builder() + .dossierTemplateId(clonedDossierTemplate.getId()) + .delimiter(fileAttributesGeneralConfig.getDelimiter()) + .filenameMappingColumnHeaderName(fileAttributesGeneralConfig.getFilenameMappingColumnHeaderName()) + .build(); + fileAttributeConfigPersistenceService.setFileAttributesGeneralConfig(clonedDossierTemplate.getId(), fagc); + + var fileAttributesConfig = fileAttributeConfigPersistenceService.getFileAttributes(dossierTemplate.getId()); + List facList = new ArrayList<>(); + fileAttributesConfig.forEach(fileAttributeConfigEntity -> { + var fac = FileAttributeConfigEntity.builder() + .csvColumnHeader(fileAttributeConfigEntity.getCsvColumnHeader()) + .label(fileAttributeConfigEntity.getLabel()) + .primaryAttribute(fileAttributeConfigEntity.isPrimaryAttribute()) + .editable(fileAttributeConfigEntity.isEditable()) + .filterable(fileAttributeConfigEntity.isFilterable()) + .displayedInFileList(fileAttributeConfigEntity.isDisplayedInFileList()) + .placeholder(fileAttributeConfigEntity.getPlaceholder()) + .type(fileAttributeConfigEntity.getType()) + .build(); + facList.add(fac); + }); + fileAttributeConfigPersistenceService.setFileAttributesConfig(clonedDossierTemplate.getId(), facList); + clonedDossierTemplate.setFileAttributeConfigs(fileAttributeConfigPersistenceService.getFileAttributes(clonedDossierTemplate.getId())); + + //set report templates + var reportTemplates = dossierTemplate.getReportTemplates(); + for (ReportTemplateEntity rte : reportTemplates) { + var storedReportTemplate = storageService.getObject(rte.getStorageId()); + String storageId = clonedDossierTemplate.getId() + "/" + rte.getFileName(); + String templateId = UUID.randomUUID().toString(); + try { + storageService.storeObject(storageId, storedReportTemplate.getInputStream()); + } catch (IOException e) { + throw new ConflictException("Could not clone dossier template."); + } + reportTemplatePersistenceService.insert(clonedDossierTemplate.getId(), templateId, storageId, rte.getFileName(), rte.isActiveByDefault(), rte.isMultiFileReport()); + } + clonedDossierTemplate.setReportTemplates(reportTemplatePersistenceService.findByDossierTemplateId(clonedDossierTemplate.getId())); + + //set watermarks + var watermark = watermarkService.getWatermark(dossierTemplate.getId()); + WatermarkEntity we = WatermarkEntity.builder() + .dossierTemplateId(clonedDossierTemplate.getId()) + .text(watermark.getText()) + .hexColor(watermark.getHexColor()) + .opacity(watermark.getOpacity()) + .fontType(watermark.getFontType()) + .fontSize(watermark.getFontSize()) + .orientation(watermark.getOrientation()) + .build(); + watermarkService.saveWatermark(clonedDossierTemplate.getId(), we); + + //set colors + var colors = colorsService.getColors(dossierTemplate.getId()); + var clonedColors = new ColorsEntity(); + BeanUtils.copyProperties(colors, clonedColors); + clonedColors.setDossierTemplateId(clonedDossierTemplate.getId()); + colorsService.saveColors(clonedColors); + + dossierTemplateRepository.save(clonedDossierTemplate); + }, () -> { throw new NotFoundException(String.format(DOSSIER_TEMPLATE_NOT_FOUND_MESSAGE, dossierTemplateId)); }); 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 0705a649b..52231e876 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 @@ -1,26 +1,62 @@ package com.iqser.red.service.peristence.v1.server.integration.tests; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; -import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; -import com.iqser.red.service.peristence.v1.server.integration.client.LegalBasisClient; -import com.iqser.red.service.peristence.v1.server.integration.client.RulesClient; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; -import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; -import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimitive; -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.CreateOrUpdateDossierTemplateRequest; -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplateStatus; -import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.legalbasis.LegalBasis; - -import feign.FeignException; -import org.junit.Test; -import org.springframework.beans.BeanUtils; -import org.springframework.beans.factory.annotation.Autowired; +import static com.iqser.red.service.persistence.management.v1.processor.utils.MagicConverter.convert; +import static org.assertj.core.api.Assertions.assertThat; +import static org.mockito.ArgumentMatchers.any; +import static org.mockito.ArgumentMatchers.anyString; +import static org.mockito.Mockito.when; +import java.nio.charset.StandardCharsets; +import java.time.OffsetDateTime; import java.util.Collections; import java.util.List; -import static org.assertj.core.api.Assertions.assertThat; +import org.junit.Test; +import org.mockito.Mock; +import org.mockito.Mockito; +import org.springframework.beans.BeanUtils; +import org.springframework.beans.factory.annotation.Autowired; +import org.springframework.boot.test.mock.mockito.MockBean; + +import com.iqser.red.service.peristence.v1.server.integration.client.DictionaryClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierAttributeConfigClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierClient; +import com.iqser.red.service.peristence.v1.server.integration.client.DossierTemplateClient; +import com.iqser.red.service.peristence.v1.server.integration.client.FileAttributeConfigClient; +import com.iqser.red.service.peristence.v1.server.integration.client.ReportTemplateClient; +import com.iqser.red.service.peristence.v1.server.integration.client.WatermarkClient; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTemplateTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.service.DossierTesterAndProvider; +import com.iqser.red.service.peristence.v1.server.integration.utils.AbstractPersistenceServerServiceTest; +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.ColorsEntity; +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.FileAttributesGeneralConfigurationEntity; +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.TypeEntity; +import com.iqser.red.service.persistence.management.v1.processor.entity.configuration.WatermarkEntity; +import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierAttributeConfigEntity; +import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.DossierTemplateEntity; +import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.FileAttributeConfigEntity; +import com.iqser.red.service.persistence.management.v1.processor.entity.dossier.ReportTemplateEntity; +import com.iqser.red.service.persistence.management.v1.processor.service.ColorsService; +import com.iqser.red.service.persistence.management.v1.processor.service.WatermarkService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DictionaryPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierAttributeConfigPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileAttributeConfigPersistenceService; +import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.CreateOrUpdateDossierTemplateRequest; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierAttributeConfig; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplateStatus; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.FileAttributesGeneralConfiguration; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.ReportTemplateUploadRequest; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.Colors; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.Watermark; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.configuration.WatermarkOrientation; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.DossierAttributeType; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileAttributeConfig; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.dossier.file.FileAttributeType; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.DictionaryEntry; +import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.type.Type; + +import feign.FeignException; public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { @@ -36,6 +72,22 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { @Autowired private DossierClient dossierClient; + @Autowired + private DictionaryClient dictionaryClient; + + @Autowired + private DossierAttributeConfigClient dossierAttributeConfigClient; + + @Autowired + private FileAttributeConfigClient fileAttributeConfigClient; + + @Autowired + private ReportTemplateClient reportTemplateClient; + + @Autowired + private WatermarkClient watermarkClient; + + @Test public void testDossierTemplate() { @@ -45,7 +97,6 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { assertThat(allTemplates.size()).isEqualTo(1); assertThat(allTemplates.get(0)).isEqualTo(dossierTemplate); - // update CreateOrUpdateDossierTemplateRequest cru = new CreateOrUpdateDossierTemplateRequest(); cru.setDossierTemplateId(dossierTemplate.getId()); @@ -55,7 +106,6 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { var updated = dossierTemplateClient.createOrUpdateDossierTemplate(cru); assertThat(updated.getName()).isEqualTo("Template 1 Update"); - var loadedTemplate = dossierTemplateClient.getDossierTemplate(dossierTemplate.getId()); assertThat(loadedTemplate).isEqualTo(updated); @@ -68,9 +118,9 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { var testDossier = dossierTesterAndProvider.provideTestDossier(updated); - try{ + try { dossierTemplateClient.deleteDossierTemplate(updated.getId(), "1"); - }catch (FeignException e){ + } catch (FeignException e) { assertThat(e.status()).isEqualTo(400); } @@ -82,7 +132,8 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { @Test(expected = FeignException.class) - public void testDossierTemplateUniqueNameConflict(){ + public void testDossierTemplateUniqueNameConflict() { + var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); var dossierTemplate2 = dossierTemplateTesterAndProvider.provideTestTemplate(); } @@ -90,8 +141,91 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { @Test public void testCloneDossierTemplate() { + var dossierTemplate = dossierTemplateTesterAndProvider.provideTestTemplate(); + Type type = Type.builder() + .id("t.id") + .type("t.getType()") + .dossierTemplateId(dossierTemplate.getId()) + .hexColor("#ddddd") + .recommendationHexColor("#cccccc") + .rank(999) + .isHint(false) + .isRecommendation(false) + .isCaseInsensitive(false) + .description("t.getDescription()") + .addToDictionaryAction(true) + .label("t.getLabel()") + .dossierId(null) + .version(23) + .entries(List.of(DictionaryEntry.builder().entryId(1001).value("dictEntry1").version(23).deleted(false).typeId("t.getType()").build())) + .falsePositiveEntries(List.of(DictionaryEntry.builder().entryId(2001).value("dictEntry2").version(23).deleted(false).typeId("t.getType()").build())) + .falseRecommendationEntries(List.of(DictionaryEntry.builder().entryId(3001).value("dictEntry3").version(23).deleted(false).typeId("t.getType()").build())) + .build(); + dictionaryClient.addType(type); + dossierAttributeConfigClient.setDossierAttributesConfig(dossierTemplate.getId(), List.of(DossierAttributeConfig.builder() + .dossierTemplateId(dossierTemplate.getId()) + .editable(false) + .id("dossierAttributeId") + .label("labelDossierAttribute") + .type(DossierAttributeType.TEXT) + .placeholder("placeholderDossier") + .build())); + fileAttributeConfigClient.setFileAttributesGeneralConfig(dossierTemplate.getId(), FileAttributesGeneralConfiguration.builder() + .dossierTemplateId(dossierTemplate.getId()) + .delimiter("") + .filenameMappingColumnHeaderName("filenameMappingColumnHeaderName") + .build()); + fileAttributeConfigClient.setFileAttributesConfig(dossierTemplate.getId(), List.of(FileAttributeConfig.builder() + .dossierTemplateId(dossierTemplate.getId()) + .primaryAttribute(true) + .csvColumnHeader("12345") + .displayedInFileList(false) + .editable(false) + .filterable(false) + .id("fileAttributeId") + .label("labelFileAttribute") + .type(FileAttributeType.TEXT) + .placeholder("placeholderFile") + .build())); + ReportTemplateEntity rte = ReportTemplateEntity.builder() + .templateId("templateId") + .dossierTemplate(convert(dossierTemplate, DossierTemplateEntity.class)) + .dossierTemplateId(dossierTemplate.getId()) + .dossiers(null) + .activeByDefault(false) + .fileName("rte") + .multiFileReport(false) + .storageId("storageId") + .uploadDate(OffsetDateTime.now()) + .build(); + reportTemplateClient.uploadTemplate(ReportTemplateUploadRequest.builder().template("some text".getBytes(StandardCharsets.UTF_8)).dossierTemplateId(dossierTemplate.getId()).fileName("Report Template").activeByDefault(true).multiFileReport(false).build()); + watermarkClient.saveWatermark(dossierTemplate.getId(), Watermark.builder() + .dossierTemplateId(dossierTemplate.getId()) + .fontSize(10) + .fontType("Arial") + .text("watermark") + .hexColor("#123456") + .opacity(1) + .orientation(WatermarkOrientation.HORIZONTAL) + .build()); + var col = Colors.builder() + .analysisColor("#111111") + .defaultColor("#222222") + .dossierTemplateId(dossierTemplate.getId()) + .dictionaryRequestColor("#333333") + .requestAdd("#444444") + .ignoredHintColor("#555555") + .requestRemove("#666666") + .requestRemove("#777777") + .notRedacted("#888888") + .previewColor("#999999") + .updatedColor("#aaaaaa") + .manualRedactionColor("#bbbbbb") + .build(); + dictionaryClient.setColors(dossierTemplate.getId(), col); + var allTemplates = dossierTemplateClient.getAllDossierTemplates(); assertThat(allTemplates.size()).isEqualTo(1); assertThat(allTemplates.get(0)).isEqualTo(dossierTemplate); @@ -100,7 +234,6 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { assertThat(clonedDT.getName()).isEqualTo("Clone of " + dossierTemplate.getName()); var loadedTemplate = dossierTemplateClient.getDossierTemplate(clonedDT.getId()); - assertThat(loadedTemplate).isEqualTo(clonedDT); assertThat(loadedTemplate.getId()).isEqualTo(clonedDT.getId()); assertThat(loadedTemplate.getDescription()).isEqualTo(dossierTemplate.getDescription()); assertThat(loadedTemplate.getValidFrom()).isEqualTo(dossierTemplate.getValidFrom()); @@ -108,6 +241,13 @@ public class DossierTemplateTest extends AbstractPersistenceServerServiceTest { assertThat(loadedTemplate.getDownloadFileTypes()).isEqualTo(dossierTemplate.getDownloadFileTypes()); assertThat(loadedTemplate.getModifiedBy()).isEqualTo("user"); assertThat(loadedTemplate.getCreatedBy()).isEqualTo("user"); + + assertThat(dossierAttributeConfigClient.getDossierAttributes(dossierTemplate.getId()).get(0).getLabel()).isEqualTo(dossierAttributeConfigClient.getDossierAttributes(clonedDT.getId()).get(0).getLabel()); + assertThat(fileAttributeConfigClient.getFileAttributeConfigs(dossierTemplate.getId()).get(0).getCsvColumnHeader()).isEqualTo(fileAttributeConfigClient.getFileAttributeConfigs(clonedDT.getId()).get(0).getCsvColumnHeader()); + assertThat(fileAttributeConfigClient.getFileAttributesGeneralConfig(dossierTemplate.getId()).getFilenameMappingColumnHeaderName()).isEqualTo(fileAttributeConfigClient.getFileAttributesGeneralConfig(clonedDT.getId()).getFilenameMappingColumnHeaderName()); + assertThat(reportTemplateClient.getAvailableReportTemplates(dossierTemplate.getId()).get(0).getFileName()).isEqualTo(reportTemplateClient.getAvailableReportTemplates(clonedDT.getId()).get(0).getFileName()); + assertThat(watermarkClient.getWatermark(dossierTemplate.getId()).getText()).isEqualTo(watermarkClient.getWatermark(clonedDT.getId()).getText()); + assertThat(dictionaryClient.getColors(dossierTemplate.getId()).getRequestAdd()).isEqualTo(dictionaryClient.getColors(clonedDT.getId()).getRequestAdd()); } }