Skip to content

Commit f6d9b85

Browse files
javier-godoymlopezFC
authored andcommitted
refactor: refactor package protected attribute "grid"
Close #145
1 parent 86fdc23 commit f6d9b85

File tree

5 files changed

+48
-29
lines changed

5 files changed

+48
-29
lines changed

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

Lines changed: 11 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -82,12 +82,12 @@ protected boolean isExportable(Grid.Column<T> column) {
8282

8383
@SuppressWarnings({"unchecked", "rawtypes"})
8484
protected Stream<T> getDataStream(Query newQuery) {
85-
Stream<T> stream = exporter.grid.getDataProvider().fetch(newQuery);
85+
Stream<T> stream = exporter.getGrid().getDataProvider().fetch(newQuery);
8686
if (stream.isParallel()) {
8787
LoggerFactory.getLogger(DataCommunicator.class)
8888
.debug(
8989
"Data provider {} has returned " + "parallel stream on 'fetch' call",
90-
exporter.grid.getDataProvider().getClass());
90+
exporter.getGrid().getDataProvider().getClass());
9191
stream = stream.collect(Collectors.toList()).stream();
9292
assert !stream.isParallel();
9393
}
@@ -142,31 +142,33 @@ private String renderCellTextContent(Grid<T> grid, Column<T> column, String colu
142142
}
143143

144144
protected Stream<T> obtainDataStream(DataProvider<T, ?> dataProvider) {
145+
Grid<T> grid = exporter.getGrid();
146+
145147
Object filter = null;
146148
try {
147149
Method method = DataCommunicator.class.getDeclaredMethod("getFilter");
148150
method.setAccessible(true);
149-
filter = method.invoke(exporter.grid.getDataCommunicator());
151+
filter = method.invoke(grid.getDataCommunicator());
150152
} catch (Exception e) {
151153
LOGGER.error("Unable to get filter from DataCommunicator", e);
152154
}
153155

154156
Stream<T> dataStream;
155157

156158
// special handling for hierarchical data provider
157-
if (exporter.grid.getDataProvider() instanceof HierarchicalDataProvider) {
158-
return obtainFlattenedHierarchicalDataStream(exporter.grid);
159+
if (grid.getDataProvider() instanceof HierarchicalDataProvider) {
160+
return obtainFlattenedHierarchicalDataStream(grid);
159161
} else if (dataProvider instanceof AbstractBackEndDataProvider) {
160-
GridLazyDataView<T> gridLazyDataView = exporter.grid.getLazyDataView();
162+
GridLazyDataView<T> gridLazyDataView = grid.getLazyDataView();
161163
dataStream = gridLazyDataView.getItems();
162164
} else {
163165
@SuppressWarnings({"rawtypes", "unchecked"})
164166
Query<T, ?> streamQuery =
165167
new Query<>(
166168
0,
167-
exporter.grid.getDataProvider().size(new Query(filter)),
168-
exporter.grid.getDataCommunicator().getBackEndSorting(),
169-
exporter.grid.getDataCommunicator().getInMemorySorting(),
169+
grid.getDataProvider().size(new Query(filter)),
170+
grid.getDataCommunicator().getBackEndSorting(),
171+
grid.getDataCommunicator().getInMemorySorting(),
170172
filter);
171173
dataStream = getDataStream(streamQuery);
172174
}

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

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
package com.flowingcode.vaadin.addons.gridexporter;
2222

2323
import com.opencsv.CSVWriter;
24+
import com.vaadin.flow.component.grid.Grid;
2425
import com.vaadin.flow.data.binder.BeanPropertySet;
2526
import com.vaadin.flow.data.binder.PropertySet;
2627
import com.vaadin.flow.server.VaadinSession;
@@ -57,16 +58,17 @@ public void accept(OutputStream out, VaadinSession session) throws IOException {
5758

5859
session.lock();
5960
try {
61+
Grid<T> grid = exporter.getGrid();
6062
exporter.setColumns(
61-
exporter.grid.getColumns().stream()
63+
grid.getColumns().stream()
6264
.filter(this::isExportable)
6365
.collect(Collectors.toList()));
6466

65-
headers = getGridHeaders(exporter.grid).stream().map(Pair::getLeft).toArray(String[]::new);
66-
data = obtainDataStream(exporter.grid.getDataProvider())
67+
headers = getGridHeaders(grid).stream().map(Pair::getLeft).toArray(String[]::new);
68+
data = obtainDataStream(grid.getDataProvider())
6769
.map(this::buildRow)
6870
.collect(Collectors.toList());
69-
footers = getGridFooters(exporter.grid).stream()
71+
footers = getGridFooters(grid).stream()
7072
.filter(pair -> StringUtils.isNotBlank(pair.getKey()))
7173
.map(Pair::getLeft)
7274
.toArray(String[]::new);

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

Lines changed: 19 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -21,6 +21,7 @@
2121
package com.flowingcode.vaadin.addons.gridexporter;
2222

2323
import com.vaadin.flow.component.grid.ColumnTextAlign;
24+
import com.vaadin.flow.component.grid.Grid;
2425
import com.vaadin.flow.component.grid.Grid.Column;
2526
import com.vaadin.flow.data.binder.BeanPropertySet;
2627
import com.vaadin.flow.data.binder.PropertySet;
@@ -80,8 +81,9 @@ protected XWPFDocument createDoc(VaadinSession session) throws IOException {
8081
}
8182

8283
private XWPFDocument createDoc() throws IOException {
84+
Grid<T> grid = exporter.getGrid();
8385
exporter.setColumns(
84-
exporter.grid.getColumns().stream()
86+
grid.getColumns().stream()
8587
.filter(this::isExportable)
8688
.collect(Collectors.toList()));
8789

@@ -129,17 +131,17 @@ private XWPFDocument createDoc() throws IOException {
129131
cctblgridcol, "" + Math.round(9638 / exporter.getColumns().size()));
130132
});
131133

132-
List<Pair<String, Column<T>>> headers = getGridHeaders(exporter.grid);
134+
List<Pair<String, Column<T>>> headers = getGridHeaders(grid);
133135
XWPFTableCell cell = findCellWithPlaceHolder(table, exporter.headersPlaceHolder);
134136
if (cell != null) {
135137
fillHeaderOrFooter(table, cell, headers, true, exporter.headersPlaceHolder);
136138
}
137139

138140
cell = findCellWithPlaceHolder(table, exporter.dataPlaceHolder);
139-
fillData(table, cell, exporter.grid.getDataProvider());
141+
fillData(table, cell, grid.getDataProvider());
140142

141143
cell = findCellWithPlaceHolder(table, exporter.footersPlaceHolder);
142-
List<Pair<String, Column<T>>> footers = getGridFooters(exporter.grid);
144+
List<Pair<String, Column<T>>> footers = getGridFooters(grid);
143145
if (cell != null) {
144146
fillHeaderOrFooter(table, cell, footers, false, exporter.footersPlaceHolder);
145147
}
@@ -188,7 +190,9 @@ private void buildRow(
188190
if (exporter.propertySet == null) {
189191
exporter.propertySet = (PropertySet<T>) BeanPropertySet.get(item.getClass());
190192
}
191-
if (exporter.getColumns().isEmpty()) throw new IllegalStateException("Grid has no columns");
193+
if (exporter.getColumns().isEmpty()) {
194+
throw new IllegalStateException("Grid has no columns");
195+
}
192196

193197
int[] currentColumn = new int[1];
194198
currentColumn[0] = row.getTableCells().indexOf(startingCell);
@@ -200,7 +204,9 @@ private void buildRow(
200204
XWPFTableCell currentCell = startingCell;
201205
if (row.getTableCells().indexOf(startingCell) < currentColumn[0]) {
202206
currentCell = startingCell.getTableRow().getCell(currentColumn[0]);
203-
if (currentCell == null) currentCell = startingCell.getTableRow().createCell();
207+
if (currentCell == null) {
208+
currentCell = startingCell.getTableRow().createCell();
209+
}
204210
}
205211
PoiHelper.setWidth(currentCell, "" + Math.round(9638 / exporter.getColumns().size()));
206212
currentCell.getCTTc().setTcPr(tcpr);
@@ -226,12 +232,12 @@ private void buildCell(Object value, XWPFTableCell cell, CTPPr ctpPr, CTRPr ctrP
226232
if (value == null) {
227233
setCellValue("", cell, exporter.dataPlaceHolder, ctpPr, ctrPr);
228234
} else if (value instanceof Boolean) {
229-
setCellValue("" + (Boolean) value, cell, exporter.dataPlaceHolder, ctpPr, ctrPr);
235+
setCellValue("" + value, cell, exporter.dataPlaceHolder, ctpPr, ctrPr);
230236
} else if (value instanceof Calendar) {
231237
Calendar calendar = (Calendar) value;
232238
setCellValue("" + calendar.getTime(), cell, exporter.dataPlaceHolder, ctpPr, ctrPr);
233239
} else if (value instanceof Double) {
234-
setCellValue("" + (Double) value, cell, exporter.dataPlaceHolder, ctpPr, ctrPr);
240+
setCellValue("" + value, cell, exporter.dataPlaceHolder, ctpPr, ctrPr);
235241
} else {
236242
setCellValue("" + value.toString(), cell, exporter.dataPlaceHolder, ctpPr, ctrPr);
237243
}
@@ -350,9 +356,12 @@ private XWPFTable findTable(XWPFDocument doc) {
350356
.forEach(
351357
row -> {
352358
XWPFTableCell cell = row.getCell(0);
353-
if (cell.getText().equals(exporter.headersPlaceHolder))
359+
if (cell.getText().equals(exporter.headersPlaceHolder)) {
354360
foundHeaders[0] = true;
355-
if (cell.getText().equals(exporter.dataPlaceHolder)) foundData[0] = true;
361+
}
362+
if (cell.getText().equals(exporter.dataPlaceHolder)) {
363+
foundData[0] = true;
364+
}
356365
});
357366
if (foundHeaders[0] && foundData[0]) {
358367
result[0] = table;

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

Lines changed: 9 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@
5454
import org.slf4j.LoggerFactory;
5555
import com.vaadin.flow.component.ComponentUtil;
5656
import com.vaadin.flow.component.grid.ColumnTextAlign;
57+
import com.vaadin.flow.component.grid.Grid;
5758
import com.vaadin.flow.component.grid.Grid.Column;
5859
import com.vaadin.flow.data.binder.BeanPropertySet;
5960
import com.vaadin.flow.data.binder.PropertySet;
@@ -83,7 +84,8 @@ public void accept(OutputStream out, VaadinSession session) throws IOException {
8384
private Workbook createWorkbook(VaadinSession session) {
8485
session.lock();
8586
try {
86-
exporter.setColumns(exporter.grid.getColumns().stream().filter(this::isExportable)
87+
Grid<T> grid = exporter.getGrid();
88+
exporter.setColumns(grid.getColumns().stream().filter(this::isExportable)
8789
.peek(col -> ComponentUtil.setData(col, COLUMN_CELLSTYLE_MAP, null))
8890
.collect(Collectors.toList()));
8991
Workbook wb = getBaseTemplateWorkbook();
@@ -95,7 +97,7 @@ private Workbook createWorkbook(VaadinSession session) {
9597
}
9698

9799
Cell cell = findCellWithPlaceHolder(sheet, exporter.headersPlaceHolder);
98-
List<Pair<String, Column<T>>> headers = getGridHeaders(exporter.grid);
100+
List<Pair<String, Column<T>>> headers = getGridHeaders(grid);
99101

100102
fillHeaderOrFooter(sheet, cell, headers, true);
101103
if (exporter.autoMergeTitle && titleCell != null && exporter.getColumns().size()>1) {
@@ -114,7 +116,7 @@ private Workbook createWorkbook(VaadinSession session) {
114116
Sheet tempSheet = wb.cloneSheet(exporter.sheetNumber);
115117

116118
int lastRow =
117-
fillData(sheet, cell, exporter.grid.getDataProvider(), dataRange, titleCell != null);
119+
fillData(sheet, cell, grid.getDataProvider(), dataRange, titleCell != null);
118120

119121
applyConditionalFormattings(sheet, dataRange);
120122

@@ -123,7 +125,7 @@ private Workbook createWorkbook(VaadinSession session) {
123125
wb.removeSheetAt(exporter.sheetNumber + 1);
124126

125127
cell = findCellWithPlaceHolder(sheet, exporter.footersPlaceHolder);
126-
List<Pair<String, Column<T>>> footers = getGridFooters(exporter.grid);
128+
List<Pair<String, Column<T>>> footers = getGridFooters(grid);
127129
if (cell != null) {
128130
fillHeaderOrFooter(sheet, cell, footers, false);
129131
}
@@ -240,7 +242,9 @@ private void buildRow(T item, Sheet sheet, Cell startingCell) {
240242
if (exporter.propertySet == null) {
241243
exporter.propertySet = (PropertySet<T>) BeanPropertySet.get(item.getClass());
242244
}
243-
if (exporter.getColumns().isEmpty()) throw new IllegalStateException("Grid has no columns");
245+
if (exporter.getColumns().isEmpty()) {
246+
throw new IllegalStateException("Grid has no columns");
247+
}
244248

245249
int[] currentColumn = new int[1];
246250
currentColumn[0] = startingCell.getColumnIndex();

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

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -59,6 +59,7 @@
5959
import java.util.concurrent.TimeUnit;
6060
import java.util.stream.Collectors;
6161
import java.util.stream.Stream;
62+
import lombok.Getter;
6263
import org.slf4j.Logger;
6364
import org.slf4j.LoggerFactory;
6465

@@ -100,7 +101,8 @@ public class GridExporter<T> implements Serializable {
100101
static final String COLUMN_FOOTER = "column-footer";
101102
static final String COLUMN_POSITION = "column-position";
102103

103-
Grid<T> grid;
104+
@Getter
105+
private Grid<T> grid;
104106

105107
String titlePlaceHolder = "${title}";
106108
String headersPlaceHolder = "${headers}";

0 commit comments

Comments
 (0)