This is an automated email from the ASF dual-hosted git repository.
exceptionfactory pushed a commit to branch main
in repository https://gitbox.apache.org/repos/asf/nifi.git
The following commit(s) were added to refs/heads/main by this push:
new d46aa89788 NIFI-8005 Added warning message for Excel sheets not found
d46aa89788 is described below
commit d46aa89788266411c84e260b46e1820c65e4a965
Author: dan-s1 <[email protected]>
AuthorDate: Fri Jan 27 14:48:14 2023 +0000
NIFI-8005 Added warning message for Excel sheets not found
This closes #6897
Signed-off-by: David Handermann <[email protected]>
---
.../processors/poi/ConvertExcelToCSVProcessor.java | 21 +++++++++++++++++----
.../poi/ConvertExcelToCSVProcessorTest.java | 2 ++
2 files changed, 19 insertions(+), 4 deletions(-)
diff --git
a/nifi-nar-bundles/nifi-poi-bundle/nifi-poi-processors/src/main/java/org/apache/nifi/processors/poi/ConvertExcelToCSVProcessor.java
b/nifi-nar-bundles/nifi-poi-bundle/nifi-poi-processors/src/main/java/org/apache/nifi/processors/poi/ConvertExcelToCSVProcessor.java
index 9e9183f444..32a4d11a65 100644
---
a/nifi-nar-bundles/nifi-poi-bundle/nifi-poi-processors/src/main/java/org/apache/nifi/processors/poi/ConvertExcelToCSVProcessor.java
+++
b/nifi-nar-bundles/nifi-poi-bundle/nifi-poi-processors/src/main/java/org/apache/nifi/processors/poi/ConvertExcelToCSVProcessor.java
@@ -23,10 +23,13 @@ import java.io.OutputStreamWriter;
import java.io.PrintStream;
import java.nio.charset.StandardCharsets;
import java.util.ArrayList;
+import java.util.Arrays;
import java.util.Collections;
import java.util.HashSet;
import java.util.List;
+import java.util.Map;
import java.util.Set;
+import java.util.stream.Collectors;
import org.apache.commons.csv.CSVFormat;
import org.apache.commons.csv.CSVPrinter;
@@ -96,7 +99,7 @@ public class ConvertExcelToCSVProcessor
.displayName("Sheets to Extract")
.description("Comma separated list of Excel document sheet names
that should be extracted from the excel document. If this property" +
" is left blank then all of the sheets will be extracted
from the Excel document. The list of names is case in-sensitive. Any sheets not
" +
- "specified in this value will be ignored.")
+ "specified in this value will be ignored. A bulletin will
be generated if a specified sheet(s) are not found.")
.required(false)
.expressionLanguageSupported(ExpressionLanguageScope.FLOWFILE_ATTRIBUTES)
.addValidator(StandardValidators.NON_EMPTY_VALIDATOR)
@@ -240,25 +243,35 @@ public class ConvertExcelToCSVProcessor
.split(desiredSheetsDelimited,
DESIRED_SHEETS_DELIMITER);
if (desiredSheets != null) {
+ Map<String, Boolean> sheetsFound =
Arrays.stream(desiredSheets)
+ .collect(Collectors.toMap(key -> key,
value -> Boolean.FALSE));
while (iter.hasNext()) {
InputStream sheet = iter.next();
String sheetName = iter.getSheetName();
- for (int i = 0; i < desiredSheets.length;
i++) {
+ for (String desiredSheet : desiredSheets) {
//If the sheetName is a desired one
parse it
- if
(sheetName.equalsIgnoreCase(desiredSheets[i])) {
+ if
(sheetName.equalsIgnoreCase(desiredSheet)) {
ExcelSheetReadConfig readConfig =
new ExcelSheetReadConfig(columnsToSkip, firstRow, sheetName, formatValues, sst,
styles);
handleExcelSheet(session,
flowFile, sheet, readConfig, csvFormat);
+ sheetsFound.put(desiredSheet,
Boolean.TRUE);
break;
}
}
}
+ String sheetsNotFound =
sheetsFound.entrySet().stream()
+ .filter(entry -> !entry.getValue())
+ .map(Map.Entry::getKey)
+ .collect(Collectors.joining(","));
+ if (!sheetsNotFound.isEmpty()) {
+ getLogger().warn("Excel sheets not found:
{}", sheetsNotFound);
+ }
} else {
getLogger().debug("Excel document was parsed
but no sheets with the specified desired names were found.");
}
} else {
- //Get all of the sheets in the document.
+ //Get all the sheets in the document.
while (iter.hasNext()) {
InputStream sheet = iter.next();
String sheetName = iter.getSheetName();
diff --git
a/nifi-nar-bundles/nifi-poi-bundle/nifi-poi-processors/src/test/java/org/apache/nifi/processors/poi/ConvertExcelToCSVProcessorTest.java
b/nifi-nar-bundles/nifi-poi-bundle/nifi-poi-processors/src/test/java/org/apache/nifi/processors/poi/ConvertExcelToCSVProcessorTest.java
index be4c58a56b..41b48921e8 100644
---
a/nifi-nar-bundles/nifi-poi-bundle/nifi-poi-processors/src/test/java/org/apache/nifi/processors/poi/ConvertExcelToCSVProcessorTest.java
+++
b/nifi-nar-bundles/nifi-poi-bundle/nifi-poi-processors/src/test/java/org/apache/nifi/processors/poi/ConvertExcelToCSVProcessorTest.java
@@ -35,6 +35,7 @@ import org.apache.nifi.util.TestRunners;
import org.junit.jupiter.api.BeforeEach;
import org.junit.jupiter.api.Test;
+import static org.junit.jupiter.api.Assertions.assertFalse;
import static org.junit.jupiter.api.Assertions.assertNotNull;
import static org.junit.jupiter.api.Assertions.assertTrue;
import static org.junit.jupiter.api.Assertions.assertEquals;
@@ -521,6 +522,7 @@ public class ConvertExcelToCSVProcessorTest {
testRunner.assertTransferCount(ConvertExcelToCSVProcessor.SUCCESS, 0);
//We aren't expecting any output to success here because the sheet doesn't
exist
testRunner.assertTransferCount(ConvertExcelToCSVProcessor.ORIGINAL, 1);
testRunner.assertTransferCount(ConvertExcelToCSVProcessor.FAILURE, 0);
+ assertFalse(testRunner.getLogger().getWarnMessages().isEmpty());
}
/**