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 8daa217..38c8da4 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 @@ -91,17 +91,21 @@ public class ExcelReportGenerationService { sheet.setColumnWidth(columnWidthEntry.getKey(), columnWidthEntry.getValue()); } - addRows(workbook, sheet, excelModel.getCellsToCopyBeforeRedactionPlaceholderRow(), 0, placeholderModel, dossierName, fileModel.getFilename()); - excelModel.setRowsBeforeRedactionEntryRowsAdded(true); + addRows(workbook, sheet, excelModel.getCellsToCopyBeforeRedactionPlaceholderRow(), excelModel.isHasRssPlaceHolders() ? excelModel.getWrittenRows() + .size() : 0, placeholderModel, dossierName, fileModel.getFilename(), excelModel); + + if(!excelModel.isHasRssPlaceHolders()) { + excelModel.setRowsBeforeRedactionEntryRowsAdded(true); + } } - if(excelModel.getRedactionPlaceholderRow() != -1) { + if(!excelModel.isHasRssPlaceHolders()) { addRedactionEntryRows(sheet, reportEntries, fileModel.getFilename(), excelModel, placeholderModel); } if (isLastFile) { addRows(workbook, sheet, excelModel.getCellsToCopyAfterRedactionPlaceholderRow(), excelModel.getWrittenRows() - .size(), placeholderModel, dossierName, fileModel.getFilename()); + .size(), placeholderModel, dossierName, fileModel.getFilename(), excelModel); } } @@ -116,7 +120,7 @@ public class ExcelReportGenerationService { @SneakyThrows @Timed("redactmanager_excel-addRows") private void addRows(SXSSFWorkbook workbook, Sheet sheet, Map copiedCells, int numberOfRowsToShift, PlaceholderModel placeholderModel, String dossierName, - String filename) { + String filename, ExcelModel excelModel) { Set createdCopyRows = new HashSet<>(); for (Map.Entry cellsToCopyEntry : copiedCells.entrySet()) { @@ -126,9 +130,13 @@ public class ExcelReportGenerationService { if (!createdCopyRows.contains(indexToAddRow)) { sheet.createRow(indexToAddRow); createdCopyRows.add(indexToAddRow); + if (excelModel.isHasRssPlaceHolders()) { + excelModel.getWrittenRows().add(indexToAddRow); + } } var createdCell = sheet.getRow(indexToAddRow).createCell(cellsToCopyEntry.getKey().getColumnIndex()); + createdCell.setCellValue(cellsToCopyEntry.getValue().getStringCellValue()); CellStyle newCellStyle = workbook.createCellStyle(); newCellStyle.cloneStyleFrom(cellsToCopyEntry.getValue().getCellStyle()); @@ -160,6 +168,7 @@ public class ExcelReportGenerationService { Map columnWidths = new HashMap<>(); Map cellsToCopyBeforePlaceholderRow = new HashMap<>(); Map cellsToCopyAfterPlaceholderRow = new HashMap<>(); + Map cellsToCopyInPlaceholderRow = new HashMap<>(); boolean hasRssPlaceHolders = false; int placeholderRow = -1; for (int j = 0; j < sheet.getLastRowNum() + 1; j++) { @@ -179,6 +188,7 @@ public class ExcelReportGenerationService { if (containsRedactionPlaceholder(cellStringValue)) { placeholderCellPos.put(i, getFunctionForPlaceHolder(cellStringValue)); placeholderRow = j; + cellsToCopyInPlaceholderRow.put(new CellIdentifier(j, i), cell); } else { if (placeholderRow == -1) { cellsToCopyBeforePlaceholderRow.put(new CellIdentifier(j, i), cell); @@ -190,6 +200,13 @@ public class ExcelReportGenerationService { } } } + + if (hasRssPlaceHolders) { + cellsToCopyBeforePlaceholderRow.putAll(cellsToCopyInPlaceholderRow); + cellsToCopyBeforePlaceholderRow.putAll(cellsToCopyAfterPlaceholderRow); + cellsToCopyAfterPlaceholderRow = new HashMap<>(); + } + log.debug("Calculate Placeholder Cells took: {}", System.currentTimeMillis() - start); return new ExcelModel(placeholderCellPos, placeholderRow, columnWidths, cellsToCopyBeforePlaceholderRow, cellsToCopyAfterPlaceholderRow, new ArrayList<>(), false, hasRssPlaceHolders); }