From 4b121482f1a8323ea23858e8118934be5d9aa54c Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Fri, 10 Mar 2023 09:24:12 +0100 Subject: Issue #5: Vorschlag für den Aufbau des Projekts * Maven-Projekt direkt im Hauptverzeichnis * Anpassung der Maven-POM-Datei - nicht benötigte Abhängigkeiten entfernt * Gitignore-Datei angelegt --- .../java/ATCCodes/services/CsvAtcCodeService.java | 51 ++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100644 src/main/java/ATCCodes/services/CsvAtcCodeService.java (limited to 'src/main/java/ATCCodes/services/CsvAtcCodeService.java') diff --git a/src/main/java/ATCCodes/services/CsvAtcCodeService.java b/src/main/java/ATCCodes/services/CsvAtcCodeService.java new file mode 100644 index 0000000..fa834e7 --- /dev/null +++ b/src/main/java/ATCCodes/services/CsvAtcCodeService.java @@ -0,0 +1,51 @@ +package ATCCodes.services; + +import ATCCodes.AgentCode; +import ATCCodes.AtcCode; +import ATCCodes.FileParsingException; +import org.apache.commons.csv.CSVFormat; +import org.springframework.core.io.ResourceLoader; +import org.springframework.stereotype.Service; + +import java.io.IOException; +import java.io.InputStreamReader; +import java.util.ArrayList; +import java.util.List; + +/** + * Service to query for agent codes based on WHO xml file + * + * @author Paul-Christian Volkmer + * @since 0.1.0 + */ +@Service +public class CsvAtcCodeService extends FileBasedAgentCodeService { + + public CsvAtcCodeService(final ResourceLoader resourceLoader) { + super(resourceLoader); + } + + protected List parseFile(final ResourceLoader resourceLoader) { + var result = new ArrayList(); + var filename = getFilePath("atc.csv"); + try { + var inputStream = resourceLoader.getResource(filename).getInputStream(); + var parser = CSVFormat.RFC4180 + .withHeader() + .withSkipHeaderRecord() + .parse(new InputStreamReader(inputStream)); + for (var row : parser) { + if (!row.isMapped("CODE") || !row.isMapped("NAME")) { + throw new FileParsingException("No CSV column 'CODE' or 'NAME' found"); + } + result.add(new AtcCode(row.get("CODE"), row.get("NAME"))); + } + logger.info("Found CSV file for ATC-Codes."); + return result; + } catch (IOException | FileParsingException e) { + logger.warn("Error reading CSV file '{}' for ATC-Codes. Proceeding without data", filename); + } + return result; + } + +} \ No newline at end of file -- cgit v1.2.3