Skip to content

Commit bab1b86

Browse files
committed
refactor: refactor getGridHeaders and getGridFooters return type
Close #155
1 parent e0362ab commit bab1b86

File tree

7 files changed

+81
-36
lines changed

7 files changed

+81
-36
lines changed

src/main/java/com/flowingcode/vaadin/addons/gridexporter/BaseStreamResourceWriter.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -95,13 +95,13 @@ protected Stream<T> getDataStream(Query newQuery) {
9595
return stream;
9696
}
9797

98-
protected List<Pair<List<String>, Column<T>>> getGridHeaders(Grid<T> grid) {
98+
protected List<GridHeader<T>> getGridHeaders(Grid<T> grid) {
9999
return exporter.getColumnsOrdered().stream()
100-
.map(column -> ImmutablePair.of(getHeaderTexts(grid, column), column))
100+
.map(column -> getGridHeader(grid, column))
101101
.collect(Collectors.toList());
102102
}
103-
104-
private List<String> getHeaderTexts(Grid<T> grid, Column<T> column) {
103+
104+
private GridHeader<T> getGridHeader(Grid<T> grid, Column<T> column) {
105105
List<String> headerTexts = new ArrayList<>();
106106
List<HeaderRow> headerRows = grid.getHeaderRows();
107107
for (HeaderRow headerRow : headerRows) {
@@ -117,14 +117,14 @@ private List<String> getHeaderTexts(Grid<T> grid, Column<T> column) {
117117
});
118118
headerTexts.add(headerText);
119119
}
120-
return headerTexts;
120+
return new GridHeader<>(headerTexts, column);
121121
}
122122

123-
protected List<Pair<String, Column<T>>> getGridFooters(Grid<T> grid) {
123+
protected List<GridFooter<T>> getGridFooters(Grid<T> grid) {
124124
return exporter.getColumnsOrdered().stream()
125125
.map(
126126
column ->
127-
ImmutablePair.of(
127+
new GridFooter<>(
128128
renderCellTextContent(grid, column, GridExporter.COLUMN_FOOTER, null),column
129129
)
130130
)

src/main/java/com/flowingcode/vaadin/addons/gridexporter/CsvStreamResourceWriter.java

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,6 @@
3030
import java.util.List;
3131
import java.util.stream.Collectors;
3232
import org.apache.commons.lang3.StringUtils;
33-
import org.apache.commons.lang3.tuple.Pair;
3433
import org.slf4j.Logger;
3534
import org.slf4j.LoggerFactory;
3635

@@ -61,13 +60,13 @@ public void accept(OutputStream out, VaadinSession session) throws IOException {
6160
.filter(this::isExportable)
6261
.collect(Collectors.toList()));
6362

64-
headers = getGridHeaders(grid).stream().map(Pair::getLeft).toArray(String[]::new);
63+
headers = getGridHeaders(grid).stream().map(GridHeader::getTexts).toArray(String[]::new);
6564
data = obtainDataStream(grid.getDataProvider())
6665
.map(this::buildRow)
6766
.collect(Collectors.toList());
6867
footers = getGridFooters(grid).stream()
69-
.filter(pair -> StringUtils.isNotBlank(pair.getKey()))
70-
.map(Pair::getLeft)
68+
.map(GridFooter::getText)
69+
.filter(StringUtils::isNotBlank)
7170
.toArray(String[]::new);
7271
} finally {
7372
session.unlock();

src/main/java/com/flowingcode/vaadin/addons/gridexporter/DocxStreamResourceWriter.java

Lines changed: 7 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,6 @@
3333
import java.util.Map;
3434
import java.util.stream.Collectors;
3535
import java.util.stream.Stream;
36-
import org.apache.commons.lang3.tuple.Pair;
3736
import org.apache.poi.EncryptedDocumentException;
3837
import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
3938
import org.apache.poi.xwpf.usermodel.XWPFDocument;
@@ -128,10 +127,7 @@ private XWPFDocument createDoc() throws IOException {
128127
cctblgridcol, "" + Math.round(9638 / exporter.getColumns().size()));
129128
});
130129

131-
List<Pair<String, Column<T>>> headers = getGridHeaders(grid).stream()
132-
.map(pair ->
133-
Pair.of(pair.getLeft().get(0), pair.getRight())
134-
).collect(Collectors.toList());
130+
List<GridHeader<T>> headers = getGridHeaders(grid);
135131
XWPFTableCell cell = findCellWithPlaceHolder(table, exporter.headersPlaceHolder);
136132
if (cell != null) {
137133
fillHeaderOrFooter(table, cell, headers, true, exporter.headersPlaceHolder);
@@ -141,7 +137,7 @@ private XWPFDocument createDoc() throws IOException {
141137
fillData(table, cell, grid.getDataProvider());
142138

143139
cell = findCellWithPlaceHolder(table, exporter.footersPlaceHolder);
144-
List<Pair<String, Column<T>>> footers = getGridFooters(grid);
140+
List<GridFooter<T>> footers = getGridFooters(grid);
145141
if (cell != null) {
146142
fillHeaderOrFooter(table, cell, footers, false, exporter.footersPlaceHolder);
147143
}
@@ -275,7 +271,7 @@ private void setCellValue(
275271
private void fillHeaderOrFooter(
276272
XWPFTable table,
277273
XWPFTableCell cell,
278-
List<Pair<String, Column<T>>> headers,
274+
List<? extends GridHeaderOrFooter<T>> headers,
279275
boolean createColumns,
280276
String placeHolder) {
281277
boolean[] firstHeader = new boolean[] {true};
@@ -287,7 +283,7 @@ private void fillHeaderOrFooter(
287283
currentCell.getCTTc().setTcPr(cell.getCTTc().getTcPr());
288284
PoiHelper.setWidth(currentCell, "" + Math.round(9638 / exporter.getColumns().size()));
289285
setCellValue(
290-
header.getLeft(),
286+
header.getText(),
291287
currentCell,
292288
placeHolder,
293289
cell.getParagraphs().iterator().next().getCTP().getPPr(),
@@ -299,10 +295,10 @@ private void fillHeaderOrFooter(
299295
.next()
300296
.getCTR()
301297
.getRPr());
302-
setCellAlignment(currentCell, header.getRight().getTextAlign());
298+
setCellAlignment(currentCell, header.getColumn().getTextAlign());
303299
} else {
304-
setCellValue(header.getLeft(), cell, placeHolder);
305-
setCellAlignment(cell, header.getRight().getTextAlign());
300+
setCellValue(header.getText(), cell, placeHolder);
301+
setCellAlignment(cell, header.getColumn().getTextAlign());
306302
PoiHelper.setWidth(cell, "" + Math.round(9638 / exporter.getColumns().size()));
307303
firstHeader[0] = false;
308304
}

src/main/java/com/flowingcode/vaadin/addons/gridexporter/ExcelStreamResourceWriter.java

Lines changed: 10 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,6 @@
4343
import java.util.stream.Stream;
4444
import org.apache.commons.lang3.ArrayUtils;
4545
import org.apache.commons.lang3.StringUtils;
46-
import org.apache.commons.lang3.tuple.Pair;
4746
import org.apache.poi.ss.usermodel.Cell;
4847
import org.apache.poi.ss.usermodel.CellStyle;
4948
import org.apache.poi.ss.usermodel.CellType;
@@ -55,7 +54,6 @@
5554
import org.apache.poi.ss.usermodel.SheetConditionalFormatting;
5655
import org.apache.poi.ss.usermodel.Workbook;
5756
import org.apache.poi.ss.usermodel.WorkbookFactory;
58-
import org.apache.poi.ss.util.CellAddress;
5957
import org.apache.poi.ss.util.CellRangeAddress;
6058
import org.slf4j.Logger;
6159
import org.slf4j.LoggerFactory;
@@ -95,7 +93,7 @@ private Workbook createWorkbook(VaadinSession session) {
9593
}
9694

9795
Cell cell = findCellWithPlaceHolder(sheet, exporter.headersPlaceHolder);
98-
List<Pair<List<String>, Column<T>>> headers = getGridHeaders(grid);
96+
List<GridHeader<T>> headers = getGridHeaders(grid);
9997

10098
fillHeaderOrFooter(sheet, cell, headers, true);
10199
if (exporter.autoMergeTitle && titleCell != null && exporter.getColumns().size()>1) {
@@ -123,7 +121,7 @@ private Workbook createWorkbook(VaadinSession session) {
123121
wb.removeSheetAt(exporter.sheetNumber + 1);
124122

125123
cell = findCellWithPlaceHolder(sheet, exporter.footersPlaceHolder);
126-
List<Pair<String, Column<T>>> footers = getGridFooters(grid);
124+
List<GridFooter<T>> footers = getGridFooters(grid);
127125
if (cell != null) {
128126
fillFooter(sheet, cell, footers, false);
129127
}
@@ -346,7 +344,7 @@ private void buildCell(Object value, Cell cell, Column<T> column, T item) {
346344
String excelFormat = getExcelFormat(column, item, provider);
347345
if (value == null) {
348346
PoiHelper.setBlank(cell);
349-
if(excelFormat != null) {
347+
if(excelFormat != null) {
350348
applyExcelFormat(cell, excelFormat, cellStyles);
351349
}
352350
} else if (value instanceof Number) {
@@ -425,21 +423,19 @@ private Cell findCellWithPlaceHolder(Sheet sheet, String placeholder) {
425423
}
426424

427425
private void fillFooter(Sheet sheet, Cell headersOrFootersCell,
428-
List<Pair<String, Column<T>>> headersOrFooters, boolean isHeader) {
429-
List<Pair<List<String>, Column<T>>> headersOrFootersCellSingleRow = headersOrFooters.stream()
430-
.map(pair -> Pair.of(List.of(pair.getLeft()), pair.getRight())).collect(Collectors.toList());
431-
fillHeaderOrFooter(sheet, headersOrFootersCell, headersOrFootersCellSingleRow, isHeader);
426+
List<GridFooter<T>> headersOrFooters, boolean isHeader) {
427+
fillHeaderOrFooter(sheet, headersOrFootersCell, headersOrFooters, isHeader);
432428
}
433429
private void fillHeaderOrFooter(Sheet sheet, Cell headersOrFootersCell,
434-
List<Pair<List<String>, Column<T>>> headersOrFooters, boolean isHeader) {
430+
List<? extends GridHeaderOrFooter<T>> headersOrFooters, boolean isHeader) {
435431
CellStyle style = headersOrFootersCell.getCellStyle();
436-
432+
437433
int startRow = headersOrFootersCell.getRowIndex();
438434
int currentColumn = headersOrFootersCell.getColumnIndex();
439435
boolean shiftFirstTime = true;
440-
for (Pair<List<String>, Column<T>> headerOrFooter : headersOrFooters) {
441-
List<String> headerOrFooterTexts = headerOrFooter.getLeft();
442-
Column<T> column = headerOrFooter.getRight();
436+
for (GridHeaderOrFooter<T> headerOrFooter : headersOrFooters) {
437+
List<String> headerOrFooterTexts = headerOrFooter.getTexts();
438+
Column<T> column = headerOrFooter.getColumn();
443439
if (!isHeader) {
444440
ComponentUtil.setData(column, COLUMN_CELLSTYLE_MAP, null);
445441
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.flowingcode.vaadin.addons.gridexporter;
2+
3+
import com.vaadin.flow.component.grid.Grid.Column;
4+
import java.util.List;
5+
import lombok.Getter;
6+
import lombok.RequiredArgsConstructor;
7+
8+
@Getter
9+
@RequiredArgsConstructor
10+
final class GridFooter<T> implements GridHeaderOrFooter<T> {
11+
12+
private final String text;
13+
private final Column<T> column;
14+
15+
@Override
16+
public List<String> getTexts() {
17+
return List.of(text);
18+
}
19+
20+
}
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package com.flowingcode.vaadin.addons.gridexporter;
2+
3+
import com.vaadin.flow.component.grid.Grid.Column;
4+
import java.util.List;
5+
import lombok.Getter;
6+
import lombok.RequiredArgsConstructor;
7+
8+
@Getter
9+
@RequiredArgsConstructor
10+
final class GridHeader<T> implements GridHeaderOrFooter<T> {
11+
12+
private final List<String> texts;
13+
private final Column<T> column;
14+
15+
@Override
16+
public String getText() {
17+
return texts.get(0);
18+
}
19+
20+
}
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package com.flowingcode.vaadin.addons.gridexporter;
2+
3+
import com.vaadin.flow.component.grid.Grid.Column;
4+
import java.util.List;
5+
6+
interface GridHeaderOrFooter<T> {
7+
8+
String getText();
9+
10+
List<String> getTexts();
11+
12+
Column<T> getColumn();
13+
14+
}

0 commit comments

Comments
 (0)