From 37314fca05468a3bfa8d4c3d23584586463a97fa Mon Sep 17 00:00:00 2001 From: Paul-Christian Volkmer Date: Mon, 7 Sep 2026 15:15:19 +0200 Subject: feat!: only add level 4/5 ATC codes (#295) ATC codes like `L`, `L01`, `L01E` are not imported any more and cannot be used as ATC code from database. These codes (from database) will be treated as unregistered code instead.--- .../oshelper/atc/services/CsvAgentCodeService.java | 25 ++++++++++++++++------ 1 file changed, 19 insertions(+), 6 deletions(-) (limited to 'src/main/java/dev/dnpm/oshelper/atc/services/CsvAgentCodeService.java') diff --git a/src/main/java/dev/dnpm/oshelper/atc/services/CsvAgentCodeService.java b/src/main/java/dev/dnpm/oshelper/atc/services/CsvAgentCodeService.java index abb006b..e355034 100644 --- a/src/main/java/dev/dnpm/oshelper/atc/services/CsvAgentCodeService.java +++ b/src/main/java/dev/dnpm/oshelper/atc/services/CsvAgentCodeService.java @@ -27,6 +27,7 @@ import java.io.InputStreamReader; import java.util.ArrayList; import java.util.List; import java.util.Objects; +import java.util.Optional; import java.util.stream.Collectors; import org.apache.commons.csv.CSVFormat; import org.slf4j.Logger; @@ -74,6 +75,17 @@ public class CsvAgentCodeService implements AgentCodeService { return resultStream.collect(Collectors.toList()); } + /** + * Queries source for agents with code matching code string. + * + * @param code The code string + * @return An optional agent code if found + */ + @Override + public Optional getAgentCode(final String code) { + return this.codeList.stream().filter(agentCode -> agentCode.getCode().equals(code)).findFirst(); + } + protected List parseFile() { var result = new ArrayList(); @@ -91,14 +103,15 @@ public class CsvAgentCodeService implements AgentCodeService { if (!row.isMapped(ATC_CODE_COLUMN) || !row.isMapped(ATC_NAME_COLUMN)) { throw new FileParsingException("No CSV column for ATC code or name found"); } + final var atcCode = row.get(ATC_CODE_COLUMN).trim(); + if (!AtcCode.isAtcCode(atcCode)) { + logger.warn("Unusable ATC code '{}' - ignored", atcCode); + continue; + } if (row.isMapped(ATC_VERSION_COLUMN)) { - result.add( - new AtcCode( - row.get(ATC_CODE_COLUMN).trim(), - row.get(ATC_NAME_COLUMN), - row.get(ATC_VERSION_COLUMN))); + result.add(new AtcCode(atcCode, row.get(ATC_NAME_COLUMN), row.get(ATC_VERSION_COLUMN))); } else { - result.add(new AtcCode(row.get(ATC_CODE_COLUMN).trim(), row.get(ATC_NAME_COLUMN))); + result.add(new AtcCode(atcCode, row.get(ATC_NAME_COLUMN))); } } return result; -- cgit v1.2.3