From fdeef449bd16ea75c7f1ad3b274d2dc57bcad47d Mon Sep 17 00:00:00 2001 From: aoezyetimoglu Date: Wed, 22 Dec 2021 12:39:26 +0100 Subject: [PATCH] RED-2523: Rename justification placeholders --- .../ExcelTemplateReportGenerationService.java | 25 +++++++++++++----- .../v1/server/service/PlaceholderService.java | 4 ++- .../service/WordReportGenerationService.java | 20 ++++++++------ ...64 appendix_b EFSA dRAR justification.docx | Bin 77962 -> 77739 bytes 4 files changed, 33 insertions(+), 16 deletions(-) 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 3128e86..bd86af1 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 @@ -11,9 +11,11 @@ import static com.iqser.red.service.redaction.report.v1.server.service.Placehold import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.FORMAT_DATE_ISO_PLACEHOLDER; import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.FORMAT_TIME_ISO; import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.FORMAT_TIME_ISO_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.JUSTIFICATION_LEGAL_BASIS_PLACEHOLDER; import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.JUSTIFICATION_PARAGRAPH_PLACEHOLDER; import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.JUSTIFICATION_PLACEHOLDER; import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.JUSTIFICATION_REASON_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.JUSTIFICATION_TEXT_PLACEHOLDER; import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.PAGE_PLACEHOLDER; import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.PARAGRAPH_PLACEHOLDER; import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.REDACTION_VALUE_PLACEHOLDER; @@ -213,7 +215,7 @@ public class ExcelTemplateReportGenerationService { private boolean containsRedactionPlaceholder(String text) { - return text.contains(FILE_NAME_PLACEHOLDER) || text.contains(PAGE_PLACEHOLDER) || text.contains(PARAGRAPH_PLACEHOLDER) || text.contains(JUSTIFICATION_PLACEHOLDER) || text.contains(EXCERPT_PLACEHOLDER) || text.contains(JUSTIFICATION_PARAGRAPH_PLACEHOLDER) || text.contains(JUSTIFICATION_REASON_PLACEHOLDER) || text.contains(REDACTION_VALUE_PLACEHOLDER); + return text.contains(FILE_NAME_PLACEHOLDER) || text.contains(PAGE_PLACEHOLDER) || text.contains(PARAGRAPH_PLACEHOLDER) || text.contains(JUSTIFICATION_PLACEHOLDER) || text.contains(EXCERPT_PLACEHOLDER) || text.contains(JUSTIFICATION_PARAGRAPH_PLACEHOLDER) || text.contains(JUSTIFICATION_REASON_PLACEHOLDER) || text.contains(REDACTION_VALUE_PLACEHOLDER) || text.contains(JUSTIFICATION_LEGAL_BASIS_PLACEHOLDER) || text.contains(JUSTIFICATION_TEXT_PLACEHOLDER); } @@ -237,6 +239,12 @@ public class ExcelTemplateReportGenerationService { if (placeholder.equals(JUSTIFICATION_REASON_PLACEHOLDER)) { return entry.getJustificationReason(); } + if (placeholder.equals(JUSTIFICATION_LEGAL_BASIS_PLACEHOLDER)) { + return entry.getJustificationParagraph(); + } + if (placeholder.equals(JUSTIFICATION_TEXT_PLACEHOLDER)) { + return entry.getJustificationReason(); + } if (placeholder.equals(EXCERPT_PLACEHOLDER)) { return entry.getExcerpt(); } @@ -273,7 +281,8 @@ public class ExcelTemplateReportGenerationService { // ByteArrayInputStream scaledImage = getScaledImage(is, PixelUtil.widthUnits2Pixel((short) sheet.getColumnWidth(cell.getColumnIndex())), PixelUtil.heightUnits2Pixel(cell.getRow().getHeight())); // is.reset(); - double factor = calculateScale(is, PixelUtil.widthUnits2Pixel((short) sheet.getColumnWidth(cell.getColumnIndex())), PixelUtil.heightUnits2Pixel(cell.getRow().getHeight())); + double factor = calculateScale(is, PixelUtil.widthUnits2Pixel((short) sheet.getColumnWidth(cell.getColumnIndex())), PixelUtil.heightUnits2Pixel(cell.getRow() + .getHeight())); is.reset(); int pictureIdx = workbook.addPicture(is, XSSFWorkbook.PICTURE_TYPE_JPEG); @@ -302,16 +311,18 @@ public class ExcelTemplateReportGenerationService { } - private double calculateScale(ByteArrayInputStream imageByteArrayInputStream, float cellWidth, float cellHeight) throws IOException { + private double calculateScale(ByteArrayInputStream imageByteArrayInputStream, float cellWidth, + float cellHeight) throws IOException { + BufferedImage img = ImageIO.read(imageByteArrayInputStream); double imageWidth = img.getWidth(); double imageHeight = img.getHeight(); - double widthFactor = (double) cellWidth/ imageWidth; - double heightFactor = (double) cellHeight/ imageHeight; + double widthFactor = (double) cellWidth / imageWidth; + double heightFactor = (double) cellHeight / imageHeight; - if (imageWidth < cellWidth && imageHeight < cellHeight) { + if (imageWidth < cellWidth && imageHeight < cellHeight) { return 1; } else if (cellWidth > cellHeight) { return heightFactor; @@ -347,7 +358,6 @@ public class ExcelTemplateReportGenerationService { if (fileAttributePlaceholders.containsKey(placeholder)) { String id = fileAttributePlaceholders.get(placeholder); - if (fileStatus.getFileAttributes().containsKey(id)) { return fileStatus.getFileAttributes().get(id); } else { @@ -360,6 +370,7 @@ public class ExcelTemplateReportGenerationService { throw new RuntimeException("unknown placeholder"); } + @SneakyThrows public byte[] toByteArray(XSSFWorkbook workbook) { diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/PlaceholderService.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/PlaceholderService.java index f41af3e..94dd45c 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/PlaceholderService.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/service/PlaceholderService.java @@ -18,7 +18,9 @@ public class PlaceholderService { public static final String PARAGRAPH_PLACEHOLDER = "{{redaction.paragraph}}"; public static final String JUSTIFICATION_PLACEHOLDER = "{{redaction.justification}}"; public static final String JUSTIFICATION_PARAGRAPH_PLACEHOLDER = "{{redaction.justificationParagraph}}"; + public static final String JUSTIFICATION_LEGAL_BASIS_PLACEHOLDER = "{{redaction.justificationLegalBasis}}"; public static final String JUSTIFICATION_REASON_PLACEHOLDER = "{{redaction.justificationReason}}"; + public static final String JUSTIFICATION_TEXT_PLACEHOLDER = "{{redaction.justificationText}}"; public static final String EXCERPT_PLACEHOLDER = "{{redaction.excerpt}}"; public static final String REDACTION_VALUE_PLACEHOLDER = "{{redaction.value}}"; @@ -39,7 +41,7 @@ public class PlaceholderService { public List getGeneralPlaceholders() { - return List.of(FILE_NAME_PLACEHOLDER, PAGE_PLACEHOLDER, PARAGRAPH_PLACEHOLDER, JUSTIFICATION_PLACEHOLDER, JUSTIFICATION_PARAGRAPH_PLACEHOLDER, JUSTIFICATION_REASON_PLACEHOLDER, EXCERPT_PLACEHOLDER, FORMAT_DATE_ISO_PLACEHOLDER, FORMAT_DATE_GER_PLACEHOLDER, FORMAT_DATE_ENG_PLACEHOLDER, FORMAT_TIME_ISO_PLACEHOLDER, DOSSIER_NAME_PLACEHOLDER, IUCLID_FUNCTION_PLACEHOLDER, REDACTION_VALUE_PLACEHOLDER); + return List.of(FILE_NAME_PLACEHOLDER, PAGE_PLACEHOLDER, PARAGRAPH_PLACEHOLDER, JUSTIFICATION_PLACEHOLDER, EXCERPT_PLACEHOLDER, FORMAT_DATE_ISO_PLACEHOLDER, FORMAT_DATE_GER_PLACEHOLDER, FORMAT_DATE_ENG_PLACEHOLDER, FORMAT_TIME_ISO_PLACEHOLDER, DOSSIER_NAME_PLACEHOLDER, IUCLID_FUNCTION_PLACEHOLDER, REDACTION_VALUE_PLACEHOLDER, JUSTIFICATION_LEGAL_BASIS_PLACEHOLDER, JUSTIFICATION_TEXT_PLACEHOLDER); } } 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 9773357..4fe35f2 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 @@ -12,9 +12,11 @@ import static com.iqser.red.service.redaction.report.v1.server.service.Placehold import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.FORMAT_TIME_ISO; import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.FORMAT_TIME_ISO_PLACEHOLDER; import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.IUCLID_FUNCTION_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.JUSTIFICATION_LEGAL_BASIS_PLACEHOLDER; import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.JUSTIFICATION_PARAGRAPH_PLACEHOLDER; import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.JUSTIFICATION_PLACEHOLDER; import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.JUSTIFICATION_REASON_PLACEHOLDER; +import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.JUSTIFICATION_TEXT_PLACEHOLDER; import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.PAGE_PLACEHOLDER; import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.PARAGRAPH_PLACEHOLDER; import static com.iqser.red.service.redaction.report.v1.server.service.PlaceholderService.REDACTION_VALUE_PLACEHOLDER; @@ -111,7 +113,7 @@ public class WordReportGenerationService { if (dossierAttribute.getValue() == null) { dossierAttributesPlaceholder.put(attributeConfig.getPlaceholder(), ""); } else { - if(attributeConfig.getType().equals(DossierAttributeType.DATE)) { + if (attributeConfig.getType().equals(DossierAttributeType.DATE)) { OffsetDateTime dt = OffsetDateTime.parse(dossierAttribute.getValue()); String date = FORMAT_DATE_ISO.format(dt); dossierAttributesPlaceholder.put(attributeConfig.getPlaceholder(), date); @@ -243,8 +245,7 @@ public class WordReportGenerationService { run.setText("", 0); run.addBreak(); Dimension2DDouble dim = getImageDimension(is2); - run.addPicture(is2, XWPFDocument.PICTURE_TYPE_JPEG, "image.jpg", Units.toEMU(dim.getWidth()), Units.toEMU(dim - .getHeight())); + run.addPicture(is2, XWPFDocument.PICTURE_TYPE_JPEG, "image.jpg", Units.toEMU(dim.getWidth()), Units.toEMU(dim.getHeight())); int size = p.getRuns().size(); for (int i = 1; i < size; i++) { p.removeRun(1); @@ -315,8 +316,7 @@ public class WordReportGenerationService { for (XWPFTable tbl : doc.getTables()) { String tblText = tbl.getText(); - if (tblText.contains(PAGE_PLACEHOLDER) || tblText.contains(PARAGRAPH_PLACEHOLDER) || tblText.contains(JUSTIFICATION_PLACEHOLDER) || tblText - .contains(EXCERPT_PLACEHOLDER) || tblText.contains(JUSTIFICATION_PARAGRAPH_PLACEHOLDER) || tblText.contains(JUSTIFICATION_REASON_PLACEHOLDER)) { + if (tblText.contains(PAGE_PLACEHOLDER) || tblText.contains(PARAGRAPH_PLACEHOLDER) || tblText.contains(JUSTIFICATION_PLACEHOLDER) || tblText.contains(EXCERPT_PLACEHOLDER) || tblText.contains(JUSTIFICATION_PARAGRAPH_PLACEHOLDER) || tblText.contains(JUSTIFICATION_REASON_PLACEHOLDER) || tblText.contains(JUSTIFICATION_LEGAL_BASIS_PLACEHOLDER) || tblText.contains(JUSTIFICATION_TEXT_PLACEHOLDER)) { return tbl; } } @@ -326,9 +326,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) || text.contains(EXCERPT_PLACEHOLDER) || text.contains(JUSTIFICATION_PARAGRAPH_PLACEHOLDER) || text - .contains(JUSTIFICATION_REASON_PLACEHOLDER) || text.contains(REDACTION_VALUE_PLACEHOLDER); + return text.contains(FILE_NAME_PLACEHOLDER) || text.contains(PAGE_PLACEHOLDER) || text.contains(PARAGRAPH_PLACEHOLDER) || text.contains(JUSTIFICATION_PLACEHOLDER) || text.contains(EXCERPT_PLACEHOLDER) || text.contains(JUSTIFICATION_PARAGRAPH_PLACEHOLDER) || text.contains(JUSTIFICATION_REASON_PLACEHOLDER) || text.contains(REDACTION_VALUE_PLACEHOLDER) || text.contains(JUSTIFICATION_LEGAL_BASIS_PLACEHOLDER) || text.contains(JUSTIFICATION_TEXT_PLACEHOLDER); } @@ -388,6 +386,12 @@ public class WordReportGenerationService { if (placeholder.equals(JUSTIFICATION_REASON_PLACEHOLDER)) { return entry.getJustificationReason(); } + if (placeholder.equals(JUSTIFICATION_LEGAL_BASIS_PLACEHOLDER)) { + return entry.getJustificationParagraph(); + } + if (placeholder.equals(JUSTIFICATION_TEXT_PLACEHOLDER)) { + return entry.getJustificationReason(); + } if (placeholder.equals(EXCERPT_PLACEHOLDER)) { return entry.getExcerpt(); } diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/test/resources/templates/6464 appendix_b EFSA dRAR justification.docx b/redaction-report-service-v1/redaction-report-service-server-v1/src/test/resources/templates/6464 appendix_b EFSA dRAR justification.docx index a5e3cd538b23db36900cbe46a99d9af5df4603e2..07f36e22e1201c4c5b600fcbb37de5cc2a5fa16e 100644 GIT binary patch delta 10016 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 delta 10248 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