From 6b780873757ea9efdb6ff94a93fe0acf0c2f389f Mon Sep 17 00:00:00 2001 From: Ali Oezyetimoglu Date: Mon, 8 Aug 2022 15:49:24 +0200 Subject: [PATCH] RED-4610: Support of multi-file word report templates --- .../redaction/report/v1/server/Application.java | 4 ++++ .../v1/server/service/ReportGenerationService.java | 9 +++++---- .../v1/server/settings/ReportTemplateSettings.java | 13 +++++++++++++ 3 files changed, 22 insertions(+), 4 deletions(-) create mode 100644 redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/settings/ReportTemplateSettings.java diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/Application.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/Application.java index 6957e78..6f33fa7 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/Application.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/Application.java @@ -3,10 +3,13 @@ package com.iqser.red.service.redaction.report.v1.server; import com.iqser.red.commons.spring.DefaultWebMvcConfiguration; import com.iqser.red.service.redaction.report.v1.server.client.DossierClient; import com.iqser.red.service.redaction.report.v1.server.configuration.MessagingConfiguration; +import com.iqser.red.service.redaction.report.v1.server.settings.ReportTemplateSettings; + import org.springframework.boot.SpringApplication; import org.springframework.boot.actuate.autoconfigure.security.servlet.ManagementWebSecurityAutoConfiguration; import org.springframework.boot.autoconfigure.SpringBootApplication; import org.springframework.boot.autoconfigure.security.servlet.SecurityAutoConfiguration; +import org.springframework.boot.context.properties.EnableConfigurationProperties; import org.springframework.cloud.openfeign.EnableFeignClients; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Import; @@ -19,6 +22,7 @@ import io.micrometer.core.instrument.MeterRegistry; @SpringBootApplication(exclude = {SecurityAutoConfiguration.class, ManagementWebSecurityAutoConfiguration.class}) @Import({DefaultWebMvcConfiguration.class, MessagingConfiguration.class}) @EnableFeignClients(basePackageClasses = {DossierClient.class}) +@EnableConfigurationProperties(ReportTemplateSettings.class) public class Application { /** diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ReportGenerationService.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ReportGenerationService.java index d357082..180957a 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ReportGenerationService.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ReportGenerationService.java @@ -31,6 +31,7 @@ import com.iqser.red.service.redaction.report.v1.server.model.MultiFileDocument; import com.iqser.red.service.redaction.report.v1.server.model.MultiFileWorkbook; import com.iqser.red.service.redaction.report.v1.server.model.PlaceholderModel; import com.iqser.red.service.redaction.report.v1.server.model.ReportRedactionEntry; +import com.iqser.red.service.redaction.report.v1.server.settings.ReportTemplateSettings; import com.iqser.red.service.redaction.report.v1.server.storage.ReportStorageService; import com.iqser.red.service.redaction.v1.model.RedactionLog; import com.iqser.red.storage.commons.exception.StorageObjectDoesNotExist; @@ -56,7 +57,7 @@ public class ReportGenerationService { private final ExcelReportGenerationService excelTemplateReportGenerationService; private final GeneratePlaceholderService generatePlaceholderService; private final DictionaryClient dictionaryClient; - + private final ReportTemplateSettings reportTemplateSettings; @SneakyThrows @Timed("redactmanager_generateReports") @@ -132,7 +133,7 @@ public class ReportGenerationService { for (MultiFileDocument multiFileDocument : multiFileDocuments) { - if (reportEntries.size() >= 2000) { + if (reportEntries.size() >= reportTemplateSettings.getMultiFileChunkSize()) { try (ByteArrayInputStream is = new ByteArrayInputStream(multiFileDocument.getTemplateAsBytes())) { XWPFDocument doc = new XWPFDocument(is); @@ -145,7 +146,7 @@ public class ReportGenerationService { continue; } - if (multiFileDocument.getNumberOfEntries() >= 2000) { + if (multiFileDocument.getNumberOfEntries() >= reportTemplateSettings.getMultiFileChunkSize()) { byte[] wordDoc = wordReportGenerationService.toByteArray(multiFileDocument.getDocument()); String storageId = reportStorageService.storeObject(reportMessage.getDownloadId(), wordDoc); storedFileInformation.add(new StoredFileInformation(null, storageId, ReportType.WORD_TEMPLATE_MULTI_FILE, multiFileDocument.getTemplateId(), multiFileDocument.getDocumentPartNr())); @@ -157,7 +158,7 @@ public class ReportGenerationService { multiFileDocument.setNumberOfEntries(0); } } - wordReportGenerationService.generateWordReport(reportEntries, placeholderModel, multiFileDocument.getTemplateName(), multiFileDocument.getDocument(), fileStatus, dossier, isLastFile ? true : multiFileDocument.getNumberOfEntries() + reportEntries.size() >= 2000); + wordReportGenerationService.generateWordReport(reportEntries, placeholderModel, multiFileDocument.getTemplateName(), multiFileDocument.getDocument(), fileStatus, dossier, isLastFile ? isLastFile : multiFileDocument.getNumberOfEntries() + reportEntries.size() >= reportTemplateSettings.getMultiFileChunkSize()); multiFileDocument.setNumberOfEntries(multiFileDocument.getNumberOfEntries() + reportEntries.size()); } diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/settings/ReportTemplateSettings.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/settings/ReportTemplateSettings.java new file mode 100644 index 0000000..6b6d8e2 --- /dev/null +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/settings/ReportTemplateSettings.java @@ -0,0 +1,13 @@ +package com.iqser.red.service.redaction.report.v1.server.settings; + +import org.springframework.boot.context.properties.ConfigurationProperties; + +import lombok.Data; + +@Data +@ConfigurationProperties("redaction-report-service") +public class ReportTemplateSettings { + + private int multiFileChunkSize = 2000; + +} \ No newline at end of file