From 7fab685ec51ceb88231ddb47fd510a4aefac8636 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Henning=20Vo=C3=9F?= Date: Thu, 26 Dec 2024 18:50:03 +0100 Subject: [PATCH] #461 ignore comment lines in CSV files --- .../dailyreport/rest/DailyWorkingReportCsvConverter.java | 7 +++++-- .../rest/DailyWorkingReportCsvConverterTest.java | 2 +- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/src/main/java/org/tb/dailyreport/rest/DailyWorkingReportCsvConverter.java b/src/main/java/org/tb/dailyreport/rest/DailyWorkingReportCsvConverter.java index 5661ba5a..0ffc14c5 100644 --- a/src/main/java/org/tb/dailyreport/rest/DailyWorkingReportCsvConverter.java +++ b/src/main/java/org/tb/dailyreport/rest/DailyWorkingReportCsvConverter.java @@ -89,7 +89,7 @@ public List read(@Nullable Class fromRows(List rows) { return rows.stream() - .filter(not(CsvRow.EMPTY::equals)) + .filter(not(DailyWorkingReportCsvConverter::isEmptyRow)) .collect(groupingBy(CsvRow::getDate)).entrySet().stream() .map(entry -> Map.entry(getUniqueWorkingDayRow(entry.getKey(), entry.getValue()), entry.getValue())) .map(entry -> DailyWorkingReportData.builder() @@ -114,8 +114,11 @@ private static CsvRow getUniqueWorkingDayRow(LocalDate day, List rows) { return workingDayRows.getFirst(); } + private static boolean isEmptyRow(CsvRow row) { + return row.getDate() == null; + } + private static boolean isEmptyWorkingDayRow(CsvRow row) { - if(row.getDate() == null) return true; // date is empty if(row.getType() == WorkingDayType.NOT_WORKED) return false; // only date required for NOT_WORKED // if start time or break time is missing, it is considered empty for other work types diff --git a/src/test/java/org/tb/dailyreport/rest/DailyWorkingReportCsvConverterTest.java b/src/test/java/org/tb/dailyreport/rest/DailyWorkingReportCsvConverterTest.java index 517b620a..8a76eaa2 100644 --- a/src/test/java/org/tb/dailyreport/rest/DailyWorkingReportCsvConverterTest.java +++ b/src/test/java/org/tb/dailyreport/rest/DailyWorkingReportCsvConverterTest.java @@ -39,7 +39,7 @@ private static Stream readCsv() { Arguments.of( """ date,type,startTime,breakTime,employeeorderId,orderSign,orderLabel,suborderSign,suborderLabel,workingTime,comment - + ,,,,,,,,,,some comment 2024-11-04,WORKED,09:00,00:30,183209,111,Rumsitzen,111.01,Stuhlpolsterung,00:30,Team-Mittag 2024-11-04,,,,183209,111,Rumsitzen,111.01,Stuhlpolsterung,07:30,Daily """,