From a9ff46a3fd3363b47799e8dfe5dc99575c36a33b Mon Sep 17 00:00:00 2001 From: deiflaender Date: Thu, 11 Aug 2022 17:09:13 +0200 Subject: [PATCH] RED-3974: Fixed special case table header with diffent size of columns in rows --- .../service/SectionTextBuilderService.java | 21 +++++++++++++------ 1 file changed, 15 insertions(+), 6 deletions(-) diff --git a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/SectionTextBuilderService.java b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/SectionTextBuilderService.java index 7034753e..bc550d43 100644 --- a/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/SectionTextBuilderService.java +++ b/redaction-service-v1/redaction-service-server-v1/src/main/java/com/iqser/red/service/redaction/v1/server/redaction/service/SectionTextBuilderService.java @@ -98,9 +98,11 @@ public class SectionTextBuilderService { areas.add(sectionArea); if (!cell.isHeaderCell()) { - String headerName = getHeaderName(hasHeader, cell, table.getRows().get(0).get(cellNum)); - sectionArea.setHeader(headerName); - tabularData.put(headerName, new CellValue(cell.getTextBlocks(), startOffset)); + String headerName = getHeaderName(hasHeader, cell, table.getRows().get(0), row.size(), cellNum); + if(headerName != null) { + sectionArea.setHeader(headerName); + tabularData.put(headerName, new CellValue(cell.getTextBlocks(), startOffset)); + } } textBlocks.addAll(cell.getTextBlocks()); @@ -155,10 +157,17 @@ public class SectionTextBuilderService { } - private String getHeaderName(boolean hasHeader, Cell currentCell, Cell cellInFirstRow) { + private String getHeaderName(boolean hasHeader, Cell currentCell, List firstRow, int currentRowSize, int cellNum) { - return hasHeader ? buildHeaderName(currentCell.getHeaderCells() - .get(currentCell.getHeaderCells().size() - 1)) : buildHeaderName(cellInFirstRow); + if (hasHeader && !currentCell.getHeaderCells().isEmpty()) { + return buildHeaderName(currentCell.getHeaderCells().get(currentCell.getHeaderCells().size() - 1)); + } + + if (!hasHeader && currentRowSize == firstRow.size()) { + return buildHeaderName(firstRow.get(cellNum)); + } + + return null; }