RED-3246: As an admin I want to clone a dossier template
This commit is contained in:
parent
ba37f0eed1
commit
99bfa5510b
@ -0,0 +1,237 @@
|
||||
package com.iqser.red.service.persistence.management.v1.processor.service;
|
||||
|
||||
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.UUID;
|
||||
|
||||
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.ConflictException;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.exception.NotFoundException;
|
||||
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.DossierTemplatePersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.FileAttributeConfigPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.LegalBasisMappingPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.ReportTemplatePersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.RulesPersistenceService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.repository.DossierTemplateRepository;
|
||||
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.storage.commons.service.StorageService;
|
||||
|
||||
import lombok.RequiredArgsConstructor;
|
||||
import lombok.extern.slf4j.Slf4j;
|
||||
|
||||
@Slf4j
|
||||
@Service
|
||||
@RequiredArgsConstructor
|
||||
public class DossierTemplateCloneService {
|
||||
|
||||
private final DossierTemplateRepository dossierTemplateRepository;
|
||||
private final LegalBasisMappingPersistenceService legalBasisMappingPersistenceService;
|
||||
private final RulesPersistenceService rulesPersistenceService;
|
||||
private final DossierTemplatePersistenceService dossierTemplatePersistenceService;
|
||||
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;
|
||||
|
||||
|
||||
public DossierTemplateEntity cloneDossierTemplate(String dossierTemplateId, String nameOfClonedDossierTemplate, String cloningUserId) {
|
||||
|
||||
dossierTemplatePersistenceService.validateDossierTemplateNameIsUnique(nameOfClonedDossierTemplate);
|
||||
|
||||
DossierTemplateEntity clonedDossierTemplate = new DossierTemplateEntity();
|
||||
|
||||
dossierTemplateRepository.findById(dossierTemplateId).ifPresentOrElse((dossierTemplate) -> {
|
||||
|
||||
OffsetDateTime now = OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS);
|
||||
clonedDossierTemplate.setId(UUID.randomUUID().toString());
|
||||
clonedDossierTemplate.setName(nameOfClonedDossierTemplate);
|
||||
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
|
||||
cloneRules(dossierTemplate.getId(), clonedDossierTemplate.getId());
|
||||
//set legal basis
|
||||
cloneLegalBasisMapping(dossierTemplate.getId(), clonedDossierTemplate.getId());
|
||||
|
||||
clonedDossierTemplate.setDossierTemplateStatus(DossierTemplateStatus.valueOf(dossierTemplatePersistenceService.computeDossierTemplateStatus(clonedDossierTemplate)
|
||||
.name()));
|
||||
dossierTemplateRepository.save(clonedDossierTemplate);
|
||||
|
||||
//set dictionaries
|
||||
clonedDossierTemplate.setDossierTypes(cloneDictionaries(dossierTemplate.getId(), clonedDossierTemplate.getId()));
|
||||
|
||||
//set dossier attributes
|
||||
cloneDossierAttributesConfig(dossierTemplate.getId(), clonedDossierTemplate.getId());
|
||||
|
||||
//set file attributes
|
||||
cloneFileAttributesGeneralConfig(dossierTemplate.getId(), clonedDossierTemplate.getId());
|
||||
|
||||
clonedDossierTemplate.setFileAttributeConfigs(cloneFileAttributesConfig(dossierTemplate.getId(), clonedDossierTemplate.getId()));
|
||||
|
||||
//set report templates
|
||||
clonedDossierTemplate.setReportTemplates(cloneReportTemplates(dossierTemplate, clonedDossierTemplate.getId()));
|
||||
|
||||
//set watermarks
|
||||
cloneWatermark(dossierTemplate.getId(), clonedDossierTemplate.getId());
|
||||
|
||||
//set colors
|
||||
cloneColors(dossierTemplate.getId(), clonedDossierTemplate.getId());
|
||||
|
||||
dossierTemplateRepository.save(clonedDossierTemplate);
|
||||
|
||||
}, () -> {
|
||||
throw new NotFoundException(String.format(dossierTemplatePersistenceService.DOSSIER_TEMPLATE_NOT_FOUND_MESSAGE, dossierTemplateId));
|
||||
});
|
||||
return clonedDossierTemplate;
|
||||
}
|
||||
|
||||
|
||||
private void cloneRules(String dossierTemplateId, String clonedDossierTemplateId) {
|
||||
|
||||
rulesPersistenceService.setRules(rulesPersistenceService.getRules(dossierTemplateId).getValue(), clonedDossierTemplateId);
|
||||
}
|
||||
|
||||
|
||||
private void cloneLegalBasisMapping(String dossierTemplateId, String clonedDossierTemplateId) {
|
||||
|
||||
legalBasisMappingPersistenceService.setLegalBasisMapping(clonedDossierTemplateId, convert(legalBasisMappingPersistenceService.getLegalBasisMapping(dossierTemplateId), LegalBasis.class));
|
||||
}
|
||||
|
||||
|
||||
private List<TypeEntity> cloneDictionaries(String dossierTemplateId, String clonedDossierTemplateId) {
|
||||
|
||||
List<TypeEntity> clonedTypes = new ArrayList<>();
|
||||
var types = dictionaryPersistenceService.getAllTypesForDossierTemplate(dossierTemplateId);
|
||||
for (TypeEntity t : types) {
|
||||
TypeEntity te = dictionaryPersistenceService.addType(t.getType(), clonedDossierTemplateId, t.getHexColor(), t.getRecommendationHexColor(), t.getRank(), t.isHint(), t.isCaseInsensitive(), t.isRecommendation(), t.getDescription(), t.isAddToDictionaryAction(), t.getLabel(), null);
|
||||
te.setDossierTemplateId(clonedDossierTemplateId);
|
||||
clonedTypes.add(te);
|
||||
}
|
||||
return clonedTypes;
|
||||
}
|
||||
|
||||
|
||||
private void cloneDossierAttributesConfig(String dossierTemplateId, String clonedDossierTemplateId) {
|
||||
|
||||
List<DossierAttributeConfigEntity> dacList = new ArrayList<>();
|
||||
var dossierAttributesConfig = dossierAttributeConfigPersistenceService.getDossierAttributes(dossierTemplateId);
|
||||
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(clonedDossierTemplateId, dacList);
|
||||
}
|
||||
|
||||
|
||||
private void cloneFileAttributesGeneralConfig(String dossierTemplateId, String clonedDossierTemplateId) {
|
||||
|
||||
var fileAttributesGeneralConfig = fileAttributeConfigPersistenceService.getFileAttributesGeneralConfiguration(dossierTemplateId);
|
||||
var fagc = FileAttributesGeneralConfigurationEntity.builder()
|
||||
.dossierTemplateId(clonedDossierTemplateId)
|
||||
.delimiter(fileAttributesGeneralConfig.getDelimiter())
|
||||
.filenameMappingColumnHeaderName(fileAttributesGeneralConfig.getFilenameMappingColumnHeaderName())
|
||||
.build();
|
||||
fileAttributeConfigPersistenceService.setFileAttributesGeneralConfig(clonedDossierTemplateId, fagc);
|
||||
}
|
||||
|
||||
|
||||
private List<FileAttributeConfigEntity> cloneFileAttributesConfig(String dossierTemplateId, String clonedDossierTemplateId) {
|
||||
|
||||
List<FileAttributeConfigEntity> facList = new ArrayList<>();
|
||||
var fileAttributesConfig = fileAttributeConfigPersistenceService.getFileAttributes(dossierTemplateId);
|
||||
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(clonedDossierTemplateId, facList);
|
||||
|
||||
return fileAttributeConfigPersistenceService.getFileAttributes(clonedDossierTemplateId);
|
||||
}
|
||||
|
||||
|
||||
private List<ReportTemplateEntity> cloneReportTemplates(DossierTemplateEntity dossierTemplate, String clonedDossierTemplateId) {
|
||||
|
||||
var reportTemplates = dossierTemplate.getReportTemplates();
|
||||
for (ReportTemplateEntity rte : reportTemplates) {
|
||||
var storedReportTemplate = storageService.getObject(rte.getStorageId());
|
||||
String storageId = clonedDossierTemplateId + "/" + rte.getFileName();
|
||||
String templateId = UUID.randomUUID().toString();
|
||||
try {
|
||||
storageService.storeObject(storageId, storedReportTemplate.getInputStream());
|
||||
} catch (IOException e) {
|
||||
throw new ConflictException("Could not clone report templates of dossier template.");
|
||||
}
|
||||
reportTemplatePersistenceService.insert(clonedDossierTemplateId, templateId, storageId, rte.getFileName(), rte.isActiveByDefault(), rte.isMultiFileReport());
|
||||
}
|
||||
return reportTemplatePersistenceService.findByDossierTemplateId(clonedDossierTemplateId);
|
||||
}
|
||||
|
||||
|
||||
private void cloneWatermark(String dossierTemplateId, String clonedDossierTemplateId) {
|
||||
|
||||
var watermark = watermarkService.getWatermark(dossierTemplateId);
|
||||
WatermarkEntity we = WatermarkEntity.builder()
|
||||
.dossierTemplateId(clonedDossierTemplateId)
|
||||
.text(watermark.getText())
|
||||
.hexColor(watermark.getHexColor())
|
||||
.opacity(watermark.getOpacity())
|
||||
.fontType(watermark.getFontType())
|
||||
.fontSize(watermark.getFontSize())
|
||||
.orientation(watermark.getOrientation())
|
||||
.build();
|
||||
watermarkService.saveWatermark(clonedDossierTemplateId, we);
|
||||
}
|
||||
|
||||
|
||||
private void cloneColors(String dossierTemplateId, String clonedDossierTemplateId) {
|
||||
|
||||
var colors = colorsService.getColors(dossierTemplateId);
|
||||
var clonedColors = new ColorsEntity();
|
||||
BeanUtils.copyProperties(colors, clonedColors);
|
||||
clonedColors.setDossierTemplateId(clonedDossierTemplateId);
|
||||
colorsService.saveColors(clonedColors);
|
||||
}
|
||||
|
||||
}
|
||||
@ -1,11 +1,7 @@
|
||||
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;
|
||||
@ -15,25 +11,13 @@ 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;
|
||||
|
||||
@ -46,13 +30,6 @@ 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
|
||||
@ -93,7 +70,7 @@ public class DossierTemplatePersistenceService {
|
||||
}
|
||||
|
||||
|
||||
private DossierTemplateStatus computeDossierTemplateStatus(DossierTemplateEntity dossierTemplate) {
|
||||
public DossierTemplateStatus computeDossierTemplateStatus(DossierTemplateEntity dossierTemplate) {
|
||||
|
||||
var legalBasis = legalBasisMappingPersistenceService.getLegalBasisMapping(dossierTemplate.getId());
|
||||
if (legalBasis == null || legalBasis.isEmpty()) {
|
||||
@ -164,128 +141,4 @@ public class DossierTemplatePersistenceService {
|
||||
}
|
||||
|
||||
|
||||
public DossierTemplateEntity cloneDossierTemplate(String dossierTemplateId, String nameOfClonedDossierTemplate, String cloningUserId) {
|
||||
|
||||
validateDossierTemplateNameIsUnique(nameOfClonedDossierTemplate);
|
||||
|
||||
DossierTemplateEntity clonedDossierTemplate = new DossierTemplateEntity();
|
||||
|
||||
dossierTemplateRepository.findById(dossierTemplateId).ifPresentOrElse((dossierTemplate) -> {
|
||||
|
||||
OffsetDateTime now = OffsetDateTime.now().truncatedTo(ChronoUnit.MILLIS);
|
||||
clonedDossierTemplate.setId(UUID.randomUUID().toString());
|
||||
clonedDossierTemplate.setName(nameOfClonedDossierTemplate);
|
||||
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<TypeEntity> 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<DossierAttributeConfigEntity> 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<FileAttributeConfigEntity> 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));
|
||||
});
|
||||
return clonedDossierTemplate;
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@ -1,6 +1,7 @@
|
||||
package com.iqser.red.service.peristence.v1.server.controller;
|
||||
|
||||
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.DossierTemplateCloneService;
|
||||
import com.iqser.red.service.persistence.management.v1.processor.service.persistence.DossierTemplatePersistenceService;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.CreateOrUpdateDossierTemplateRequest;
|
||||
import com.iqser.red.service.persistence.service.v1.api.model.dossiertemplate.DossierTemplate;
|
||||
@ -22,6 +23,7 @@ import static com.iqser.red.service.persistence.management.v1.processor.utils.Ma
|
||||
public class DossierTemplateController implements DossierTemplateResource {
|
||||
|
||||
private final DossierTemplatePersistenceService dossierTemplatePersistenceService;
|
||||
private final DossierTemplateCloneService dossierTemplateCloneService;
|
||||
|
||||
@Override
|
||||
public DossierTemplate createOrUpdateDossierTemplate(@RequestBody CreateOrUpdateDossierTemplateRequest dossierTemplate) {
|
||||
@ -45,6 +47,6 @@ public class DossierTemplateController implements DossierTemplateResource {
|
||||
|
||||
@Override
|
||||
public DossierTemplate cloneDossierTemplate(@PathVariable(DOSSIER_TEMPLATE_ID) String dossierTemplateId, String nameOfClonedDossierTemplate, String cloningUserId) {
|
||||
return convert(dossierTemplatePersistenceService.cloneDossierTemplate(dossierTemplateId, nameOfClonedDossierTemplate, cloningUserId), DossierTemplate.class);
|
||||
return convert(dossierTemplateCloneService.cloneDossierTemplate(dossierTemplateId, nameOfClonedDossierTemplate, cloningUserId), DossierTemplate.class);
|
||||
}
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user