From 4e2a07ae570247ab0dfaca62b0f1b07daa0d68f3 Mon Sep 17 00:00:00 2001 From: devplant Date: Thu, 29 Sep 2022 12:54:43 +0300 Subject: [PATCH] RED-2200 - Dossier Template export and import - fix conflict for watermarks - when import to override a template and template's new name is not valid, set a valid one --- .../service/DossierTemplateImportService.java | 6 +++++- .../export/DossierTemplateExportService.java | 18 +++++++++++------- 2 files changed, 16 insertions(+), 8 deletions(-) diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierTemplateImportService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierTemplateImportService.java index d3e8a6ab1..9e1960de1 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierTemplateImportService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/DossierTemplateImportService.java @@ -109,8 +109,12 @@ public class DossierTemplateImportService { var watermarkNameToEntity = currentWatermarkConfigs.stream().collect(Collectors.toMap(WatermarkEntity::getName, Function.identity())); request.getWatermarks().forEach(watermark -> { + log.info("watermark to add: " + watermark.getName()); if (!watermarkNameToEntity.isEmpty() && watermarkNameToEntity.get(watermark.getName()) != null) { + watermark.setId(watermarkNameToEntity.get(watermark.getName()).getId()); + } else { + watermark.setId(null); } watermark.setDossierTemplateId(dossierTemplateId); watermarkService.createOrUpdateWatermark(watermark); @@ -265,7 +269,7 @@ public class DossierTemplateImportService { private void updateDossierTemplateMeta(DossierTemplateEntity dossierTemplateEntity, DossierTemplate dossierTemplate, String userId) { if (!dossierTemplateEntity.getName().equalsIgnoreCase(dossierTemplate.getName())) { - dossierTemplatePersistenceService.validateDossierTemplateNameIsUnique(dossierTemplate.getName()); + this.validateDossierTemplateName(dossierTemplate); } OffsetDateTime now = OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS); dossierTemplateEntity.setName(dossierTemplate.getName()); diff --git a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/export/DossierTemplateExportService.java b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/export/DossierTemplateExportService.java index e4c019fae..6fb1400cb 100644 --- a/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/export/DossierTemplateExportService.java +++ b/persistence-service-v1/persistence-service-server-v1/src/main/java/com/iqser/red/service/peristence/v1/server/service/export/DossierTemplateExportService.java @@ -13,6 +13,7 @@ import com.iqser.red.service.persistence.management.v1.processor.entity.configur import com.iqser.red.service.persistence.management.v1.processor.entity.download.DownloadStatusEntity; import com.iqser.red.service.persistence.management.v1.processor.exception.BadRequestException; 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.*; import com.iqser.red.service.persistence.service.v1.api.model.common.JSONPrimitive; import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.*; @@ -49,14 +50,19 @@ public class DossierTemplateExportService { private final DossierTemplatePersistenceService dossierTemplatePersistenceService; private final DownloadStatusPersistenceService downloadStatusPersistenceService; private final DossierAttributeConfigPersistenceService dossierAttributeConfigPersistenceService; + private final DossierStatusPersistenceService dossierStatusPersistenceService; + private final DictionaryPersistenceService dictionaryPersistenceService; private final FileAttributeConfigPersistenceService fileAttributeConfigPersistenceService; private final LegalBasisMappingPersistenceService legalBasisMappingPersistenceService; private final RulesPersistenceService rulesPersistenceService; private final FileManagementStorageService fileManagementStorageService; + private final ReportTemplatePersistenceService reportTemplatePersistenceService; private final ColorsService colorsService; private final EntryPersistenceService entryPersistenceService; private final ObjectMapper objectMapper = new ObjectMapper(); + private final WatermarkService watermarkService; + private final RabbitTemplate rabbitTemplate; public JSONPrimitive prepareExportDownload(ExportDownloadRequest request) { @@ -87,7 +93,7 @@ public class DossierTemplateExportService { objectMapper.writeValueAsBytes(convert(dossierTemplate, DossierTemplate.class)))); //add watermark json file - var watermarkList = dossierTemplate.getWatermarkConfigs(); + var watermarkList = watermarkService.getWatermarksForDossierTemplateId(dossierTemplateId); fileSystemBackedArchiver.addEntry(new FileSystemBackedArchiver.ArchiveModel(null, getFilename(ExportFilename.WATERMARK, JSON_EXT), objectMapper.writeValueAsBytes(convert(watermarkList, Watermark.class)))); @@ -97,7 +103,7 @@ public class DossierTemplateExportService { objectMapper.writeValueAsBytes(convert(colors, Colors.class)))); // add dossier statuses - var dossierStatusList = dossierTemplate.getDossierStatusList(); + var dossierStatusList = dossierStatusPersistenceService.getAllDossierStatusForTemplate(dossierTemplateId); fileSystemBackedArchiver.addEntries(new FileSystemBackedArchiver.ArchiveModel(null, getFilename(ExportFilename.DOSSIER_STATUS, JSON_EXT), objectMapper.writeValueAsBytes(convert(dossierStatusList, DossierStatusInfo.class)))); @@ -107,7 +113,7 @@ public class DossierTemplateExportService { objectMapper.writeValueAsBytes(convert(dossierAttributesConfig, DossierAttributeConfig.class)))); // add file attribute configs - var fileAttributeConfigList = dossierTemplate.getFileAttributeConfigs(); + var fileAttributeConfigList = fileAttributeConfigPersistenceService.getFileAttributes(dossierTemplateId); fileSystemBackedArchiver.addEntries(new FileSystemBackedArchiver.ArchiveModel(null, getFilename(ExportFilename.FILE_ATTRIBUTE_CONFIG, JSON_EXT), objectMapper.writeValueAsBytes(convert(fileAttributeConfigList, FileAttributeConfig.class)))); @@ -127,7 +133,7 @@ public class DossierTemplateExportService { objectMapper.writeValueAsBytes(ruleSet.getValue()))); //N files with the related report templates - var reportTemplateList = dossierTemplate.getReportTemplates(); + var reportTemplateList = reportTemplatePersistenceService.findByDossierTemplateId(dossierTemplate.getId()); fileSystemBackedArchiver.addEntries(new FileSystemBackedArchiver.ArchiveModel(null, getFilename(ExportFilename.REPORT_TEMPLATE, JSON_EXT), objectMapper.writeValueAsBytes(convert(reportTemplateList, ReportTemplate.class)))); reportTemplateList.forEach(reportTemplate -> { @@ -141,9 +147,7 @@ public class DossierTemplateExportService { // and 1 txt file for every type: entries, false positives and false recommendation // remove the types related to dossiers and also the ones that are deleted - var dossierTypes = dossierTemplate.getDossierTypes().stream() - .filter(t -> t.getDossierId() == null) - .filter(t -> !t.isDeleted()).collect(Collectors.toList()); + var dossierTypes = dictionaryPersistenceService.getAllTypesForDossierTemplate(dossierTemplateId, false); for (TypeEntity typeEntity : dossierTypes) { // log.info("type: " + typeEntity.getType() + " " + typeEntity.getDossierId() + " " + typeEntity.isDeleted()); fileSystemBackedArchiver.addEntries(new FileSystemBackedArchiver.ArchiveModel(typeEntity.getType(), getFilename(ExportFilename.DOSSIER_TYPE, JSON_EXT),