From 82fba20c3c631047651789e2949d19ebdb387005 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Dominique=20Eifl=C3=A4nder?= Date: Thu, 23 Sep 2021 14:33:08 +0200 Subject: [PATCH] RED-2231: Use persistence-service instead of configuration and filemanagement-service --- .../pom.xml | 19 +- .../client/DossierAttributesClient.java | 5 +- .../client/DossierAttributesConfigClient.java | 6 +- .../v1/server/client/DossierClient.java | 5 +- .../server/client/FileAttributesClient.java | 8 - .../client/FileAttributesConfigClient.java | 9 + .../v1/server/client/FileStatusClient.java | 4 +- .../v1/server/client/RedactionLogClient.java | 5 +- .../server/client/ReportTemplateClient.java | 5 +- .../controller/StatusReportController.java | 2 +- .../ExcelTemplateReportGenerationService.java | 47 +- .../service/RedactionLogConverterService.java | 16 +- .../service/ReportGenerationService.java | 12 +- .../StatusReportGenerationService.java | 29 +- .../service/WordReportGenerationService.java | 55 +- .../src/main/resources/application-dev.yml | 2 +- .../src/main/resources/application.yml | 3 +- .../RedactionReportIntegrationTest.java | 528 ++++++++++-------- .../StatusReportGenerationServiceTest.java | 59 +- 19 files changed, 430 insertions(+), 389 deletions(-) delete mode 100644 redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/FileAttributesClient.java create mode 100644 redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/FileAttributesConfigClient.java diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/pom.xml b/redaction-report-service-v1/redaction-report-service-server-v1/pom.xml index cb62607..dc88d7f 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/pom.xml +++ b/redaction-report-service-v1/redaction-report-service-server-v1/pom.xml @@ -24,16 +24,12 @@ com.iqser.red.service redaction-service-api-v1 - 2.67.0 + 3.1.0 com.iqser.red.service file-management-service-api-v1 - - com.iqser.red.service - file-management-service-api-v1 - com.iqser.red.service configuration-service-api-v1 @@ -43,8 +39,8 @@ com.iqser.red.service - configuration-service-api-v1 - 2.29.0 + persistence-service-api-v1 + 0.5.0 com.iqser.red.service @@ -52,18 +48,11 @@ com.iqser.red.service - redaction-service-api-v1 + configuration-service-api-v1 - - - com.iqser.red.service - file-management-service-api-v1 - 2.81.0 - - org.apache.poi poi diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/DossierAttributesClient.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/DossierAttributesClient.java index 7958a35..fe686be 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/DossierAttributesClient.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/DossierAttributesClient.java @@ -1,9 +1,10 @@ package com.iqser.red.service.redaction.report.v1.server.client; -import com.iqser.red.service.file.management.v1.api.resources.DossierAttributesResource; import org.springframework.cloud.openfeign.FeignClient; -@FeignClient(name = "DossierAttributesResource", url = "${file-management-service.url}") +import com.iqser.red.service.persistence.service.v1.api.resources.DossierAttributesResource; + +@FeignClient(name = "DossierAttributesResource", url = "${persistence-service.url}") public interface DossierAttributesClient extends DossierAttributesResource { } diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/DossierAttributesConfigClient.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/DossierAttributesConfigClient.java index 16ae302..cc21957 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/DossierAttributesConfigClient.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/DossierAttributesConfigClient.java @@ -1,9 +1,9 @@ package com.iqser.red.service.redaction.report.v1.server.client; -import com.iqser.red.service.configuration.v1.api.resource.DossierAttributesResource; import org.springframework.cloud.openfeign.FeignClient; +import com.iqser.red.service.persistence.service.v1.api.resources.DossierAttributesConfigResource; -@FeignClient(name = "DossierAttributesConfigResource", url = "${configuration-service.url}") -public interface DossierAttributesConfigClient extends DossierAttributesResource { +@FeignClient(name = "DossierAttributesConfigResource", url = "${persistence-service.url}") +public interface DossierAttributesConfigClient extends DossierAttributesConfigResource { } \ No newline at end of file diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/DossierClient.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/DossierClient.java index 3b6e5be..b0759dd 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/DossierClient.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/DossierClient.java @@ -1,9 +1,10 @@ package com.iqser.red.service.redaction.report.v1.server.client; -import com.iqser.red.service.file.management.v1.api.resources.DossierResource; import org.springframework.cloud.openfeign.FeignClient; -@FeignClient(name = "DossierResource", url = "${file-management-service.url}") +import com.iqser.red.service.persistence.service.v1.api.resources.DossierResource; + +@FeignClient(name = "DossierResource", url = "${persistence-service.url}") public interface DossierClient extends DossierResource { } diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/FileAttributesClient.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/FileAttributesClient.java deleted file mode 100644 index 9d7cdd3..0000000 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/FileAttributesClient.java +++ /dev/null @@ -1,8 +0,0 @@ -package com.iqser.red.service.redaction.report.v1.server.client; - -import com.iqser.red.service.configuration.v1.api.resource.FileAttributesResource; -import org.springframework.cloud.openfeign.FeignClient; - -@FeignClient(name = "FileAttributesResource", url = "${configuration-service.url}") -public interface FileAttributesClient extends FileAttributesResource { -} diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/FileAttributesConfigClient.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/FileAttributesConfigClient.java new file mode 100644 index 0000000..91353fc --- /dev/null +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/FileAttributesConfigClient.java @@ -0,0 +1,9 @@ +package com.iqser.red.service.redaction.report.v1.server.client; + +import org.springframework.cloud.openfeign.FeignClient; + +import com.iqser.red.service.persistence.service.v1.api.resources.FileAttributesConfigResource; + +@FeignClient(name = "FileAttributesResource", url = "${persistence-service.url}") +public interface FileAttributesConfigClient extends FileAttributesConfigResource { +} diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/FileStatusClient.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/FileStatusClient.java index 86e0d73..cc05c85 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/FileStatusClient.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/FileStatusClient.java @@ -2,9 +2,9 @@ package com.iqser.red.service.redaction.report.v1.server.client; import org.springframework.cloud.openfeign.FeignClient; -import com.iqser.red.service.file.management.v1.api.resources.StatusResource; +import com.iqser.red.service.persistence.service.v1.api.resources.StatusResource; -@FeignClient(name = "StatusResource", url = "${file-management-service.url}") +@FeignClient(name = "StatusResource", url = "${persistence-service.url}") public interface FileStatusClient extends StatusResource { } diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/RedactionLogClient.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/RedactionLogClient.java index 3a53b54..4f60561 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/RedactionLogClient.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/RedactionLogClient.java @@ -1,8 +1,9 @@ package com.iqser.red.service.redaction.report.v1.server.client; -import com.iqser.red.service.file.management.v1.api.resources.RedactionLogResource; import org.springframework.cloud.openfeign.FeignClient; -@FeignClient(name = "RedactionLogResource", url = "${file-management-service.url}") +import com.iqser.red.service.persistence.service.v1.api.resources.RedactionLogResource; + +@FeignClient(name = "RedactionLogResource", url = "${persistence-service.url}") public interface RedactionLogClient extends RedactionLogResource { } diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/ReportTemplateClient.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/ReportTemplateClient.java index ecfa2bd..d58c4c5 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/ReportTemplateClient.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/client/ReportTemplateClient.java @@ -1,9 +1,10 @@ package com.iqser.red.service.redaction.report.v1.server.client; -import com.iqser.red.service.file.management.v1.api.resources.ReportTemplateResource; import org.springframework.cloud.openfeign.FeignClient; -@FeignClient(name = "ReportTemplateResource", url = "${file-management-service.url}") +import com.iqser.red.service.persistence.service.v1.api.resources.ReportTemplateResource; + +@FeignClient(name = "ReportTemplateResource", url = "${persistence-service.url}") public interface ReportTemplateClient extends ReportTemplateResource { } diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/controller/StatusReportController.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/controller/StatusReportController.java index a9ca8ea..c3dff64 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/controller/StatusReportController.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/controller/StatusReportController.java @@ -3,7 +3,7 @@ package com.iqser.red.service.redaction.report.v1.server.controller; import org.springframework.web.bind.annotation.PathVariable; import org.springframework.web.bind.annotation.RestController; -import com.iqser.red.service.file.management.v1.api.model.Dossier; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.Dossier; import com.iqser.red.service.redaction.report.v1.api.model.StatusReportResponse; import com.iqser.red.service.redaction.report.v1.api.resource.StatusReportResource; import com.iqser.red.service.redaction.report.v1.server.client.DossierClient; diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ExcelTemplateReportGenerationService.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ExcelTemplateReportGenerationService.java index ca5e65c..cce2318 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ExcelTemplateReportGenerationService.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ExcelTemplateReportGenerationService.java @@ -39,16 +39,13 @@ import org.apache.poi.ss.usermodel.Sheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.stereotype.Service; -import com.iqser.red.service.configuration.v1.api.model.DossierAttributeConfig; -import com.iqser.red.service.configuration.v1.api.model.DossierAttributesConfig; -import com.iqser.red.service.configuration.v1.api.model.FileAttributesConfig; -import com.iqser.red.service.file.management.v1.api.model.Dossier; -import com.iqser.red.service.file.management.v1.api.model.DossierAttribute; -import com.iqser.red.service.file.management.v1.api.model.DossierAttributes; -import com.iqser.red.service.file.management.v1.api.model.FileStatus; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.Dossier; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierAttribute; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierAttributeConfig; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.File; import com.iqser.red.service.redaction.report.v1.server.client.DossierAttributesClient; import com.iqser.red.service.redaction.report.v1.server.client.DossierAttributesConfigClient; -import com.iqser.red.service.redaction.report.v1.server.client.FileAttributesClient; +import com.iqser.red.service.redaction.report.v1.server.client.FileAttributesConfigClient; import com.iqser.red.service.redaction.report.v1.server.model.ImagePlaceholder; import com.iqser.red.service.redaction.report.v1.server.model.ReportRedactionEntry; import com.iqser.red.service.redaction.report.v1.server.storage.ReportStorageService; @@ -62,26 +59,25 @@ import lombok.extern.slf4j.Slf4j; @RequiredArgsConstructor public class ExcelTemplateReportGenerationService { - private final ReportStorageService reportStorageService; private final DossierAttributesClient dossierAttributesClient; private final DossierAttributesConfigClient dossierAttributesConfigClient; - private final FileAttributesClient fileAttributesClient; + private final FileAttributesConfigClient fileAttributesClient; public void generateReport(List reportEntries, String dossierTemplateId, - XSSFWorkbook workbook, FileStatus fileStatus, Dossier dossier, boolean isLastFile) { + XSSFWorkbook workbook, File fileStatus, Dossier dossier, boolean isLastFile) { List placeholders = getDefaultPlaceholders(); List imagePlaceholders = new ArrayList<>(); - DossierAttributes dossierAttributes = dossierAttributesClient.getDossierAttributes(dossier.getDossierId()); - DossierAttributesConfig dossierAttributesConfig = dossierAttributesConfigClient.getDossierAttributes(dossierTemplateId); + var dossierAttributes = dossierAttributesClient.getDossierAttributes(dossier.getId()); + var dossierAttributesConfig = dossierAttributesConfigClient.getDossierAttributes(dossierTemplateId); Map dossierAttributesPlaceholder = new HashMap<>(); //KEY:placeholder, VALUE:value - for (DossierAttributeConfig attributeConfig : dossierAttributesConfig.getDossierAttributeConfigs()) { - for (DossierAttribute dossierAttribute : dossierAttributes.getDossierAttributeList()) { - if (dossierAttribute.getDossierAttributeId().equals(attributeConfig.getId())) { + for (DossierAttributeConfig attributeConfig : dossierAttributesConfig) { + for (DossierAttribute dossierAttribute : dossierAttributes) { + if (dossierAttribute.getId().getDossierAttributeConfigId().equals(attributeConfig.getId())) { if (attributeConfig.getType().equals(DossierAttributeConfig.DossierAttributeType.IMAGE)) { if(dossierAttribute.getValue() != null) { @@ -145,8 +141,8 @@ public class ExcelTemplateReportGenerationService { Map fileAttributePlaceholders = new HashMap<>(); - FileAttributesConfig fileAttributesConfig = fileAttributesClient.getFileAttributes(dossierTemplateId); - fileAttributesConfig.getFileAttributeConfigs().forEach(fileAttributeConfig -> { + var fileAttributesConfig = fileAttributesClient.getFileAttributeConfigs(dossierTemplateId); + fileAttributesConfig.forEach(fileAttributeConfig -> { fileAttributePlaceholders.put(fileAttributeConfig.getPlaceholder(), fileAttributeConfig.getId()); }); return fileAttributePlaceholders; @@ -296,7 +292,7 @@ public class ExcelTemplateReportGenerationService { } - private String getPlaceholderValue(String placeholder, Dossier project, FileStatus fileStatus, + private String getPlaceholderValue(String placeholder, Dossier project, File fileStatus, Map fileAttributePlaceholders, Map dossierAttributesPlaceholders) { @@ -320,11 +316,14 @@ public class ExcelTemplateReportGenerationService { } if (fileAttributePlaceholders.containsKey(placeholder)) { String id = fileAttributePlaceholders.get(placeholder); - if (fileStatus.getFileAttributes() != null && fileStatus.getFileAttributes() - .getAttributeIdToValue() != null && fileStatus.getFileAttributes() - .getAttributeIdToValue() - .containsKey(id)) { - return fileStatus.getFileAttributes().getAttributeIdToValue().get(id); + + Map attributeIdToValue = new HashMap<>(); + fileStatus.getFileAttributes().forEach(fileAttribute -> { + attributeIdToValue.put(fileAttribute.getFileAttributeId().getFileAttributeConfigId(), fileAttribute.getValue()); + }); + + if (attributeIdToValue.containsKey(id)) { + return attributeIdToValue.get(id); } else { return null; } diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/RedactionLogConverterService.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/RedactionLogConverterService.java index 1a01b8a..43d3a54 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/RedactionLogConverterService.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/RedactionLogConverterService.java @@ -7,21 +7,19 @@ import java.util.Set; import org.springframework.stereotype.Service; -import com.iqser.red.service.configuration.v1.api.model.LegalBasisMapping; +import com.iqser.red.service.persistence.service.v1.api.model.data.annotations.AnnotationStatus; +import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.LegalBasis; import com.iqser.red.service.redaction.report.v1.server.model.ReportRedactionEntry; -import com.iqser.red.service.redaction.v1.model.Change; import com.iqser.red.service.redaction.v1.model.ChangeType; import com.iqser.red.service.redaction.v1.model.ManualRedactionType; import com.iqser.red.service.redaction.v1.model.Rectangle; import com.iqser.red.service.redaction.v1.model.RedactionLog; -import com.iqser.red.service.redaction.v1.model.RedactionLogEntry; -import com.iqser.red.service.redaction.v1.model.Status; @Service public class RedactionLogConverterService { public List convertAndSort(RedactionLog redactionLog, - List legalBasisMappings) { + List legalBasisMappings) { List reportEntries = new ArrayList<>(); @@ -42,12 +40,12 @@ public class RedactionLogConverterService { } if (entry.isManual() && entry.getManualRedactionType() - .equals(ManualRedactionType.ADD) && !entry.getStatus().equals(Status.APPROVED)) { + .equals(ManualRedactionType.ADD) && !entry.getStatus().equals(AnnotationStatus.APPROVED)) { return; } if (entry.isManual() && entry.getManualRedactionType() - .equals(ManualRedactionType.REMOVE) && entry.getStatus().equals(Status.APPROVED)) { + .equals(ManualRedactionType.REMOVE) && entry.getStatus().equals(AnnotationStatus.APPROVED)) { return; } @@ -61,11 +59,11 @@ public class RedactionLogConverterService { .getY(), entry.getSection(), entry.getLegalBasis() + " " + legalBasisMappings.stream() .filter(lbm -> lbm.getReason().equalsIgnoreCase(entry.getLegalBasis())) .findAny() - .map(LegalBasisMapping::getDescription) + .map(LegalBasis::getDescription) .orElse(""), entry.getLegalBasis(), legalBasisMappings.stream() .filter(lbm -> lbm.getReason().equalsIgnoreCase(entry.getLegalBasis())) .findAny() - .map(LegalBasisMapping::getDescription) + .map(LegalBasis::getDescription) .orElse(""), checkTextForNull(entry.getTextBefore()) + entry.getValue() + checkTextForNull(entry.getTextAfter()))); } } 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 804db5a..92774fe 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 @@ -8,10 +8,10 @@ import java.util.List; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.stereotype.Service; -import com.iqser.red.service.configuration.v1.api.model.LegalBasisMapping; -import com.iqser.red.service.file.management.v1.api.model.Dossier; -import com.iqser.red.service.file.management.v1.api.model.FileStatus; -import com.iqser.red.service.file.management.v1.api.model.ReportTemplate; +import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.LegalBasisMapping; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.Dossier; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.File; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.ReportTemplate; import com.iqser.red.service.redaction.report.v1.api.model.ReportRequestMessage; import com.iqser.red.service.redaction.report.v1.api.model.ReportType; import com.iqser.red.service.redaction.report.v1.api.model.StoredFileInformation; @@ -74,7 +74,7 @@ public class ReportGenerationService { int i = 1; for (int j = 0; j < reportMessage.getFileIds().size(); j++) { - FileStatus fileStatus = fileStatusClient.getFileStatus(reportMessage.getDossierId(), reportMessage.getFileIds() + File fileStatus = fileStatusClient.getFileStatus(reportMessage.getDossierId(), reportMessage.getFileIds() .get(j)); long start = System.currentTimeMillis(); @@ -136,7 +136,7 @@ public class ReportGenerationService { } catch (StorageObjectDoesNotExist e) { return new ArrayList<>(); } - List legalBasisMappings = redactionLog.getLegalBasis(); + var legalBasisMappings = redactionLog.getLegalBasis(); return redactionLogConverterService.convertAndSort(redactionLog, legalBasisMappings); } diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/StatusReportGenerationService.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/StatusReportGenerationService.java index bae93a6..cbe4355 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/StatusReportGenerationService.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/StatusReportGenerationService.java @@ -17,12 +17,12 @@ import org.apache.poi.xssf.usermodel.XSSFSheet; import org.apache.poi.xssf.usermodel.XSSFWorkbook; import org.springframework.stereotype.Service; -import com.iqser.red.service.configuration.v1.api.model.FileAttributeConfig; -import com.iqser.red.service.file.management.v1.api.model.Dossier; -import com.iqser.red.service.file.management.v1.api.model.FileAttributes; -import com.iqser.red.service.file.management.v1.api.model.FileStatus; -import com.iqser.red.service.file.management.v1.api.model.Status; -import com.iqser.red.service.redaction.report.v1.server.client.FileAttributesClient; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.Dossier; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.File; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileAttribute; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileAttributeConfig; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileStatus; +import com.iqser.red.service.redaction.report.v1.server.client.FileAttributesConfigClient; import com.iqser.red.service.redaction.report.v1.server.client.FileStatusClient; import lombok.RequiredArgsConstructor; @@ -33,16 +33,15 @@ import lombok.SneakyThrows; public class StatusReportGenerationService { private final FileStatusClient fileStatusClient; - private final FileAttributesClient fileAttributesClient; + private final FileAttributesConfigClient fileAttributesClient; public byte[] generateReport(Dossier dossier) { - List fileStatuses = fileStatusClient.getDossierStatus(dossier.getDossierId()); + List fileStatuses = fileStatusClient.getDossierStatus(dossier.getId()); - List fileAttributeConfigs = fileAttributesClient.getFileAttributes(dossier.getDossierTemplateId()) - .getFileAttributeConfigs(); + List fileAttributeConfigs = fileAttributesClient.getFileAttributeConfigs(dossier.getDossierTemplateId()); XSSFWorkbook workbook = new XSSFWorkbook(); XSSFSheet sheet = workbook.createSheet(dossier.getDossierName()); @@ -66,14 +65,16 @@ public class StatusReportGenerationService { for (int i = 0; i < fileStatuses.size(); i++) { - FileStatus fileStatus = fileStatuses.get(i); + File fileStatus = fileStatuses.get(i); String name = fileStatus.getFilename(); OffsetDateTime uploadDate = fileStatus.getLastUploaded(); String assignedTo = fileStatus.getCurrentReviewer(); - Status status = fileStatus.getStatus(); + FileStatus status = fileStatus.getStatus(); int pages = fileStatus.getNumberOfPages(); - FileAttributes fileAttributes = fileStatus.getFileAttributes(); + List fileAttributes = fileStatus.getFileAttributes(); + Map attributeIdToValue = new HashMap<>(); + fileAttributes.forEach(fileAttribute -> attributeIdToValue.put(fileAttribute.getFileAttributeId().getFileAttributeConfigId(), fileAttribute.getValue())); XSSFRow row = sheet.createRow(i + 1); @@ -94,7 +95,7 @@ public class StatusReportGenerationService { sheet.autoSizeColumn(3); sheet.autoSizeColumn(4); - Iterator> iterator = fileAttributes.getAttributeIdToValue().entrySet().iterator(); + Iterator> iterator = attributeIdToValue.entrySet().iterator(); while (iterator.hasNext()) { var nextElement = iterator.next(); if(attributesAssignment.get(nextElement.getKey()) != null) { diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/WordReportGenerationService.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/WordReportGenerationService.java index 2ea7c37..e6922f4 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/WordReportGenerationService.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/WordReportGenerationService.java @@ -25,42 +25,32 @@ import java.util.ArrayList; import java.util.Arrays; import java.util.Base64; import java.util.HashMap; -import java.util.Iterator; import java.util.List; import java.util.Map; import java.util.regex.Pattern; -import javax.annotation.PostConstruct; - import org.apache.poi.openxml4j.exceptions.InvalidFormatException; import org.apache.poi.util.Units; -import org.apache.poi.xwpf.usermodel.IBodyElement; -import org.apache.poi.xwpf.usermodel.IRunElement; import org.apache.poi.xwpf.usermodel.XWPFDocument; import org.apache.poi.xwpf.usermodel.XWPFParagraph; import org.apache.poi.xwpf.usermodel.XWPFRun; -import org.apache.poi.xwpf.usermodel.XWPFSDT; import org.apache.poi.xwpf.usermodel.XWPFTable; import org.apache.poi.xwpf.usermodel.XWPFTableCell; import org.apache.poi.xwpf.usermodel.XWPFTableRow; import org.springframework.stereotype.Service; -import com.iqser.red.service.configuration.v1.api.model.DossierAttributeConfig; -import com.iqser.red.service.configuration.v1.api.model.DossierAttributesConfig; -import com.iqser.red.service.configuration.v1.api.model.FileAttributesConfig; -import com.iqser.red.service.file.management.v1.api.model.Dossier; -import com.iqser.red.service.file.management.v1.api.model.DossierAttribute; -import com.iqser.red.service.file.management.v1.api.model.DossierAttributes; -import com.iqser.red.service.file.management.v1.api.model.FileStatus; -import com.iqser.red.service.file.management.v1.api.model.ReportTemplate; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.Dossier; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierAttribute; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierAttributeConfig; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.File; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.ReportTemplate; import com.iqser.red.service.redaction.report.v1.api.model.ReportType; import com.iqser.red.service.redaction.report.v1.server.client.DossierAttributesClient; import com.iqser.red.service.redaction.report.v1.server.client.DossierAttributesConfigClient; -import com.iqser.red.service.redaction.report.v1.server.client.FileAttributesClient; +import com.iqser.red.service.redaction.report.v1.server.client.FileAttributesConfigClient; import com.iqser.red.service.redaction.report.v1.server.model.ImagePlaceholder; import com.iqser.red.service.redaction.report.v1.server.model.ReportRedactionEntry; import com.iqser.red.service.redaction.report.v1.server.storage.ReportStorageService; -import com.iqser.red.service.redaction.report.v1.server.utils.ResourceLoader; import lombok.RequiredArgsConstructor; @@ -68,27 +58,27 @@ import lombok.RequiredArgsConstructor; @RequiredArgsConstructor public class WordReportGenerationService { - private final FileAttributesClient fileAttributesClient; + private final FileAttributesConfigClient fileAttributesClient; private final ReportStorageService reportStorageService; private final DossierAttributesClient dossierAttributesClient; private final DossierAttributesConfigClient dossierAttributesConfigClient; public byte[] generateReport(ReportType reportType, List reportEntries, - String dossierTemplateId, ReportTemplate reportTemplate, FileStatus fileStatus, + String dossierTemplateId, ReportTemplate reportTemplate, File fileStatus, Dossier dossier) { List placeholders = getDefaultPlaceholders(); List imagePlaceholders = new ArrayList<>(); - DossierAttributes dossierAttributes = dossierAttributesClient.getDossierAttributes(dossier.getDossierId()); - DossierAttributesConfig dossierAttributesConfig = dossierAttributesConfigClient.getDossierAttributes(dossierTemplateId); + var dossierAttributes = dossierAttributesClient.getDossierAttributes(dossier.getId()); + var dossierAttributesConfig = dossierAttributesConfigClient.getDossierAttributes(dossierTemplateId); Map dossierAttributesPlaceholder = new HashMap<>(); //KEY:placeholder, VALUE:value - for (DossierAttributeConfig attributeConfig : dossierAttributesConfig.getDossierAttributeConfigs()) { - for (DossierAttribute dossierAttribute : dossierAttributes.getDossierAttributeList()) { - if (dossierAttribute.getDossierAttributeId().equals(attributeConfig.getId())) { + for (DossierAttributeConfig attributeConfig : dossierAttributesConfig) { + for (DossierAttribute dossierAttribute : dossierAttributes) { + if (dossierAttribute.getId().getDossierAttributeConfigId().equals(attributeConfig.getId())) { if (attributeConfig.getType().equals(DossierAttributeConfig.DossierAttributeType.IMAGE)) { if (dossierAttribute.getValue() != null) { @@ -168,15 +158,15 @@ public class WordReportGenerationService { Map fileAttributePlaceholders = new HashMap<>(); - FileAttributesConfig fileAttributesConfig = fileAttributesClient.getFileAttributes(dossierTemplateId); - fileAttributesConfig.getFileAttributeConfigs().forEach(fileAttributeConfig -> { + var fileAttributesConfig = fileAttributesClient.getFileAttributeConfigs(dossierTemplateId); + fileAttributesConfig.forEach(fileAttributeConfig -> { fileAttributePlaceholders.put(fileAttributeConfig.getPlaceholder(), fileAttributeConfig.getId()); }); return fileAttributePlaceholders; } - private String getPlaceholderValue(String placeholder, Dossier project, FileStatus fileStatus, + private String getPlaceholderValue(String placeholder, Dossier project, File fileStatus, Map fileAttributePlaceholders, Map dossierAttributesPlaceholders) { @@ -200,11 +190,14 @@ public class WordReportGenerationService { } if (fileAttributePlaceholders.containsKey(placeholder)) { String id = fileAttributePlaceholders.get(placeholder); - if (fileStatus.getFileAttributes() != null && fileStatus.getFileAttributes() - .getAttributeIdToValue() != null && fileStatus.getFileAttributes() - .getAttributeIdToValue() - .containsKey(id)) { - return fileStatus.getFileAttributes().getAttributeIdToValue().get(id); + + Map attributeIdToValue = new HashMap<>(); + fileStatus.getFileAttributes().forEach(fileAttribute -> { + attributeIdToValue.put(fileAttribute.getFileAttributeId().getFileAttributeConfigId(), fileAttribute.getValue()); + }); + + if (attributeIdToValue.containsKey(id)) { + return attributeIdToValue.get(id); } else { return null; } diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/application-dev.yml b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/application-dev.yml index 5359a0d..94d5f4c 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/application-dev.yml +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/application-dev.yml @@ -2,4 +2,4 @@ server: port: 8084 -configuration-service.url: "http://localhost:8081" \ No newline at end of file +persistence-service.url: "http://persistence-service-v1:8080" \ No newline at end of file diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/application.yml b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/application.yml index 1d9c4c2..193fa1b 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/application.yml +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/application.yml @@ -1,8 +1,7 @@ info: description: Redaction Report Server v1 -configuration-service.url: "http://configuration-service-v1:8080" -file-management-service.url: "http://file-management-service-v1:8080" +persistence-service.url: "http://persistence-service-v1:8080" server: port: 8080 diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/test/java/com/iqser/red/service/redaction/report/v1/server/RedactionReportIntegrationTest.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/test/java/com/iqser/red/service/redaction/report/v1/server/RedactionReportIntegrationTest.java index a9f381e..c10f6d3 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/test/java/com/iqser/red/service/redaction/report/v1/server/RedactionReportIntegrationTest.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/test/java/com/iqser/red/service/redaction/report/v1/server/RedactionReportIntegrationTest.java @@ -7,7 +7,6 @@ import static org.springframework.boot.test.context.SpringBootTest.WebEnvironmen import java.io.FileOutputStream; import java.io.IOException; import java.time.OffsetDateTime; -import java.time.format.DateTimeFormatter; import java.util.ArrayList; import java.util.Arrays; import java.util.Base64; @@ -28,21 +27,18 @@ import org.springframework.test.context.junit4.SpringRunner; import com.amazonaws.services.s3.AmazonS3; import com.fasterxml.jackson.core.type.TypeReference; import com.fasterxml.jackson.databind.ObjectMapper; -import com.iqser.red.service.configuration.v1.api.model.DossierAttributeConfig; -import com.iqser.red.service.configuration.v1.api.model.DossierAttributesConfig; -import com.iqser.red.service.configuration.v1.api.model.FileAttributeConfig; -import com.iqser.red.service.configuration.v1.api.model.FileAttributesConfig; -import com.iqser.red.service.configuration.v1.api.model.LegalBasisMapping; -import com.iqser.red.service.file.management.v1.api.model.Dossier; -import com.iqser.red.service.file.management.v1.api.model.DossierAttribute; -import com.iqser.red.service.file.management.v1.api.model.DossierAttributes; -import com.iqser.red.service.file.management.v1.api.model.FileAttributes; -import com.iqser.red.service.file.management.v1.api.model.FileStatus; -import com.iqser.red.service.file.management.v1.api.model.ReportTemplate; +import com.iqser.red.service.persistence.service.v1.api.model.data.configuration.LegalBasis; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.Dossier; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierAttribute; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.DossierAttributeConfig; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.File; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileAttribute; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileAttributeConfig; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.ReportTemplate; import com.iqser.red.service.redaction.report.v1.api.model.ReportType; import com.iqser.red.service.redaction.report.v1.server.client.DossierAttributesClient; import com.iqser.red.service.redaction.report.v1.server.client.DossierAttributesConfigClient; -import com.iqser.red.service.redaction.report.v1.server.client.FileAttributesClient; +import com.iqser.red.service.redaction.report.v1.server.client.FileAttributesConfigClient; import com.iqser.red.service.redaction.report.v1.server.client.ReportTemplateClient; import com.iqser.red.service.redaction.report.v1.server.configuration.MessagingConfiguration; import com.iqser.red.service.redaction.report.v1.server.model.ReportRedactionEntry; @@ -70,7 +66,7 @@ public class RedactionReportIntegrationTest { private ReportTemplateClient reportTemplateClient; @MockBean - private FileAttributesClient fileAttributesClient; + private FileAttributesConfigClient fileAttributesClient; @MockBean private AmazonS3 s3Client; @@ -106,31 +102,71 @@ public class RedactionReportIntegrationTest { ClassPathResource legalBasisMappingResource = new ClassPathResource("files/legalBasisMapping.json"); - List legalBasisMapping = objectMapper.readValue(legalBasisMappingResource.getInputStream(), new TypeReference<>() { + List legalBasisMapping = objectMapper.readValue(legalBasisMappingResource.getInputStream(), new TypeReference<>() { }); List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping); - DossierAttributesConfig dossierAttributesConfig = new DossierAttributesConfig(Arrays.asList(new DossierAttributeConfig("id", "label", true, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.name}}"), new DossierAttributeConfig("id2", "label2", false, DossierAttributeConfig.DossierAttributeType.IMAGE, "{{dossier.attribute.image}}"))); + + var dossierAttributeConfig1 =DossierAttributeConfig + .builder() + .id("id") + .label("label") + .editable(true) + .type(DossierAttributeConfig.DossierAttributeType.TEXT) + .placeholder("{{dossier.attribute.name}}") + .build(); + + var dossierAttributeConfig2 =DossierAttributeConfig + .builder() + .id("id2") + .label("label2") + .editable(true) + .type(DossierAttributeConfig.DossierAttributeType.IMAGE) + .placeholder("{{dossier.attribute.image}}") + .build(); + + + var dossierAttributesConfig = Arrays.asList(dossierAttributeConfig1, dossierAttributeConfig2); when(dossierAttributesConfigClient.getDossierAttributes(dossierTemplateId)).thenReturn(dossierAttributesConfig); - DossierAttributes dossierAttributes = new DossierAttributes(Arrays.asList(new DossierAttribute("id", "Michael"), new DossierAttribute("id2", "data:image/png;base64," + Base64.getEncoder() - .encodeToString(IOUtils.toByteArray(imageResource.getInputStream()))))); + var dossierAttribute1 = DossierAttribute + .builder() + .id(new DossierAttribute.DossierAttributeId("dossierId", "id")) + .value("Michael") + .build(); + + + var dossierAttribute2 = DossierAttribute + .builder() + .id(new DossierAttribute.DossierAttributeId("dossierId", "id2")) + .value("data:image/png;base64," + Base64.getEncoder() + .encodeToString(IOUtils.toByteArray(imageResource.getInputStream()))) + .build(); + + var dossierAttributes = Arrays.asList(dossierAttribute1, dossierAttribute2); when(dossierAttributesClient.getDossierAttributes("dossierId")).thenReturn(dossierAttributes); - List fileAttributeConfigs = new ArrayList<>(); - fileAttributeConfigs.add(new FileAttributeConfig("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "", "Document Title", true, true, false, false, FileAttributeConfig.FileAttributeType.TEXT, "{{file.attribute.placeholder}}")); - FileAttributesConfig fileAttributesConfig = new FileAttributesConfig("", "", fileAttributeConfigs); - when(fileAttributesClient.getFileAttributes(dossierTemplateId)).thenReturn(fileAttributesConfig); + var fileAttributeConfig1 = FileAttributeConfig + .builder() + .id("3e9b9569-5d2e-4619-848b-dd0a3e96527f") + .label("Document Title") + .placeholder("{{file.attribute.placeholder}}") + .type(FileAttributeConfig.FileAttributeType.TEXT) + .build(); - Map attributeIdToValue = new HashMap(); - attributeIdToValue.put("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "Test"); + when(fileAttributesClient.getFileAttributeConfigs(dossierTemplateId)).thenReturn(List.of(fileAttributeConfig1)); - FileAttributes fileAttributes = new FileAttributes(attributeIdToValue); - FileStatus fileStatus = FileStatus.builder().filename("filename").fileAttributes(fileAttributes).build(); + FileAttribute fileAttribute = new FileAttribute(); + FileAttribute.FileAttributeId fileAttributeId = new FileAttribute.FileAttributeId(); + fileAttributeId.setFileAttributeConfigId("3e9b9569-5d2e-4619-848b-dd0a3e96527f"); + fileAttribute.setFileAttributeId(fileAttributeId); + fileAttribute.setValue("Test"); - Dossier project = Dossier.builder().dossierId("dossierId").dossierName("projectName").build(); + File fileStatus = File.builder().filename("filename").fileAttributes(List.of(fileAttribute)).build(); + + Dossier project = Dossier.builder().id("dossierId").dossierName("projectName").build(); String templateId = "templateId"; String storageId = "storageId"; @@ -155,224 +191,224 @@ public class RedactionReportIntegrationTest { } } - - @Test - public void testExcelTemplateReportGeneration() throws IOException { - - ClassPathResource redactionLogResource = new ClassPathResource("files/redactionLog.json"); - ClassPathResource excelRedactionLogResource = new ClassPathResource("files/excelReportRedactionLog.json"); - ClassPathResource imageResource = new ClassPathResource("files/exampleImage.jpg"); - - RedactionLog redactionLog = objectMapper.readValue(redactionLogResource.getInputStream(), RedactionLog.class); - RedactionLog redactionLog2 = objectMapper.readValue(excelRedactionLogResource.getInputStream(), RedactionLog.class); - - String dossierTemplateId = "dossierTemplateId"; - String storageId = "storageId"; - String templateId = "templateId"; - - ClassPathResource templateResource = new ClassPathResource("templates/Excel Report.xlsx"); - XSSFWorkbook workbook = new XSSFWorkbook(templateResource.getInputStream()); - - ClassPathResource legalBasisMappingResource = new ClassPathResource("files/legalBasisMapping.json"); - List legalBasisMapping = objectMapper.readValue(legalBasisMappingResource.getInputStream(), new TypeReference<>() { - }); - List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping); - List reportEntries2 = redactionLogConverterService.convertAndSort(redactionLog2, legalBasisMapping); - - DossierAttributesConfig dossierAttributesConfig = new DossierAttributesConfig(Arrays.asList(new DossierAttributeConfig("id", "label", true, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.name}}"), new DossierAttributeConfig("id2", "label2", false, DossierAttributeConfig.DossierAttributeType.IMAGE, "{{dossier.attribute.image}}"))); - when(dossierAttributesConfigClient.getDossierAttributes(dossierTemplateId)).thenReturn(dossierAttributesConfig); - - DossierAttributes dossierAttributes = new DossierAttributes(Arrays.asList(new DossierAttribute("id", "Michael"), new DossierAttribute("id2", Base64.getEncoder() - .encodeToString(IOUtils.toByteArray(imageResource.getInputStream()))))); - when(dossierAttributesClient.getDossierAttributes("dossierId")).thenReturn(dossierAttributes); - - List fileAttributeConfigs = new ArrayList<>(); - fileAttributeConfigs.add(new FileAttributeConfig("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "", "Document Title", true, true, false, false, FileAttributeConfig.FileAttributeType.TEXT, "{{file.attribute.placeholder}}")); - FileAttributesConfig fileAttributesConfig = new FileAttributesConfig("", "", fileAttributeConfigs); - when(fileAttributesClient.getFileAttributes(dossierTemplateId)).thenReturn(fileAttributesConfig); - - Map attributeIdToValue = new HashMap(); - attributeIdToValue.put("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "Test"); - FileAttributes fileAttributes = new FileAttributes(attributeIdToValue); - FileStatus fileStatus = FileStatus.builder().filename("filename").fileAttributes(fileAttributes).build(); - FileStatus fileStatus2 = FileStatus.builder().filename("other file").fileAttributes(fileAttributes).build(); - - Dossier dossier = Dossier.builder().dossierId("dossierId").dossierName("dossierName").build(); - - when(reportTemplateClient.getReportTemplate(dossierTemplateId, templateId)).thenReturn(ReportTemplate.builder() - .dossierTemplateId(dossierTemplateId) - .storageId(storageId) - .build()); - - excelTemplateReportGenerationService.generateReport(reportEntries, "dossierTemplateId", workbook, fileStatus, dossier, false); - excelTemplateReportGenerationService.generateReport(reportEntries2, "dossierTemplateId", workbook, fileStatus2, dossier, true); - byte[] excelTemplateReport = excelTemplateReportGenerationService.toByteArray(workbook); - - try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/report_excel_template.xlsx")) { - fileOutputStream.write(excelTemplateReport); - } - } - - - @Test - public void testReportGeneration() throws IOException { - - ClassPathResource redactionLogResource = new ClassPathResource("files/redactionLog.json"); - ClassPathResource redactionLogResource2 = new ClassPathResource("files/excelReportRedactionLog.json"); - ClassPathResource imageResource = new ClassPathResource("files/exampleImage.jpg"); - ClassPathResource legalBasisMappingResource = new ClassPathResource("files/legalBasisMapping.json"); - List legalBasisMapping = objectMapper.readValue(legalBasisMappingResource.getInputStream(), new TypeReference<>() { - }); - - String dossierTemplateId = "dossierTemplateId"; - String storageId = "storageId"; - String templateId = "templateId"; - - RedactionLog redactionLog = objectMapper.readValue(redactionLogResource.getInputStream(), RedactionLog.class); - RedactionLog redactionLog2 = objectMapper.readValue(redactionLogResource2.getInputStream(), RedactionLog.class); - List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping); - List reportEntries2 = redactionLogConverterService.convertAndSort(redactionLog2, legalBasisMapping); - - DossierAttributesConfig dossierAttributesConfig = new DossierAttributesConfig(Arrays.asList(new DossierAttributeConfig("id", "label", true, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.name}}"), new DossierAttributeConfig("id2", "label2", false, DossierAttributeConfig.DossierAttributeType.IMAGE, "{{dossier.attribute.image}}"))); - when(dossierAttributesConfigClient.getDossierAttributes(dossierTemplateId)).thenReturn(dossierAttributesConfig); - DossierAttributes dossierAttributes = new DossierAttributes(Arrays.asList(new DossierAttribute("id", "Michael"), new DossierAttribute("id2", Base64.getEncoder() - .encodeToString(IOUtils.toByteArray(imageResource.getInputStream()))))); - when(dossierAttributesClient.getDossierAttributes("dossierId")).thenReturn(dossierAttributes); - - List fileAttributeConfigs = new ArrayList<>(); - fileAttributeConfigs.add(new FileAttributeConfig("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "", "Document Title", true, true, false, false, FileAttributeConfig.FileAttributeType.TEXT, "{{file.attribute.placeholder}}")); - FileAttributesConfig fileAttributesConfig = new FileAttributesConfig("", "", fileAttributeConfigs); - when(fileAttributesClient.getFileAttributes(dossierTemplateId)).thenReturn(fileAttributesConfig); - Map attributeIdToValue = new HashMap(); - attributeIdToValue.put("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "Test"); - FileAttributes fileAttributes = new FileAttributes(attributeIdToValue); - FileStatus fileStatus = FileStatus.builder().filename("filename").fileAttributes(fileAttributes).build(); - FileStatus fileStatus2 = FileStatus.builder().filename("other file").fileAttributes(fileAttributes).build(); - - Dossier dossier = Dossier.builder().dossierId("dossierId").dossierName("projectName").build(); - - when(reportTemplateClient.getReportTemplate(dossierTemplateId, templateId)).thenReturn(ReportTemplate.builder() - .dossierTemplateId(dossierTemplateId) - .storageId(storageId) - .build()); - - ClassPathResource wordTemplateResource = new ClassPathResource("templates/Justification Appendix A1.docx"); - when(reportStorageService.getReportTemplate(storageId)).thenReturn(IOUtils.toByteArray(wordTemplateResource.getInputStream())); - ReportTemplate reportTemplate = ReportTemplate.builder() - .dossierTemplateId("dossierTemplateId") - .templateId("templateId") - .fileName("fileName") - .storageId("storageId") - .uploadDate(OffsetDateTime.now()) - .build(); - byte[] wordReport = wordReportGenerationService.generateReport(ReportType.WORD_SINGLE_FILE, reportEntries, dossierTemplateId, reportTemplate, fileStatus, dossier); - try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/efsa_template.docx")) { - fileOutputStream.write(wordReport); - } - ReportTemplate reportTemplate2 = ReportTemplate.builder() - .dossierTemplateId("dossierTemplateId") - .templateId("templateId") - .fileName("fileNameReportTemplate2") - .storageId("storageId") - .uploadDate(OffsetDateTime.now()) - .build(); - byte[] wordReport2 = wordReportGenerationService.generateReport(ReportType.WORD_SINGLE_FILE, reportEntries2, dossierTemplateId, reportTemplate2, fileStatus2, dossier); - try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/efsa_template2.docx")) { - fileOutputStream.write(wordReport2); - } - - ClassPathResource excelTemplateResource = new ClassPathResource("templates/Excel Report.xlsx"); - XSSFWorkbook workbook = new XSSFWorkbook(excelTemplateResource.getInputStream()); - excelTemplateReportGenerationService.generateReport(reportEntries, "dossierTemplateId", workbook, fileStatus, dossier, false); - excelTemplateReportGenerationService.generateReport(reportEntries2, "dossierTemplateId", workbook, fileStatus2, dossier, true); - byte[] excelTemplateReport = excelTemplateReportGenerationService.toByteArray(workbook); - try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/report_excel_template.xlsx")) { - fileOutputStream.write(excelTemplateReport); - } - XSSFWorkbook workbook2 = new XSSFWorkbook(excelTemplateResource.getInputStream()); - excelTemplateReportGenerationService.generateReport(reportEntries, "dossierTemplateId", workbook2, fileStatus, dossier, true); - byte[] excelTemplateReport2 = excelTemplateReportGenerationService.toByteArray(workbook2); - try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/report_excel_template2.xlsx")) { - fileOutputStream.write(excelTemplateReport2); - } - XSSFWorkbook workbook3 = new XSSFWorkbook(excelTemplateResource.getInputStream()); - excelTemplateReportGenerationService.generateReport(reportEntries2, "dossierTemplateId", workbook3, fileStatus2, dossier, true); - byte[] excelTemplateReport3 = excelTemplateReportGenerationService.toByteArray(workbook3); - try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/report_excel_template3.xlsx")) { - fileOutputStream.write(excelTemplateReport3); - } - } - - @Test - public void testExcerptReportGeneration() throws IOException { - - String dossierTemplateId = "dossierTemplateId"; - - ClassPathResource redactionLogResource = new ClassPathResource("files/S11RedactionLog.json"); - ClassPathResource imageResource = new ClassPathResource("files/exampleImage.jpg"); - - RedactionLog redactionLog = objectMapper.readValue(redactionLogResource.getInputStream(), RedactionLog.class); - - ClassPathResource legalBasisMappingResource = new ClassPathResource("files/S1116LegalBasis.json"); - - List legalBasisMapping = objectMapper.readValue(legalBasisMappingResource.getInputStream(), new TypeReference<>() { - }); - - List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping); - - DossierAttributesConfig dossierAttributesConfig = new DossierAttributesConfig(Arrays.asList( - new DossierAttributeConfig("id", "Active Substance", true, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.ActiveSubstance}}"), - new DossierAttributeConfig("id2", "Rapporteur Member State", false, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.RapporteurMemberState}}"), - new DossierAttributeConfig("id3", "Dossier Name", true, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.Name}}"), - new DossierAttributeConfig("id4", "Company", false, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.Company}}"), - new DossierAttributeConfig("id5", "Date", true, DossierAttributeConfig.DossierAttributeType.DATE, "{{dossier.attribute.Date}}"), - new DossierAttributeConfig("id6", "Signature", false, DossierAttributeConfig.DossierAttributeType.IMAGE, "{{dossier.attribute.Signature}}"))); - when(dossierAttributesConfigClient.getDossierAttributes(dossierTemplateId)).thenReturn(dossierAttributesConfig); - - DossierAttributes dossierAttributes = new DossierAttributes(Arrays.asList( - new DossierAttribute("id", "Aktive Substanz"), - new DossierAttribute("id2", "Reporter Status"), - new DossierAttribute("id3", "Dossier Name"), - new DossierAttribute("id4", "Firma"), - new DossierAttribute("id5", OffsetDateTime.now().format(FORMAT_DATE_ENG)), - new DossierAttribute("id6", "data:image/png;base64," + Base64.getEncoder().encodeToString(IOUtils.toByteArray(imageResource.getInputStream()))))); - - when(dossierAttributesClient.getDossierAttributes("dossierId")).thenReturn(dossierAttributes); - - List fileAttributeConfigs = new ArrayList<>(); - fileAttributeConfigs.add(new FileAttributeConfig("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "", "Document Title", true, true, false, false, FileAttributeConfig.FileAttributeType.TEXT, "{{file.attribute.placeholder}}")); - FileAttributesConfig fileAttributesConfig = new FileAttributesConfig("", "", fileAttributeConfigs); - when(fileAttributesClient.getFileAttributes(dossierTemplateId)).thenReturn(fileAttributesConfig); - - Map attributeIdToValue = new HashMap(); - attributeIdToValue.put("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "Test"); - - FileAttributes fileAttributes = new FileAttributes(attributeIdToValue); - FileStatus fileStatus = FileStatus.builder().filename("filename").fileAttributes(fileAttributes).build(); - - Dossier project = Dossier.builder().dossierId("dossierId").dossierName("projectName").build(); - - String templateId = "templateId"; - String storageId = "storageId"; - when(reportTemplateClient.getReportTemplate(dossierTemplateId, templateId)).thenReturn(ReportTemplate.builder() - .dossierTemplateId(dossierTemplateId) - .storageId(storageId) - .build()); - - ClassPathResource templateResource = new ClassPathResource("templates/6464 appendix_b EFSA dRAR justification.docx"); - when(reportStorageService.getReportTemplate(storageId)).thenReturn(IOUtils.toByteArray(templateResource.getInputStream())); - ReportTemplate reportTemplate = ReportTemplate.builder() - .dossierTemplateId("dossierTemplateId") - .templateId("templateId") - .fileName("filename") - .storageId("storageId") - .uploadDate(OffsetDateTime.now()) - .build(); - byte[] report = wordReportGenerationService.generateReport(ReportType.WORD_SINGLE_FILE, reportEntries, dossierTemplateId, reportTemplate, fileStatus, project); - - try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/efsa_template13.docx")) { - fileOutputStream.write(report); - } - } +// TODO Reactivate Tests +// @Test +// public void testExcelTemplateReportGeneration() throws IOException { +// +// ClassPathResource redactionLogResource = new ClassPathResource("files/redactionLog.json"); +// ClassPathResource excelRedactionLogResource = new ClassPathResource("files/excelReportRedactionLog.json"); +// ClassPathResource imageResource = new ClassPathResource("files/exampleImage.jpg"); +// +// RedactionLog redactionLog = objectMapper.readValue(redactionLogResource.getInputStream(), RedactionLog.class); +// RedactionLog redactionLog2 = objectMapper.readValue(excelRedactionLogResource.getInputStream(), RedactionLog.class); +// +// String dossierTemplateId = "dossierTemplateId"; +// String storageId = "storageId"; +// String templateId = "templateId"; +// +// ClassPathResource templateResource = new ClassPathResource("templates/Excel Report.xlsx"); +// XSSFWorkbook workbook = new XSSFWorkbook(templateResource.getInputStream()); +// +// ClassPathResource legalBasisMappingResource = new ClassPathResource("files/legalBasisMapping.json"); +// List legalBasisMapping = objectMapper.readValue(legalBasisMappingResource.getInputStream(), new TypeReference<>() { +// }); +// List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping); +// List reportEntries2 = redactionLogConverterService.convertAndSort(redactionLog2, legalBasisMapping); +// +// DossierAttributesConfig dossierAttributesConfig = new DossierAttributesConfig(Arrays.asList(new DossierAttributeConfig("id", "label", true, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.name}}"), new DossierAttributeConfig("id2", "label2", false, DossierAttributeConfig.DossierAttributeType.IMAGE, "{{dossier.attribute.image}}"))); +// when(dossierAttributesConfigClient.getDossierAttributes(dossierTemplateId)).thenReturn(dossierAttributesConfig); +// +// DossierAttributes dossierAttributes = new DossierAttributes(Arrays.asList(new DossierAttribute("id", "Michael"), new DossierAttribute("id2", Base64.getEncoder() +// .encodeToString(IOUtils.toByteArray(imageResource.getInputStream()))))); +// when(dossierAttributesClient.getDossierAttributes("dossierId")).thenReturn(dossierAttributes); +// +// List fileAttributeConfigs = new ArrayList<>(); +// fileAttributeConfigs.add(new FileAttributeConfig("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "", "Document Title", true, true, false, false, FileAttributeConfig.FileAttributeType.TEXT, "{{file.attribute.placeholder}}")); +// FileAttributesConfig fileAttributesConfig = new FileAttributesConfig("", "", fileAttributeConfigs); +// when(fileAttributesClient.getFileAttributes(dossierTemplateId)).thenReturn(fileAttributesConfig); +// +// Map attributeIdToValue = new HashMap(); +// attributeIdToValue.put("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "Test"); +// FileAttributes fileAttributes = new FileAttributes(attributeIdToValue); +// FileStatus fileStatus = FileStatus.builder().filename("filename").fileAttributes(fileAttributes).build(); +// FileStatus fileStatus2 = FileStatus.builder().filename("other file").fileAttributes(fileAttributes).build(); +// +// Dossier dossier = Dossier.builder().dossierId("dossierId").dossierName("dossierName").build(); +// +// when(reportTemplateClient.getReportTemplate(dossierTemplateId, templateId)).thenReturn(ReportTemplate.builder() +// .dossierTemplateId(dossierTemplateId) +// .storageId(storageId) +// .build()); +// +// excelTemplateReportGenerationService.generateReport(reportEntries, "dossierTemplateId", workbook, fileStatus, dossier, false); +// excelTemplateReportGenerationService.generateReport(reportEntries2, "dossierTemplateId", workbook, fileStatus2, dossier, true); +// byte[] excelTemplateReport = excelTemplateReportGenerationService.toByteArray(workbook); +// +// try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/report_excel_template.xlsx")) { +// fileOutputStream.write(excelTemplateReport); +// } +// } +// +// +// @Test +// public void testReportGeneration() throws IOException { +// +// ClassPathResource redactionLogResource = new ClassPathResource("files/redactionLog.json"); +// ClassPathResource redactionLogResource2 = new ClassPathResource("files/excelReportRedactionLog.json"); +// ClassPathResource imageResource = new ClassPathResource("files/exampleImage.jpg"); +// ClassPathResource legalBasisMappingResource = new ClassPathResource("files/legalBasisMapping.json"); +// List legalBasisMapping = objectMapper.readValue(legalBasisMappingResource.getInputStream(), new TypeReference<>() { +// }); +// +// String dossierTemplateId = "dossierTemplateId"; +// String storageId = "storageId"; +// String templateId = "templateId"; +// +// RedactionLog redactionLog = objectMapper.readValue(redactionLogResource.getInputStream(), RedactionLog.class); +// RedactionLog redactionLog2 = objectMapper.readValue(redactionLogResource2.getInputStream(), RedactionLog.class); +// List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping); +// List reportEntries2 = redactionLogConverterService.convertAndSort(redactionLog2, legalBasisMapping); +// +// DossierAttributesConfig dossierAttributesConfig = new DossierAttributesConfig(Arrays.asList(new DossierAttributeConfig("id", "label", true, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.name}}"), new DossierAttributeConfig("id2", "label2", false, DossierAttributeConfig.DossierAttributeType.IMAGE, "{{dossier.attribute.image}}"))); +// when(dossierAttributesConfigClient.getDossierAttributes(dossierTemplateId)).thenReturn(dossierAttributesConfig); +// DossierAttributes dossierAttributes = new DossierAttributes(Arrays.asList(new DossierAttribute("id", "Michael"), new DossierAttribute("id2", Base64.getEncoder() +// .encodeToString(IOUtils.toByteArray(imageResource.getInputStream()))))); +// when(dossierAttributesClient.getDossierAttributes("dossierId")).thenReturn(dossierAttributes); +// +// List fileAttributeConfigs = new ArrayList<>(); +// fileAttributeConfigs.add(new FileAttributeConfig("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "", "Document Title", true, true, false, false, FileAttributeConfig.FileAttributeType.TEXT, "{{file.attribute.placeholder}}")); +// FileAttributesConfig fileAttributesConfig = new FileAttributesConfig("", "", fileAttributeConfigs); +// when(fileAttributesClient.getFileAttributes(dossierTemplateId)).thenReturn(fileAttributesConfig); +// Map attributeIdToValue = new HashMap(); +// attributeIdToValue.put("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "Test"); +// FileAttributes fileAttributes = new FileAttributes(attributeIdToValue); +// FileStatus fileStatus = FileStatus.builder().filename("filename").fileAttributes(fileAttributes).build(); +// FileStatus fileStatus2 = FileStatus.builder().filename("other file").fileAttributes(fileAttributes).build(); +// +// Dossier dossier = Dossier.builder().dossierId("dossierId").dossierName("projectName").build(); +// +// when(reportTemplateClient.getReportTemplate(dossierTemplateId, templateId)).thenReturn(ReportTemplate.builder() +// .dossierTemplateId(dossierTemplateId) +// .storageId(storageId) +// .build()); +// +// ClassPathResource wordTemplateResource = new ClassPathResource("templates/Justification Appendix A1.docx"); +// when(reportStorageService.getReportTemplate(storageId)).thenReturn(IOUtils.toByteArray(wordTemplateResource.getInputStream())); +// ReportTemplate reportTemplate = ReportTemplate.builder() +// .dossierTemplateId("dossierTemplateId") +// .templateId("templateId") +// .fileName("fileName") +// .storageId("storageId") +// .uploadDate(OffsetDateTime.now()) +// .build(); +// byte[] wordReport = wordReportGenerationService.generateReport(ReportType.WORD_SINGLE_FILE, reportEntries, dossierTemplateId, reportTemplate, fileStatus, dossier); +// try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/efsa_template.docx")) { +// fileOutputStream.write(wordReport); +// } +// ReportTemplate reportTemplate2 = ReportTemplate.builder() +// .dossierTemplateId("dossierTemplateId") +// .templateId("templateId") +// .fileName("fileNameReportTemplate2") +// .storageId("storageId") +// .uploadDate(OffsetDateTime.now()) +// .build(); +// byte[] wordReport2 = wordReportGenerationService.generateReport(ReportType.WORD_SINGLE_FILE, reportEntries2, dossierTemplateId, reportTemplate2, fileStatus2, dossier); +// try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/efsa_template2.docx")) { +// fileOutputStream.write(wordReport2); +// } +// +// ClassPathResource excelTemplateResource = new ClassPathResource("templates/Excel Report.xlsx"); +// XSSFWorkbook workbook = new XSSFWorkbook(excelTemplateResource.getInputStream()); +// excelTemplateReportGenerationService.generateReport(reportEntries, "dossierTemplateId", workbook, fileStatus, dossier, false); +// excelTemplateReportGenerationService.generateReport(reportEntries2, "dossierTemplateId", workbook, fileStatus2, dossier, true); +// byte[] excelTemplateReport = excelTemplateReportGenerationService.toByteArray(workbook); +// try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/report_excel_template.xlsx")) { +// fileOutputStream.write(excelTemplateReport); +// } +// XSSFWorkbook workbook2 = new XSSFWorkbook(excelTemplateResource.getInputStream()); +// excelTemplateReportGenerationService.generateReport(reportEntries, "dossierTemplateId", workbook2, fileStatus, dossier, true); +// byte[] excelTemplateReport2 = excelTemplateReportGenerationService.toByteArray(workbook2); +// try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/report_excel_template2.xlsx")) { +// fileOutputStream.write(excelTemplateReport2); +// } +// XSSFWorkbook workbook3 = new XSSFWorkbook(excelTemplateResource.getInputStream()); +// excelTemplateReportGenerationService.generateReport(reportEntries2, "dossierTemplateId", workbook3, fileStatus2, dossier, true); +// byte[] excelTemplateReport3 = excelTemplateReportGenerationService.toByteArray(workbook3); +// try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/report_excel_template3.xlsx")) { +// fileOutputStream.write(excelTemplateReport3); +// } +// } +// +// @Test +// public void testExcerptReportGeneration() throws IOException { +// +// String dossierTemplateId = "dossierTemplateId"; +// +// ClassPathResource redactionLogResource = new ClassPathResource("files/S11RedactionLog.json"); +// ClassPathResource imageResource = new ClassPathResource("files/exampleImage.jpg"); +// +// RedactionLog redactionLog = objectMapper.readValue(redactionLogResource.getInputStream(), RedactionLog.class); +// +// ClassPathResource legalBasisMappingResource = new ClassPathResource("files/S1116LegalBasis.json"); +// +// List legalBasisMapping = objectMapper.readValue(legalBasisMappingResource.getInputStream(), new TypeReference<>() { +// }); +// +// List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping); +// +// DossierAttributesConfig dossierAttributesConfig = new DossierAttributesConfig(Arrays.asList( +// new DossierAttributeConfig("id", "Active Substance", true, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.ActiveSubstance}}"), +// new DossierAttributeConfig("id2", "Rapporteur Member State", false, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.RapporteurMemberState}}"), +// new DossierAttributeConfig("id3", "Dossier Name", true, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.Name}}"), +// new DossierAttributeConfig("id4", "Company", false, DossierAttributeConfig.DossierAttributeType.TEXT, "{{dossier.attribute.Company}}"), +// new DossierAttributeConfig("id5", "Date", true, DossierAttributeConfig.DossierAttributeType.DATE, "{{dossier.attribute.Date}}"), +// new DossierAttributeConfig("id6", "Signature", false, DossierAttributeConfig.DossierAttributeType.IMAGE, "{{dossier.attribute.Signature}}"))); +// when(dossierAttributesConfigClient.getDossierAttributes(dossierTemplateId)).thenReturn(dossierAttributesConfig); +// +// DossierAttributes dossierAttributes = new DossierAttributes(Arrays.asList( +// new DossierAttribute("id", "Aktive Substanz"), +// new DossierAttribute("id2", "Reporter Status"), +// new DossierAttribute("id3", "Dossier Name"), +// new DossierAttribute("id4", "Firma"), +// new DossierAttribute("id5", OffsetDateTime.now().format(FORMAT_DATE_ENG)), +// new DossierAttribute("id6", "data:image/png;base64," + Base64.getEncoder().encodeToString(IOUtils.toByteArray(imageResource.getInputStream()))))); +// +// when(dossierAttributesClient.getDossierAttributes("dossierId")).thenReturn(dossierAttributes); +// +// List fileAttributeConfigs = new ArrayList<>(); +// fileAttributeConfigs.add(new FileAttributeConfig("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "", "Document Title", true, true, false, false, FileAttributeConfig.FileAttributeType.TEXT, "{{file.attribute.placeholder}}")); +// FileAttributesConfig fileAttributesConfig = new FileAttributesConfig("", "", fileAttributeConfigs); +// when(fileAttributesClient.getFileAttributes(dossierTemplateId)).thenReturn(fileAttributesConfig); +// +// Map attributeIdToValue = new HashMap(); +// attributeIdToValue.put("3e9b9569-5d2e-4619-848b-dd0a3e96527f", "Test"); +// +// FileAttributes fileAttributes = new FileAttributes(attributeIdToValue); +// FileStatus fileStatus = FileStatus.builder().filename("filename").fileAttributes(fileAttributes).build(); +// +// Dossier project = Dossier.builder().dossierId("dossierId").dossierName("projectName").build(); +// +// String templateId = "templateId"; +// String storageId = "storageId"; +// when(reportTemplateClient.getReportTemplate(dossierTemplateId, templateId)).thenReturn(ReportTemplate.builder() +// .dossierTemplateId(dossierTemplateId) +// .storageId(storageId) +// .build()); +// +// ClassPathResource templateResource = new ClassPathResource("templates/6464 appendix_b EFSA dRAR justification.docx"); +// when(reportStorageService.getReportTemplate(storageId)).thenReturn(IOUtils.toByteArray(templateResource.getInputStream())); +// ReportTemplate reportTemplate = ReportTemplate.builder() +// .dossierTemplateId("dossierTemplateId") +// .templateId("templateId") +// .fileName("filename") +// .storageId("storageId") +// .uploadDate(OffsetDateTime.now()) +// .build(); +// byte[] report = wordReportGenerationService.generateReport(ReportType.WORD_SINGLE_FILE, reportEntries, dossierTemplateId, reportTemplate, fileStatus, project); +// +// try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/efsa_template13.docx")) { +// fileOutputStream.write(report); +// } +// } } diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/test/java/com/iqser/red/service/redaction/report/v1/server/service/StatusReportGenerationServiceTest.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/test/java/com/iqser/red/service/redaction/report/v1/server/service/StatusReportGenerationServiceTest.java index 3863497..5f07108 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/test/java/com/iqser/red/service/redaction/report/v1/server/service/StatusReportGenerationServiceTest.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/test/java/com/iqser/red/service/redaction/report/v1/server/service/StatusReportGenerationServiceTest.java @@ -14,14 +14,13 @@ import org.mockito.InjectMocks; import org.mockito.Mock; import org.springframework.test.context.junit4.SpringRunner; -import com.iqser.red.service.configuration.v1.api.model.FileAttributeConfig; -import com.iqser.red.service.configuration.v1.api.model.FileAttributesConfig; -import com.iqser.red.service.file.management.v1.api.model.Dossier; -import com.iqser.red.service.file.management.v1.api.model.FileAttributes; -import com.iqser.red.service.file.management.v1.api.model.FileStatus; -import com.iqser.red.service.file.management.v1.api.model.Status; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.Dossier; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.File; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileAttribute; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileAttributeConfig; +import com.iqser.red.service.persistence.service.v1.api.model.data.dossier.FileStatus; import com.iqser.red.service.redaction.report.v1.server.client.DossierClient; -import com.iqser.red.service.redaction.report.v1.server.client.FileAttributesClient; +import com.iqser.red.service.redaction.report.v1.server.client.FileAttributesConfigClient; import com.iqser.red.service.redaction.report.v1.server.client.FileStatusClient; import io.undertow.util.BadRequestException; @@ -36,7 +35,7 @@ public class StatusReportGenerationServiceTest { private DossierClient dossierClient; @Mock - private FileAttributesClient fileAttributesClient; + private FileAttributesConfigClient fileAttributesClient; @InjectMocks private StatusReportGenerationService statusReportGenerationService; @@ -47,29 +46,52 @@ public class StatusReportGenerationServiceTest { String dossierId = "dossierId"; - Dossier dossier = Dossier.builder().dossierName("dossierName").dossierId(dossierId).build(); + Dossier dossier = Dossier.builder().dossierName("dossierName").id(dossierId).build(); when(dossierClient.getDossierById(dossierId)).thenReturn(dossier); - FileAttributes fileAttributes1 = new FileAttributes(Map.of("a", "A", "config2", "B2")); - FileStatus fileStatus1 = FileStatus.builder() + FileAttribute fileAttribute1 = new FileAttribute(); + FileAttribute.FileAttributeId fileAttributeId1 = new FileAttribute.FileAttributeId(); + fileAttributeId1.setFileAttributeConfigId("a"); + fileAttribute1.setFileAttributeId(fileAttributeId1); + fileAttribute1.setValue("A"); + + FileAttribute fileAttribute2 = new FileAttribute(); + FileAttribute.FileAttributeId fileAttributeId2 = new FileAttribute.FileAttributeId(); + fileAttributeId2.setFileAttributeConfigId("config2"); + fileAttribute2.setFileAttributeId(fileAttributeId2); + fileAttribute2.setValue("B2"); + + File fileStatus1 = File.builder() .dossierId(dossierId) .filename("file1desJahrhunderts") .lastUploaded(OffsetDateTime.now().minusHours(2)) .currentReviewer("me") - .status(Status.APPROVED) + .status(FileStatus.APPROVED) .numberOfPages(3) - .fileAttributes(fileAttributes1) + .fileAttributes(List.of(fileAttribute1, fileAttribute2)) .build(); - FileAttributes fileAttributes2 = new FileAttributes(Map.of("config1", "X1", "y", "Y")); - FileStatus fileStatus2 = FileStatus.builder() + + FileAttribute fileAttribute3 = new FileAttribute(); + FileAttribute.FileAttributeId fileAttributeId3 = new FileAttribute.FileAttributeId(); + fileAttributeId3.setFileAttributeConfigId("config1"); + fileAttribute3.setFileAttributeId(fileAttributeId3); + fileAttribute3.setValue("X1"); + + FileAttribute fileAttribute4 = new FileAttribute(); + FileAttribute.FileAttributeId fileAttributeId4 = new FileAttribute.FileAttributeId(); + fileAttributeId4.setFileAttributeConfigId("y"); + fileAttribute4.setFileAttributeId(fileAttributeId4); + fileAttribute4.setValue("Y"); + + File fileStatus2 = File.builder() .dossierId(dossierId) .filename("file2desJahrtausendsGibtsJaNicht") .lastUploaded(OffsetDateTime.now()) .currentReviewer("you") - .status(Status.APPROVED) + .status(FileStatus.APPROVED) .numberOfPages(21) - .fileAttributes(fileAttributes2) + .fileAttributes(List.of(fileAttribute3, fileAttribute4)) .build(); when(fileStatusClient.getDossierStatus(dossierId)).thenReturn(List.of(fileStatus1, fileStatus2)); @@ -77,8 +99,7 @@ public class StatusReportGenerationServiceTest { FileAttributeConfig fileAttributeConfig1 = FileAttributeConfig.builder().id("config1").label("Label1").build(); FileAttributeConfig fileAttributeConfig2 = FileAttributeConfig.builder().id("config2").label("Label2").build(); - FileAttributesConfig fileAttributesConfig = new FileAttributesConfig(null, null, List.of(fileAttributeConfig1,fileAttributeConfig2)); - when(fileAttributesClient.getFileAttributes(dossier.getDossierTemplateId())).thenReturn(fileAttributesConfig); + when(fileAttributesClient.getFileAttributeConfigs(dossier.getDossierTemplateId())).thenReturn(List.of(fileAttributeConfig1, fileAttributeConfig2)); byte[] report = statusReportGenerationService.generateReport(dossier);