This is an automated email from the ASF dual-hosted git repository.
bengbengbalabalabeng pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/fesod.git
The following commit(s) were added to refs/heads/main by this push:
new 0acb6e0e fix: reset cached batch in PageReadListener between sheets to
avoid duplicate rows (#961)
0acb6e0e is described below
commit 0acb6e0e7fb6ac91d6d9fff52f9d9b5471fcd72a
Author: Nikita Kuprins <[email protected]>
AuthorDate: Sun Jul 26 10:43:41 2026 +0300
fix: reset cached batch in PageReadListener between sheets to avoid
duplicate rows (#961)
Co-authored-by: Bengbengbalabalabeng
<[email protected]>
---
.../sheet/read/listener/PageReadListener.java | 1 +
.../apache/fesod/sheet/core/SimpleDataTest.java | 33 ++++++++++++++++++++++
2 files changed, 34 insertions(+)
diff --git
a/fesod-sheet/src/main/java/org/apache/fesod/sheet/read/listener/PageReadListener.java
b/fesod-sheet/src/main/java/org/apache/fesod/sheet/read/listener/PageReadListener.java
index b2f21eaa..23f78d2b 100644
---
a/fesod-sheet/src/main/java/org/apache/fesod/sheet/read/listener/PageReadListener.java
+++
b/fesod-sheet/src/main/java/org/apache/fesod/sheet/read/listener/PageReadListener.java
@@ -77,6 +77,7 @@ public class PageReadListener<T> implements ReadListener<T> {
public void doAfterAllAnalysed(AnalysisContext context) {
if (CollectionUtils.isNotEmpty(cachedDataList)) {
consumer.accept(cachedDataList);
+ cachedDataList =
ListUtils.newArrayListWithExpectedSize(batchCount);
}
}
}
diff --git
a/fesod-sheet/src/test/java/org/apache/fesod/sheet/core/SimpleDataTest.java
b/fesod-sheet/src/test/java/org/apache/fesod/sheet/core/SimpleDataTest.java
index 062d817a..c2933ddf 100644
--- a/fesod-sheet/src/test/java/org/apache/fesod/sheet/core/SimpleDataTest.java
+++ b/fesod-sheet/src/test/java/org/apache/fesod/sheet/core/SimpleDataTest.java
@@ -26,8 +26,12 @@
package org.apache.fesod.sheet.core;
import java.io.File;
+import java.util.ArrayList;
+import java.util.Arrays;
import java.util.List;
import java.util.Map;
+import java.util.stream.Collectors;
+import org.apache.fesod.sheet.ExcelWriter;
import org.apache.fesod.sheet.FesodSheet;
import org.apache.fesod.sheet.read.listener.PageReadListener;
import org.apache.fesod.sheet.testkit.Tags;
@@ -114,4 +118,33 @@ public class SimpleDataTest extends AbstractExcelTest {
.sheet()
.doRead();
}
+
+ @Test
+ void pageReadListenerMultipleSheets07() throws Exception {
+ File file = createTempFile(ExcelFormat.XLSX);
+ try (ExcelWriter excelWriter = FesodSheet.write(file,
SimpleData.class).build()) {
+ excelWriter.write(
+ TestDataBuilder.simpleData(3, "First"),
+ FesodSheet.writerSheet(0, "sheet0").build());
+ excelWriter.write(
+ TestDataBuilder.simpleData(4, "Second"),
+ FesodSheet.writerSheet(1, "sheet1").build());
+ }
+
+ List<SimpleData> allData = new ArrayList<>();
+ FesodSheet.read(file, SimpleData.class, new
PageReadListener<SimpleData>(allData::addAll, 5))
+ .doReadAll();
+
+ // Each row must be delivered exactly once, even when a sheet ends
with a partially filled batch
+ Assertions.assertEquals(
+ Arrays.asList(
+ "FirstName0",
+ "FirstName1",
+ "FirstName2",
+ "SecondName0",
+ "SecondName1",
+ "SecondName2",
+ "SecondName3"),
+
allData.stream().map(SimpleData::getName).collect(Collectors.toList()));
+ }
}
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]