From f7cbf9d1c240f46ed767642bc41f9e58dc0fbc8f Mon Sep 17 00:00:00 2001 From: Darin Kelkhoff Date: Tue, 7 Jan 2025 11:30:19 -0600 Subject: [PATCH] CE-1955 Make sure to skip blank rows (e.g., no columns had a value) --- .../bulk/insert/mapping/FlatRowsToRecord.java | 14 ++++++++++++-- .../bulk/insert/mapping/FlatRowsToRecordTest.java | 3 ++- 2 files changed, 14 insertions(+), 3 deletions(-) diff --git a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/bulk/insert/mapping/FlatRowsToRecord.java b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/bulk/insert/mapping/FlatRowsToRecord.java index 310fd8db..1da11588 100644 --- a/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/bulk/insert/mapping/FlatRowsToRecord.java +++ b/qqq-backend-core/src/main/java/com/kingsrook/qqq/backend/core/processes/implementations/bulk/insert/mapping/FlatRowsToRecord.java @@ -62,12 +62,22 @@ public class FlatRowsToRecord implements RowsToRecordInterface QRecord record = new QRecord(); BulkLoadRecordUtils.addBackendDetailsAboutFileRows(record, row); + boolean anyValuesFromFileUsed = false; for(QFieldMetaData field : table.getFields().values()) { - setValueOrDefault(record, field, null, mapping, row, fieldIndexes.get(field.getName())); + if(setValueOrDefault(record, field, null, mapping, row, fieldIndexes.get(field.getName()))) + { + anyValuesFromFileUsed = true; + } } - rs.add(record); + ////////////////////////////////////////////////////////////////////////// + // avoid building empty records (e.g., "past the end" of an Excel file) // + ////////////////////////////////////////////////////////////////////////// + if(anyValuesFromFileUsed) + { + rs.add(record); + } } BulkLoadValueMapper.valueMapping(rs, mapping, table); diff --git a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/bulk/insert/mapping/FlatRowsToRecordTest.java b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/bulk/insert/mapping/FlatRowsToRecordTest.java index 5237fcf5..ab9486a9 100644 --- a/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/bulk/insert/mapping/FlatRowsToRecordTest.java +++ b/qqq-backend-core/src/test/java/com/kingsrook/qqq/backend/core/processes/implementations/bulk/insert/mapping/FlatRowsToRecordTest.java @@ -56,7 +56,8 @@ class FlatRowsToRecordTest extends BaseTest new Serializable[] { 1, "Homer", "Simpson", true, "three fifty" }, new Serializable[] { 2, "Marge", "Simpson", false, "" }, new Serializable[] { 3, "Bart", "Simpson", "A", "99.95" }, - new Serializable[] { 4, "Ned", "Flanders", 3.1, "one$" } + new Serializable[] { 4, "Ned", "Flanders", 3.1, "one$" }, + new Serializable[] { "", "", "", "", "" } // all blank row (we can get these at the bottoms of files) - make sure it doesn't become a record. )); BulkLoadFileRow header = fileToRows.next();