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
This commit is contained in:
devplant 2022-09-29 12:54:43 +03:00
parent 618b5dc0bb
commit 4e2a07ae57
2 changed files with 16 additions and 8 deletions

View File

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

View File

@ -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<String> 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),