diff --git a/redaction-report-service-v1/redaction-report-service-api-v1/pom.xml b/redaction-report-service-v1/redaction-report-service-api-v1/pom.xml index bada9dd..720e510 100644 --- a/redaction-report-service-v1/redaction-report-service-api-v1/pom.xml +++ b/redaction-report-service-v1/redaction-report-service-api-v1/pom.xml @@ -17,7 +17,7 @@ com.iqser.red.service redaction-service-api-v1 - 1.5.4 + 1.5.8 diff --git a/redaction-report-service-v1/redaction-report-service-api-v1/src/main/java/com/iqser/red/service/redaction/report/v1/api/model/MultiFileRedactionLog.java b/redaction-report-service-v1/redaction-report-service-api-v1/src/main/java/com/iqser/red/service/redaction/report/v1/api/model/MultiFileRedactionLog.java index 8d0bac9..b30d588 100644 --- a/redaction-report-service-v1/redaction-report-service-api-v1/src/main/java/com/iqser/red/service/redaction/report/v1/api/model/MultiFileRedactionLog.java +++ b/redaction-report-service-v1/redaction-report-service-api-v1/src/main/java/com/iqser/red/service/redaction/report/v1/api/model/MultiFileRedactionLog.java @@ -16,4 +16,6 @@ public class MultiFileRedactionLog { private List redactionLogs = new ArrayList<>(); + private String template; + } 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 9e0787b..c481bd4 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 @@ -15,6 +15,7 @@ import org.apache.poi.xwpf.usermodel.XWPFRun; import org.apache.poi.xwpf.usermodel.XWPFTable; import org.apache.poi.xwpf.usermodel.XWPFTableCell; import org.apache.poi.xwpf.usermodel.XWPFTableRow; +import org.apache.xmlbeans.XmlCursor; import org.springframework.stereotype.Service; import com.iqser.red.service.configuration.v1.api.model.LegalBasisMapping; @@ -32,18 +33,30 @@ import lombok.RequiredArgsConstructor; public class ReportGenerationService { private final LegalBasisMappingClient legalBasisMappingClient; - private byte[] template; + private byte[] efsaTemplate; + private byte[] syngentaTemplate; @PostConstruct public void init() { - template = ResourceLoader.load("templates/EFSA Template 1.docx"); + efsaTemplate = ResourceLoader.load("templates/EFSA Template.docx"); + syngentaTemplate = ResourceLoader.load("templates/Syngenta Template.docx"); } public byte[] generateReport(MultiFileRedactionLog multiFileRedactionLog) { + byte[] template; + + if(multiFileRedactionLog.getTemplate().equals("EFSA Template")){ + template = efsaTemplate; + } else if(multiFileRedactionLog.getTemplate().equals("Syngenta Template")){ + template = syngentaTemplate; + } else { + template = syngentaTemplate; + } + try (ByteArrayInputStream is = new ByteArrayInputStream(template)) { XWPFDocument doc = new XWPFDocument(is); LegalBasisMapping legalBasisMapping = legalBasisMappingClient.getLegalBasisMapping(); @@ -60,13 +73,13 @@ public class ReportGenerationService { XWPFTable table = doc.getTables().get(0); - multiFileRedactionLog.getRedactionLogs().forEach(fileRedactionLog -> { + XmlCursor cursor = table.getCTTbl().newCursor(); + XWPFParagraph newParagraph = doc.insertNewParagraph(cursor); + XWPFRun run = newParagraph.createRun(); + run.setText("Applied rules: EFSA 1 (Vertebrate Authors)"); + run.setFontSize(10); - XWPFTableRow singelColumnRow = table.createRow(); - singelColumnRow.getCell(3).getCTTc().newCursor().removeXml(); - singelColumnRow.getCell(2).getCTTc().newCursor().removeXml(); - singelColumnRow.getCell(1).getCTTc().newCursor().removeXml(); - setText(singelColumnRow.getCell(0), fileRedactionLog.getFilename()); + multiFileRedactionLog.getRedactionLogs().forEach(fileRedactionLog -> { fileRedactionLog.getRedactionLogEntry().forEach(entry -> { @@ -94,10 +107,10 @@ public class ReportGenerationService { .collect(Collectors.toList()); pages.forEach(page -> { XWPFTableRow row = table.createRow(); - setText(row.getCell(0), String.valueOf(page)); - setText(row.getCell(1), entry.getSection()); - setText(row.getCell(2), entry.getLegalBasis()); - setText(row.getCell(3), reasonByLegalBasis.get(entry.getLegalBasis())); + setText(row.getCell(0), fileRedactionLog.getFilename()); + setText(row.getCell(1), String.valueOf(page)); + setText(row.getCell(2), entry.getSection()); + setText(row.getCell(3), entry.getLegalBasis() + " " + reasonByLegalBasis.get(entry.getLegalBasis())); }); } }); diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/templates/EFSA Template 1.docx b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/templates/EFSA Template 1.docx deleted file mode 100644 index e05d404..0000000 Binary files a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/templates/EFSA Template 1.docx and /dev/null differ diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/templates/EFSA Template.docx b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/templates/EFSA Template.docx new file mode 100644 index 0000000..723d370 Binary files /dev/null and b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/templates/EFSA Template.docx differ diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/templates/Syngenta Template.docx b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/templates/Syngenta Template.docx new file mode 100644 index 0000000..35e4c78 Binary files /dev/null and b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/resources/templates/Syngenta Template.docx 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 bb09d15..aae14be 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 @@ -51,7 +51,7 @@ public class RedactionReportIntegrationTest { RedactionLog redactionLog = objectMapper.readValue(redactionLogResource.getInputStream(), RedactionLog.class); redactionLog.setFilename("TestFile"); - MultiFileRedactionLog multiFileRedactionLog = new MultiFileRedactionLog(List.of(redactionLog)); + MultiFileRedactionLog multiFileRedactionLog = new MultiFileRedactionLog(List.of(redactionLog), "EFSA Template"); ReportResult reportResult = redactionReportController.generateReport(multiFileRedactionLog);