From e136be5bd4b84c1fd6dcacd5c149dadf3b6a845c Mon Sep 17 00:00:00 2001 From: Timo Bejan Date: Mon, 23 May 2022 20:28:39 +0300 Subject: [PATCH] RED-3942 - Improve clone performance --- .../service/DossierTemplateCloneService.java | 21 +++++++++++-------- 1 file changed, 12 insertions(+), 9 deletions(-) diff --git a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java index 4bc477345..cb62a6e84 100644 --- a/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java +++ b/persistence-service-v1/persistence-service-processor-v1/src/main/java/com/iqser/red/service/persistence/management/v1/processor/service/DossierTemplateCloneService.java @@ -123,7 +123,6 @@ public class DossierTemplateCloneService { private void cloneDictionariesWithEntries(String dossierTemplateId, String clonedDossierTemplateId) { - var types = dictionaryPersistenceService.getAllTypesForDossierTemplate(dossierTemplateId, false); for (TypeEntity t : types) { var type = dictionaryPersistenceService.addType(t.getType(), clonedDossierTemplateId, t.getHexColor(), t.getRecommendationHexColor(), t.getRank(), t.isHint(), t.isCaseInsensitive(), t.isRecommendation(), t.getDescription(), t.isAddToDictionaryAction(), t.getLabel(), null, t.isHasDictionary(), t.isSystemManaged(), t.isAutoHideSkipped()); @@ -190,15 +189,19 @@ public class DossierTemplateCloneService { var reportTemplates = reportTemplatePersistenceService.findByDossierTemplateId(dossierTemplate.getId()); 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."); + if (storageService.objectExists(rte.getStorageId())) { + 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()); + } else { + log.debug("Deleted Report-template {} will not be cloned", rte.getTemplateId()); } - reportTemplatePersistenceService.insert(clonedDossierTemplateId, templateId, storageId, rte.getFileName(), rte.isActiveByDefault(), rte.isMultiFileReport()); } }