diff --git a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/model/ExcelModel.java b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/model/ExcelModel.java index 8862999..d5d9564 100644 --- a/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/model/ExcelModel.java +++ b/redaction-report-service-v1/redaction-report-service-server-v1/src/main/java/com/iqser/red/service/redaction/report/v1/server/model/ExcelModel.java @@ -26,5 +26,8 @@ public class ExcelModel { private List writtenRows = new ArrayList<>(); private boolean rowsBeforeRedactionEntryRowsAdded; private boolean hasRssPlaceHolders; + private boolean placeholderInFirstRow; + private boolean firstRowWritten; + } 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 index 38c8da4..c27a011 100644 --- 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 @@ -123,9 +123,15 @@ public class ExcelReportGenerationService { String filename, ExcelModel excelModel) { Set createdCopyRows = new HashSet<>(); + + int skipRows = excelModel.isHasRssPlaceHolders() && excelModel.isFirstRowWritten() && !excelModel.isPlaceholderInFirstRow() ? 1 : 0; for (Map.Entry cellsToCopyEntry : copiedCells.entrySet()) { - int indexToAddRow = cellsToCopyEntry.getKey().getRowIndex() + numberOfRowsToShift; + if(excelModel.isHasRssPlaceHolders() && cellsToCopyEntry.getKey().getRowIndex() == 0 && excelModel.isFirstRowWritten() && !excelModel.isPlaceholderInFirstRow()){ + continue; + } + + int indexToAddRow = cellsToCopyEntry.getKey().getRowIndex() + numberOfRowsToShift - skipRows; if (!createdCopyRows.contains(indexToAddRow)) { sheet.createRow(indexToAddRow); @@ -146,6 +152,8 @@ public class ExcelReportGenerationService { replacePlaceholders(createdCell, placeholderModel, dossierName, filename); replacePlaceholdersForImagePlaceholder(workbook, sheet, createdCell, placeholderModel); } + + excelModel.setFirstRowWritten(true); } @@ -171,6 +179,7 @@ public class ExcelReportGenerationService { Map cellsToCopyInPlaceholderRow = new HashMap<>(); boolean hasRssPlaceHolders = false; int placeholderRow = -1; + boolean placeholderInFirstRow = false; for (int j = 0; j < sheet.getLastRowNum() + 1; j++) { Row actualRow = sheet.getRow(j); if (actualRow != null) { @@ -181,6 +190,10 @@ public class ExcelReportGenerationService { columnWidths.put(i, columnWidth); String cellStringValue = cell.getStringCellValue(); + if(j == 0 && cellStringValue.contains("{{")){ + placeholderInFirstRow = true; + } + if(cellStringValue.contains(RSS_PLACEHOLDER_BASE)){ hasRssPlaceHolders = true; } @@ -208,7 +221,7 @@ public class ExcelReportGenerationService { } log.debug("Calculate Placeholder Cells took: {}", System.currentTimeMillis() - start); - return new ExcelModel(placeholderCellPos, placeholderRow, columnWidths, cellsToCopyBeforePlaceholderRow, cellsToCopyAfterPlaceholderRow, new ArrayList<>(), false, hasRssPlaceHolders); + return new ExcelModel(placeholderCellPos, placeholderRow, columnWidths, cellsToCopyBeforePlaceholderRow, cellsToCopyAfterPlaceholderRow, new ArrayList<>(), false, hasRssPlaceHolders, placeholderInFirstRow, false); }