Skip to content

Commit 97f4e8a

Browse files
weihubeatsalaahong
andauthored
refactor: FastExcelFactory (#454)
* reduce duplicate code * add test * add test --------- Co-authored-by: ian zhang <[email protected]>
1 parent 1f9b847 commit 97f4e8a

File tree

7 files changed

+319
-80
lines changed

7 files changed

+319
-80
lines changed

fastexcel/src/main/java/cn/idev/excel/FastExcelFactory.java

Lines changed: 19 additions & 80 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,6 @@
1212

1313
/**
1414
* Reader and writer factory class
15-
*
1615
*/
1716
public class FastExcelFactory {
1817

@@ -43,12 +42,7 @@ public static ExcelWriterBuilder write(File file) {
4342
* @return Excel writer builder
4443
*/
4544
public static ExcelWriterBuilder write(File file, Class head) {
46-
ExcelWriterBuilder excelWriterBuilder = new ExcelWriterBuilder();
47-
excelWriterBuilder.file(file);
48-
if (head != null) {
49-
excelWriterBuilder.head(head);
50-
}
51-
return excelWriterBuilder;
45+
return new ExcelWriterBuilder().file(file).headIfNotNull(head);
5246
}
5347

5448
/**
@@ -69,12 +63,7 @@ public static ExcelWriterBuilder write(String pathName) {
6963
* @return Excel writer builder
7064
*/
7165
public static ExcelWriterBuilder write(String pathName, Class head) {
72-
ExcelWriterBuilder excelWriterBuilder = new ExcelWriterBuilder();
73-
excelWriterBuilder.file(pathName);
74-
if (head != null) {
75-
excelWriterBuilder.head(head);
76-
}
77-
return excelWriterBuilder;
66+
return new ExcelWriterBuilder().file(pathName).headIfNotNull(head);
7867
}
7968

8069
/**
@@ -95,12 +84,7 @@ public static ExcelWriterBuilder write(OutputStream outputStream) {
9584
* @return Excel writer builder
9685
*/
9786
public static ExcelWriterBuilder write(OutputStream outputStream, Class head) {
98-
ExcelWriterBuilder excelWriterBuilder = new ExcelWriterBuilder();
99-
excelWriterBuilder.file(outputStream);
100-
if (head != null) {
101-
excelWriterBuilder.head(head);
102-
}
103-
return excelWriterBuilder;
87+
return new ExcelWriterBuilder().file(outputStream).headIfNotNull(head);
10488
}
10589

10690
/**
@@ -140,14 +124,7 @@ public static ExcelWriterSheetBuilder writerSheet(String sheetName) {
140124
* @return Excel sheet writer builder.
141125
*/
142126
public static ExcelWriterSheetBuilder writerSheet(Integer sheetNo, String sheetName) {
143-
ExcelWriterSheetBuilder excelWriterSheetBuilder = new ExcelWriterSheetBuilder();
144-
if (sheetNo != null) {
145-
excelWriterSheetBuilder.sheetNo(sheetNo);
146-
}
147-
if (sheetName != null) {
148-
excelWriterSheetBuilder.sheetName(sheetName);
149-
}
150-
return excelWriterSheetBuilder;
127+
return new ExcelWriterSheetBuilder().sheetNoIfNotNull(sheetNo).sheetNameIfNotNull(sheetName);
151128
}
152129

153130
/**
@@ -166,11 +143,7 @@ public static ExcelWriterTableBuilder writerTable() {
166143
* @return Excel table writer builder.
167144
*/
168145
public static ExcelWriterTableBuilder writerTable(Integer tableNo) {
169-
ExcelWriterTableBuilder excelWriterTableBuilder = new ExcelWriterTableBuilder();
170-
if (tableNo != null) {
171-
excelWriterTableBuilder.tableNo(tableNo);
172-
}
173-
return excelWriterTableBuilder;
146+
return new ExcelWriterTableBuilder().tableNoIfNotNull(tableNo);
174147
}
175148

176149
/**
@@ -212,15 +185,7 @@ public static ExcelReaderBuilder read(File file, ReadListener readListener) {
212185
* @return Excel reader builder.
213186
*/
214187
public static ExcelReaderBuilder read(File file, Class head, ReadListener readListener) {
215-
ExcelReaderBuilder excelReaderBuilder = new ExcelReaderBuilder();
216-
excelReaderBuilder.file(file);
217-
if (head != null) {
218-
excelReaderBuilder.head(head);
219-
}
220-
if (readListener != null) {
221-
excelReaderBuilder.registerReadListener(readListener);
222-
}
223-
return excelReaderBuilder;
188+
return new ExcelReaderBuilder().file(file).headIfNotNull(head).registerReadListenerIfNotNull(readListener);
224189
}
225190

226191
/**
@@ -253,15 +218,7 @@ public static ExcelReaderBuilder read(String pathName, ReadListener readListener
253218
* @return Excel reader builder.
254219
*/
255220
public static ExcelReaderBuilder read(String pathName, Class head, ReadListener readListener) {
256-
ExcelReaderBuilder excelReaderBuilder = new ExcelReaderBuilder();
257-
excelReaderBuilder.file(pathName);
258-
if (head != null) {
259-
excelReaderBuilder.head(head);
260-
}
261-
if (readListener != null) {
262-
excelReaderBuilder.registerReadListener(readListener);
263-
}
264-
return excelReaderBuilder;
221+
return new ExcelReaderBuilder().file(pathName).headIfNotNull(head).registerReadListenerIfNotNull(readListener);
265222
}
266223

267224
/**
@@ -294,15 +251,10 @@ public static ExcelReaderBuilder read(InputStream inputStream, ReadListener read
294251
* @return Excel reader builder.
295252
*/
296253
public static ExcelReaderBuilder read(InputStream inputStream, Class head, ReadListener readListener) {
297-
ExcelReaderBuilder excelReaderBuilder = new ExcelReaderBuilder();
298-
excelReaderBuilder.file(inputStream);
299-
if (head != null) {
300-
excelReaderBuilder.head(head);
301-
}
302-
if (readListener != null) {
303-
excelReaderBuilder.registerReadListener(readListener);
304-
}
305-
return excelReaderBuilder;
254+
return new ExcelReaderBuilder()
255+
.file(inputStream)
256+
.headIfNotNull(head)
257+
.registerReadListenerIfNotNull(readListener);
306258
}
307259

308260
/**
@@ -342,34 +294,21 @@ public static ExcelReaderSheetBuilder readSheet(String sheetName) {
342294
* @return Excel sheet reader builder.
343295
*/
344296
public static ExcelReaderSheetBuilder readSheet(Integer sheetNo, String sheetName) {
345-
ExcelReaderSheetBuilder excelReaderSheetBuilder = new ExcelReaderSheetBuilder();
346-
if (sheetNo != null) {
347-
excelReaderSheetBuilder.sheetNo(sheetNo);
348-
}
349-
if (sheetName != null) {
350-
excelReaderSheetBuilder.sheetName(sheetName);
351-
}
352-
return excelReaderSheetBuilder;
297+
return readSheet(sheetNo, sheetName, null);
353298
}
354299

355300
/**
356301
* Build excel the 'readSheet'
357-
* @param sheetNo Index of sheet,0 base.
302+
*
303+
* @param sheetNo Index of sheet,0 base.
358304
* @param sheetName The name of sheet.
359-
* @param numRows The number of rows to read, the default is all, start with 0.
305+
* @param numRows The number of rows to read, the default is all, start with 0.
360306
* @return
361307
*/
362308
public static ExcelReaderSheetBuilder readSheet(Integer sheetNo, String sheetName, Integer numRows) {
363-
ExcelReaderSheetBuilder excelReaderSheetBuilder = new ExcelReaderSheetBuilder();
364-
if (sheetNo != null) {
365-
excelReaderSheetBuilder.sheetNo(sheetNo);
366-
}
367-
if (sheetName != null) {
368-
excelReaderSheetBuilder.sheetName(sheetName);
369-
}
370-
if (numRows != null) {
371-
excelReaderSheetBuilder.numRows(numRows);
372-
}
373-
return excelReaderSheetBuilder;
309+
return new ExcelReaderSheetBuilder()
310+
.sheetNoIfNotNull(sheetNo)
311+
.sheetNameIfNotNull(sheetName)
312+
.numRowsIfNotNull(numRows);
374313
}
375314
}

fastexcel/src/main/java/cn/idev/excel/metadata/AbstractParameterBuilder.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import cn.idev.excel.util.ListUtils;
66
import java.util.List;
77
import java.util.Locale;
8+
import java.util.Objects;
89

910
/**
1011
* ExcelBuilder
@@ -34,6 +35,13 @@ public T head(Class<?> clazz) {
3435
return self();
3536
}
3637

38+
public T headIfNotNull(Class<?> clazz) {
39+
if (Objects.nonNull(clazz)) {
40+
parameter().setClazz(clazz);
41+
}
42+
return self();
43+
}
44+
3745
/**
3846
* Custom type conversions override the default.
3947
*

fastexcel/src/main/java/cn/idev/excel/read/builder/AbstractExcelReaderParameterBuilder.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@
44
import cn.idev.excel.read.listener.ReadListener;
55
import cn.idev.excel.read.metadata.ReadBasicParameter;
66
import cn.idev.excel.util.ListUtils;
7+
import java.util.Objects;
78

89
/**
910
* Build ExcelBuilder
@@ -57,4 +58,14 @@ public T registerReadListener(ReadListener<?> readListener) {
5758
parameter().getCustomReadListenerList().add(readListener);
5859
return self();
5960
}
61+
62+
public T registerReadListenerIfNotNull(ReadListener<?> readListener) {
63+
if (Objects.nonNull(readListener)) {
64+
if (parameter().getCustomReadListenerList() == null) {
65+
parameter().setCustomReadListenerList(ListUtils.newArrayList());
66+
}
67+
parameter().getCustomReadListenerList().add(readListener);
68+
}
69+
return self();
70+
}
6071
}

fastexcel/src/main/java/cn/idev/excel/read/builder/ExcelReaderSheetBuilder.java

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
import cn.idev.excel.exception.ExcelGenerateException;
77
import cn.idev.excel.read.metadata.ReadSheet;
88
import java.util.List;
9+
import java.util.Objects;
910

1011
/**
1112
* Build sheet
@@ -39,6 +40,13 @@ public ExcelReaderSheetBuilder sheetNo(Integer sheetNo) {
3940
return this;
4041
}
4142

43+
public ExcelReaderSheetBuilder sheetNoIfNotNull(Integer sheetNo) {
44+
if (Objects.nonNull(sheetNo)) {
45+
readSheet.setSheetNo(sheetNo);
46+
}
47+
return this;
48+
}
49+
4250
/**
4351
* sheet name
4452
*
@@ -50,6 +58,13 @@ public ExcelReaderSheetBuilder sheetName(String sheetName) {
5058
return this;
5159
}
5260

61+
public ExcelReaderSheetBuilder sheetNameIfNotNull(String sheetName) {
62+
if (Objects.nonNull(sheetName)) {
63+
readSheet.setSheetName(sheetName);
64+
}
65+
return this;
66+
}
67+
5368
/**
5469
* numRows
5570
*
@@ -61,6 +76,13 @@ public ExcelReaderSheetBuilder numRows(Integer numRows) {
6176
return this;
6277
}
6378

79+
public ExcelReaderSheetBuilder numRowsIfNotNull(Integer numRows) {
80+
if (Objects.nonNull(numRows)) {
81+
readSheet.setNumRows(numRows);
82+
}
83+
return this;
84+
}
85+
6486
public ReadSheet build() {
6587
return readSheet;
6688
}

fastexcel/src/main/java/cn/idev/excel/write/builder/ExcelWriterSheetBuilder.java

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import cn.idev.excel.write.metadata.WriteSheet;
66
import cn.idev.excel.write.metadata.fill.FillConfig;
77
import java.util.Collection;
8+
import java.util.Objects;
89
import java.util.function.Supplier;
910

1011
/**
@@ -39,6 +40,13 @@ public ExcelWriterSheetBuilder sheetNo(Integer sheetNo) {
3940
return this;
4041
}
4142

43+
public ExcelWriterSheetBuilder sheetNoIfNotNull(Integer sheetNo) {
44+
if (Objects.nonNull(sheetNo)) {
45+
writeSheet.setSheetNo(sheetNo);
46+
}
47+
return this;
48+
}
49+
4250
/**
4351
* sheet name
4452
*
@@ -50,6 +58,13 @@ public ExcelWriterSheetBuilder sheetName(String sheetName) {
5058
return this;
5159
}
5260

61+
public ExcelWriterSheetBuilder sheetNameIfNotNull(String sheetName) {
62+
if (Objects.nonNull(sheetName)) {
63+
writeSheet.setSheetName(sheetName);
64+
}
65+
return this;
66+
}
67+
5368
public WriteSheet build() {
5469
return writeSheet;
5570
}

fastexcel/src/main/java/cn/idev/excel/write/builder/ExcelWriterTableBuilder.java

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import cn.idev.excel.write.metadata.WriteSheet;
66
import cn.idev.excel.write.metadata.WriteTable;
77
import java.util.Collection;
8+
import java.util.Objects;
89
import java.util.function.Supplier;
910

1011
/**
@@ -43,6 +44,13 @@ public ExcelWriterTableBuilder tableNo(Integer tableNo) {
4344
return this;
4445
}
4546

47+
public ExcelWriterTableBuilder tableNoIfNotNull(Integer tableNo) {
48+
if (Objects.nonNull(tableNo)) {
49+
writeTable.setTableNo(tableNo);
50+
}
51+
return this;
52+
}
53+
4654
public WriteTable build() {
4755
return writeTable;
4856
}

0 commit comments

Comments
 (0)