diff --git a/redaction-report-service-v1/redaction-report-service-api-v1/src/main/java/com/iqser/red/service/redaction/report/v1/api/model/ReportRequestMessage.java b/redaction-report-service-v1/redaction-report-service-api-v1/src/main/java/com/iqser/red/service/redaction/report/v1/api/model/ReportRequestMessage.java index f7aadfb..c5e4ad8 100644 --- a/redaction-report-service-v1/redaction-report-service-api-v1/src/main/java/com/iqser/red/service/redaction/report/v1/api/model/ReportRequestMessage.java +++ b/redaction-report-service-v1/redaction-report-service-api-v1/src/main/java/com/iqser/red/service/redaction/report/v1/api/model/ReportRequestMessage.java @@ -27,9 +27,6 @@ public class ReportRequestMessage { @Builder.Default private List fileIds = new ArrayList<>(); - @Builder.Default - private Set reportTypes = new HashSet<>(); - @Builder.Default private Set templateIds = new HashSet<>(); diff --git a/redaction-report-service-v1/redaction-report-service-api-v1/src/main/java/com/iqser/red/service/redaction/report/v1/api/model/ReportType.java b/redaction-report-service-v1/redaction-report-service-api-v1/src/main/java/com/iqser/red/service/redaction/report/v1/api/model/ReportType.java index e18e4c8..e622b53 100644 --- a/redaction-report-service-v1/redaction-report-service-api-v1/src/main/java/com/iqser/red/service/redaction/report/v1/api/model/ReportType.java +++ b/redaction-report-service-v1/redaction-report-service-api-v1/src/main/java/com/iqser/red/service/redaction/report/v1/api/model/ReportType.java @@ -1,5 +1,5 @@ package com.iqser.red.service.redaction.report.v1.api.model; public enum ReportType { - WORD_SINGLE_FILE_APPENDIX_A1_TEMPLATE, WORD_SINGLE_FILE_APPENDIX_A2_TEMPLATE, EXCEL_MULTI_FILE, EXCEL_SINGLE_FILE, WORD_SINGLE_FILE, EXCEL_TEMPLATE_SINGLE_FILE, EXCEL_TEMPLATE_MULTI_FILE + WORD_SINGLE_FILE, EXCEL_TEMPLATE_SINGLE_FILE, EXCEL_TEMPLATE_MULTI_FILE } diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ExcelReportGenerationService.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ExcelReportGenerationService.java deleted file mode 100644 index 7c686b0..0000000 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/ExcelReportGenerationService.java +++ /dev/null @@ -1,98 +0,0 @@ -package com.iqser.red.service.redaction.report.v1.server.service; - -import java.io.ByteArrayOutputStream; -import java.util.List; -import java.util.concurrent.atomic.AtomicInteger; - -import org.apache.poi.xssf.usermodel.XSSFCell; -import org.apache.poi.xssf.usermodel.XSSFRow; -import org.apache.poi.xssf.usermodel.XSSFSheet; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.springframework.stereotype.Service; - -import com.iqser.red.service.redaction.report.v1.server.model.ReportRedactionEntry; - -import lombok.RequiredArgsConstructor; -import lombok.SneakyThrows; - -@Service -@RequiredArgsConstructor -public class ExcelReportGenerationService { - - public XSSFWorkbook createWorkbook() { - - XSSFWorkbook workbook = new XSSFWorkbook(); - return workbook; - } - - - public XSSFSheet createExcelSheet(XSSFWorkbook workbook) { - - XSSFSheet sheet = workbook.createSheet("Justifications"); - addHeader(sheet); - - return sheet; - } - - - public byte[] generateSingleFileReport(List reportEntries, String filename) { - - XSSFWorkbook workbook = new XSSFWorkbook(); - XSSFSheet sheet = workbook.createSheet("Justifications"); - addHeader(sheet); - - AtomicInteger rowIndex = new AtomicInteger(1); - addEntries(sheet, reportEntries, filename, rowIndex); - - return toByteArray(workbook); - } - - - public void addEntries(XSSFSheet sheet, List reportEntries, String filename, - AtomicInteger rowIndex) { - - reportEntries.forEach(entry -> { - XSSFRow row = sheet.createRow(rowIndex.get()); - XSSFCell filenameCell = row.createCell(0); - filenameCell.setCellValue(filename); - XSSFCell pageColumn = row.createCell(1); - pageColumn.setCellValue(entry.getPage()); - XSSFCell paragraphColumn = row.createCell(2); - paragraphColumn.setCellValue(entry.getSection()); - XSSFCell justificationColumn = row.createCell(3); - justificationColumn.setCellValue(entry.getJustification()); - rowIndex.getAndIncrement(); - }); - } - - - private void addHeader(XSSFSheet sheet) { - - sheet.setColumnWidth(0, 10000); - sheet.setColumnWidth(1, 4000); - sheet.setColumnWidth(2, 20000); - sheet.setColumnWidth(3, 40000); - - XSSFRow row = sheet.createRow(0); - XSSFCell filename = row.createCell(0); - filename.setCellValue("Volume or Document Name"); - XSSFCell page = row.createCell(1); - page.setCellValue("Electronic page No."); - XSSFCell paragraph = row.createCell(2); - paragraph.setCellValue("Paragraph"); - XSSFCell justification = row.createCell(3); - justification.setCellValue("Justification and reference to Article 63 of Regulation (EC) No 1107/2009"); - } - - - @SneakyThrows - public byte[] toByteArray(XSSFWorkbook doc) { - - try (ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream()) { - doc.write(byteArrayOutputStream); - doc.close(); - return byteArrayOutputStream.toByteArray(); - } - } - -} 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 ec73f67..804db5a 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 @@ -1,14 +1,22 @@ package com.iqser.red.service.redaction.report.v1.server.service; +import java.io.ByteArrayInputStream; +import java.io.IOException; +import java.util.ArrayList; +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.FileStatus; 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.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; -import com.iqser.red.service.redaction.report.v1.server.client.FileStatusClient; import com.iqser.red.service.redaction.report.v1.server.client.DossierClient; +import com.iqser.red.service.redaction.report.v1.server.client.FileStatusClient; import com.iqser.red.service.redaction.report.v1.server.client.RedactionLogClient; import com.iqser.red.service.redaction.report.v1.server.client.ReportTemplateClient; import com.iqser.red.service.redaction.report.v1.server.model.MultiFileWorkbook; @@ -20,23 +28,12 @@ import com.iqser.red.storage.commons.exception.StorageObjectDoesNotExist; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; -import org.apache.poi.xssf.usermodel.XSSFSheet; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.springframework.stereotype.Service; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.util.ArrayList; -import java.util.List; -import java.util.concurrent.atomic.AtomicInteger; - @Slf4j @Service @RequiredArgsConstructor public class ReportGenerationService { private final ReportStorageService reportStorageService; - private final ExcelReportGenerationService excelReportService; private final WordReportGenerationService wordReportGenerationService; private final RedactionLogConverterService redactionLogConverterService; private final FileStatusClient fileStatusClient; @@ -48,15 +45,6 @@ public class ReportGenerationService { public List generateReport(ReportRequestMessage reportMessage) { - XSSFWorkbook excelMultiFileWorkbook = null; - XSSFSheet excelMultiFileSheet = null; - AtomicInteger excelRowIndex = new AtomicInteger(1); - - if (reportMessage.getReportTypes().contains(ReportType.EXCEL_MULTI_FILE)) { - excelMultiFileWorkbook = excelReportService.createWorkbook(); - excelMultiFileSheet = excelReportService.createExcelSheet(excelMultiFileWorkbook); - } - List storedFileInformation = new ArrayList<>(); Dossier project = dossierClient.getDossierById(reportMessage.getDossierId()); @@ -78,7 +66,7 @@ public class ReportGenerationService { } else { singleFilesTemplates.add(reportTemplate); } - } catch (Exception e){ + } catch (Exception e) { log.warn("Skipping reportTemplate with id {}", templateId); } } @@ -91,22 +79,12 @@ public class ReportGenerationService { long start = System.currentTimeMillis(); - List reportEntries = getReportEntries(reportMessage.getDossierId(), reportMessage.getFileIds().get(j), fileStatus.isExcluded()); - - if (reportMessage.getReportTypes().contains(ReportType.EXCEL_MULTI_FILE)) { - excelReportService.addEntries(excelMultiFileSheet, reportEntries, fileStatus.getFilename(), excelRowIndex); - } - - if (reportMessage.getReportTypes().contains(ReportType.EXCEL_SINGLE_FILE)) { - byte[] excelSingleReport = excelReportService.generateSingleFileReport(reportEntries, fileStatus.getFilename()); - String storageId = reportStorageService.storeObject(reportMessage.getDownloadId(), excelSingleReport); - storedFileInformation.add(new StoredFileInformation(reportMessage.getFileIds() - .get(j), storageId, ReportType.EXCEL_SINGLE_FILE, null)); - } + List reportEntries = getReportEntries(reportMessage.getDossierId(), reportMessage.getFileIds() + .get(j), fileStatus.isExcluded()); for (MultiFileWorkbook multiFileWorkbook : multiFileWorkbooks) { - excelTemplateReportGenerationService.generateReport(reportEntries, reportMessage.getDossierTemplateId(), multiFileWorkbook - .getWorkbook(), fileStatus, project, j == reportMessage.getFileIds().size() - 1 ? true : false); + excelTemplateReportGenerationService.generateReport(reportEntries, reportMessage.getDossierTemplateId(), multiFileWorkbook.getWorkbook(), fileStatus, project, j == reportMessage.getFileIds() + .size() - 1 ? true : false); } for (ReportTemplate reportTemplate : singleFilesTemplates) { if (reportTemplate.getFileName().endsWith(".xlsx")) { @@ -123,28 +101,12 @@ public class ReportGenerationService { e.printStackTrace(); } } else { - byte[] template = wordReportGenerationService.generateReport(ReportType.WORD_SINGLE_FILE, reportEntries, reportMessage - .getDossierTemplateId(), reportTemplate, fileStatus, project); + byte[] template = wordReportGenerationService.generateReport(ReportType.WORD_SINGLE_FILE, reportEntries, reportMessage.getDossierTemplateId(), reportTemplate, fileStatus, project); String storageId = reportStorageService.storeObject(reportMessage.getDownloadId(), template); storedFileInformation.add(new StoredFileInformation(reportMessage.getFileIds() .get(j), storageId, ReportType.WORD_SINGLE_FILE, reportTemplate.getTemplateId())); } } - if (reportMessage.getReportTypes().contains(ReportType.WORD_SINGLE_FILE_APPENDIX_A1_TEMPLATE)) { - byte[] wordEFSATemplate = wordReportGenerationService.generateReport(ReportType.WORD_SINGLE_FILE_APPENDIX_A1_TEMPLATE, reportEntries, reportMessage - .getDossierTemplateId(), null, fileStatus, project); - String storageId = reportStorageService.storeObject(reportMessage.getDownloadId(), wordEFSATemplate); - storedFileInformation.add(new StoredFileInformation(reportMessage.getFileIds() - .get(j), storageId, ReportType.WORD_SINGLE_FILE_APPENDIX_A1_TEMPLATE, null)); - } - - if (reportMessage.getReportTypes().contains(ReportType.WORD_SINGLE_FILE_APPENDIX_A2_TEMPLATE)) { - byte[] wordSyngentaTemplate = wordReportGenerationService.generateReport(ReportType.WORD_SINGLE_FILE_APPENDIX_A2_TEMPLATE, reportEntries, reportMessage - .getDossierTemplateId(), null, fileStatus, project); - String storageId = reportStorageService.storeObject(reportMessage.getDownloadId(), wordSyngentaTemplate); - storedFileInformation.add(new StoredFileInformation(reportMessage.getFileIds() - .get(j), storageId, ReportType.WORD_SINGLE_FILE_APPENDIX_A2_TEMPLATE, null)); - } long end = System.currentTimeMillis(); log.info("Successfully processed {}/{} fileIds for downloadId {}, took {}", i, reportMessage.getFileIds() @@ -152,35 +114,26 @@ public class ReportGenerationService { i++; } - if (excelMultiFileWorkbook != null) { - long start = System.currentTimeMillis(); - byte[] multifileExcelReport = excelReportService.toByteArray(excelMultiFileWorkbook); - String storageId = reportStorageService.storeObject(reportMessage.getDownloadId(), multifileExcelReport); - storedFileInformation.add(new StoredFileInformation(null, storageId, ReportType.EXCEL_MULTI_FILE, null)); - long end = System.currentTimeMillis(); - log.info("Successfully stored multiFileExcelReport for downloadId {}, took {}", reportMessage.getDownloadId(), end - start); - } - for (MultiFileWorkbook multiFileWorkbook : multiFileWorkbooks) { byte[] template = excelTemplateReportGenerationService.toByteArray(multiFileWorkbook.getWorkbook()); String storageId = reportStorageService.storeObject(reportMessage.getDownloadId(), template); - storedFileInformation.add(new StoredFileInformation(null, storageId, ReportType.EXCEL_TEMPLATE_MULTI_FILE, multiFileWorkbook - .getTemplateId())); + storedFileInformation.add(new StoredFileInformation(null, storageId, ReportType.EXCEL_TEMPLATE_MULTI_FILE, multiFileWorkbook.getTemplateId())); } return storedFileInformation; } - private List getReportEntries(String dossierId, String fileId, boolean isExcluded){ - if(isExcluded){ - return new ArrayList<>(); - } + private List getReportEntries(String dossierId, String fileId, boolean isExcluded) { + + if (isExcluded) { + return new ArrayList<>(); + } RedactionLog redactionLog; try { redactionLog = redactionLogClient.getRedactionLog(dossierId, fileId, true); - } catch (StorageObjectDoesNotExist e){ + } catch (StorageObjectDoesNotExist e) { return new ArrayList<>(); } List legalBasisMappings = redactionLog.getLegalBasis(); 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 9da2195..35aa06e 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 @@ -72,15 +72,6 @@ public class WordReportGenerationService { private final DossierAttributesConfigClient dossierAttributesConfigClient; - @PostConstruct - public void init() { - - appendixA1Template = ResourceLoader.load("templates/Sanitisation justification Appendix A1.docx"); - appendixA2Template = ResourceLoader.load("templates/Sanitisation justification Appendix A2.docx"); - - } - - public byte[] generateReport(ReportType reportType, List reportEntries, String dossierTemplateId, ReportTemplate reportTemplate, FileStatus fileStatus, Dossier dossier) { @@ -98,7 +89,7 @@ public class WordReportGenerationService { if (dossierAttribute.getDossierAttributeId().equals(attributeConfig.getId())) { if (attributeConfig.getType().equals(DossierAttributeConfig.DossierAttributeType.IMAGE)) { - if(dossierAttribute.getValue() != null) { + if (dossierAttribute.getValue() != null) { if (dossierAttribute.getValue().startsWith("data:")) { imagePlaceholders.add(new ImagePlaceholder(attributeConfig.getPlaceholder(), Base64.getDecoder() .decode(dossierAttribute.getValue().split(",")[1]))); @@ -126,15 +117,8 @@ public class WordReportGenerationService { placeholders.addAll(dossierAttributesPlaceholder.keySet()); byte[] template; - - if (reportType.equals(ReportType.WORD_SINGLE_FILE_APPENDIX_A1_TEMPLATE)) { - template = appendixA1Template; - } else if (reportType.equals(ReportType.WORD_SINGLE_FILE_APPENDIX_A2_TEMPLATE)) { - template = appendixA2Template; - } else { - String storageId = reportTemplate.getStorageId(); - template = reportStorageService.getReportTemplate(storageId); - } + String storageId = reportTemplate.getStorageId(); + template = reportStorageService.getReportTemplate(storageId); try (ByteArrayInputStream is = new ByteArrayInputStream(template)) { XWPFDocument doc = new XWPFDocument(is); @@ -298,8 +282,7 @@ public class WordReportGenerationService { private boolean containsRedactionPlaceholder(String text) { - return text.contains(FILE_NAME_PLACEHOLDER) || text.contains(PAGE_PLACEHOLDER) || text.contains(PARAGRAPH_PLACEHOLDER) || text - .contains(JUSTIFICATION_PLACEHOLDER); + return text.contains(FILE_NAME_PLACEHOLDER) || text.contains(PAGE_PLACEHOLDER) || text.contains(PARAGRAPH_PLACEHOLDER) || text.contains(JUSTIFICATION_PLACEHOLDER); } diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/templates/Excel_Template.xlsx b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/templates/Excel_Template.xlsx deleted file mode 100644 index 33c4806..0000000 Binary files a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/templates/Excel_Template.xlsx and /dev/null differ diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/templates/Sanitisation justification Appendix A1.docx b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/templates/Sanitisation justification Appendix A1.docx deleted file mode 100644 index 408593b..0000000 Binary files a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/templates/Sanitisation justification Appendix A1.docx and /dev/null differ diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/templates/Sanitisation justification Appendix A2.docx b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/templates/Sanitisation justification Appendix A2.docx deleted file mode 100644 index e32d926..0000000 Binary files a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/templates/Sanitisation justification Appendix A2.docx and /dev/null differ 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 6330c25..f9c3dcf 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 @@ -1,24 +1,17 @@ package com.iqser.red.service.redaction.report.v1.server; -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.*; -import com.iqser.red.service.file.management.v1.api.model.*; -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.ReportTemplateClient; -import com.iqser.red.service.redaction.report.v1.server.configuration.MessagingConfiguration; -import com.iqser.red.service.redaction.report.v1.server.model.ReportRedactionEntry; -import com.iqser.red.service.redaction.report.v1.server.service.ExcelReportGenerationService; -import com.iqser.red.service.redaction.report.v1.server.service.ExcelTemplateReportGenerationService; -import com.iqser.red.service.redaction.report.v1.server.service.RedactionLogConverterService; -import com.iqser.red.service.redaction.report.v1.server.service.WordReportGenerationService; -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.service.StorageService; +import static org.mockito.Mockito.when; +import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; + +import java.io.FileOutputStream; +import java.io.IOException; +import java.time.OffsetDateTime; +import java.util.ArrayList; +import java.util.Arrays; +import java.util.Base64; +import java.util.HashMap; +import java.util.List; +import java.util.Map; import org.apache.commons.io.IOUtils; import org.apache.poi.xssf.usermodel.XSSFWorkbook; @@ -30,13 +23,33 @@ import org.springframework.boot.test.mock.mockito.MockBean; import org.springframework.core.io.ClassPathResource; import org.springframework.test.context.junit4.SpringRunner; -import java.io.FileOutputStream; -import java.io.IOException; -import java.time.OffsetDateTime; -import java.util.*; - -import static org.mockito.Mockito.when; -import static org.springframework.boot.test.context.SpringBootTest.WebEnvironment.RANDOM_PORT; +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.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.ReportTemplateClient; +import com.iqser.red.service.redaction.report.v1.server.configuration.MessagingConfiguration; +import com.iqser.red.service.redaction.report.v1.server.model.ReportRedactionEntry; +import com.iqser.red.service.redaction.report.v1.server.service.ExcelTemplateReportGenerationService; +import com.iqser.red.service.redaction.report.v1.server.service.RedactionLogConverterService; +import com.iqser.red.service.redaction.report.v1.server.service.WordReportGenerationService; +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.service.StorageService; @RunWith(SpringRunner.class) @SpringBootTest(webEnvironment = RANDOM_PORT) @@ -63,9 +76,6 @@ public class RedactionReportIntegrationTest { @Autowired private WordReportGenerationService wordReportGenerationService; - @Autowired - private ExcelReportGenerationService excelReportGenerationService; - @MockBean private MessagingConfiguration messagingConfiguration; @@ -102,8 +112,7 @@ public class RedactionReportIntegrationTest { 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", "data:image/png;base64," + Base64 - .getEncoder() + DossierAttributes dossierAttributes = new DossierAttributes(Arrays.asList(new DossierAttribute("id", "Michael"), new DossierAttribute("id2", "data:image/png;base64," + Base64.getEncoder() .encodeToString(IOUtils.toByteArray(imageResource.getInputStream()))))); when(dossierAttributesClient.getDossierAttributes("dossierId")).thenReturn(dossierAttributes); @@ -128,7 +137,7 @@ public class RedactionReportIntegrationTest { .storageId(storageId) .build()); - ClassPathResource templateResource = new ClassPathResource("templates/TEST_TEMPLATE.docx"); + ClassPathResource templateResource = new ClassPathResource("templates/Justification Appendix A1.docx"); when(reportStorageService.getReportTemplate(storageId)).thenReturn(IOUtils.toByteArray(templateResource.getInputStream())); ReportTemplate reportTemplate = ReportTemplate.builder() .dossierTemplateId("dossierTemplateId") @@ -145,28 +154,6 @@ public class RedactionReportIntegrationTest { } - @Test - public void testExcelReportGeneration() throws IOException { - - ClassPathResource redactionLogResource = new ClassPathResource("files/excelReportRedactionLog.json"); - - RedactionLog redactionLog = objectMapper.readValue(redactionLogResource.getInputStream(), RedactionLog.class); - - ClassPathResource legalBasisMappingResource = new ClassPathResource("files/LegalBasisMapping.json"); - - List legalBasisMapping = objectMapper.readValue(legalBasisMappingResource.getInputStream(), new TypeReference<>() { - }); - - List reportEntries = redactionLogConverterService.convertAndSort(redactionLog, legalBasisMapping); - - byte[] report = excelReportGenerationService.generateSingleFileReport(reportEntries, "TestFile"); - - try (FileOutputStream fileOutputStream = new FileOutputStream("/tmp/report.xlsx")) { - fileOutputStream.write(report); - } - } - - @Test public void testExcelTemplateReportGeneration() throws IOException { @@ -181,7 +168,7 @@ public class RedactionReportIntegrationTest { String storageId = "storageId"; String templateId = "templateId"; - ClassPathResource templateResource = new ClassPathResource("templates/Excel_Template.xlsx"); + ClassPathResource templateResource = new ClassPathResource("templates/Excel Report.xlsx"); XSSFWorkbook workbook = new XSSFWorkbook(templateResource.getInputStream()); ClassPathResource legalBasisMappingResource = new ClassPathResource("files/legalBasisMapping.json"); @@ -193,8 +180,7 @@ public class RedactionReportIntegrationTest { 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() + 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); @@ -247,8 +233,7 @@ public class RedactionReportIntegrationTest { 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() + 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); @@ -269,7 +254,7 @@ public class RedactionReportIntegrationTest { .storageId(storageId) .build()); - ClassPathResource wordTemplateResource = new ClassPathResource("templates/TEST_TEMPLATE.docx"); + ClassPathResource wordTemplateResource = new ClassPathResource("templates/Justification Appendix A1.docx"); when(reportStorageService.getReportTemplate(storageId)).thenReturn(IOUtils.toByteArray(wordTemplateResource.getInputStream())); ReportTemplate reportTemplate = ReportTemplate.builder() .dossierTemplateId("dossierTemplateId") @@ -294,7 +279,7 @@ public class RedactionReportIntegrationTest { fileOutputStream.write(wordReport2); } - ClassPathResource excelTemplateResource = new ClassPathResource("templates/Excel_Template.xlsx"); + 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); diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/test/resources/templates/Excel Report.xlsx b/redaction-report-service-v1/redaction-report-service-server-v1/src/test/resources/templates/Excel Report.xlsx new file mode 100644 index 0000000..b2400ff Binary files /dev/null and b/redaction-report-service-v1/redaction-report-service-server-v1/src/test/resources/templates/Excel Report.xlsx differ diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/test/resources/templates/Justification Appendix A1.docx b/redaction-report-service-v1/redaction-report-service-server-v1/src/test/resources/templates/Justification Appendix A1.docx new file mode 100644 index 0000000..44db7ce Binary files /dev/null and b/redaction-report-service-v1/redaction-report-service-server-v1/src/test/resources/templates/Justification Appendix A1.docx differ diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/test/resources/templates/Justification Appendix A2.docx b/redaction-report-service-v1/redaction-report-service-server-v1/src/test/resources/templates/Justification Appendix A2.docx new file mode 100644 index 0000000..ceb7b8e Binary files /dev/null and b/redaction-report-service-v1/redaction-report-service-server-v1/src/test/resources/templates/Justification Appendix A2.docx differ diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/test/resources/templates/TEST_TEMPLATE.docx b/redaction-report-service-v1/redaction-report-service-server-v1/src/test/resources/templates/TEST_TEMPLATE.docx deleted file mode 100644 index 1e02068..0000000 Binary files a/redaction-report-service-v1/redaction-report-service-server-v1/src/test/resources/templates/TEST_TEMPLATE.docx and /dev/null differ