RSS-115: Enabled multifile report for rss

This commit is contained in:
deiflaender 2022-09-21 10:30:05 +02:00
parent f19b8b68f4
commit 060861e7c3

View File

@ -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<CellIdentifier, Cell> copiedCells, int numberOfRowsToShift, PlaceholderModel placeholderModel, String dossierName,
String filename) {
String filename, ExcelModel excelModel) {
Set<Integer> createdCopyRows = new HashSet<>();
for (Map.Entry<CellIdentifier, Cell> 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<Integer, Integer> columnWidths = new HashMap<>();
Map<CellIdentifier, Cell> cellsToCopyBeforePlaceholderRow = new HashMap<>();
Map<CellIdentifier, Cell> cellsToCopyAfterPlaceholderRow = new HashMap<>();
Map<CellIdentifier, Cell> 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);
}