diff options
| author | Paul-Christian Volkmer | 2026-09-07 15:15:19 +0200 |
|---|---|---|
| committer | GitHub | 2026-09-07 15:15:19 +0200 |
| commit | 37314fca05468a3bfa8d4c3d23584586463a97fa (patch) | |
| tree | 7b1def283bed1fe9d7d430ca7e0481491b92f698 /src/main/java/dev/dnpm/oshelper/atc/services/CsvAgentCodeService.java | |
| parent | cdcdb21eca393b17ac5d075c5a002d30ccf038c5 (diff) | |
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.
Diffstat (limited to 'src/main/java/dev/dnpm/oshelper/atc/services/CsvAgentCodeService.java')
| -rw-r--r-- | src/main/java/dev/dnpm/oshelper/atc/services/CsvAgentCodeService.java | 25 |
1 files changed, 19 insertions, 6 deletions
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<AgentCode> getAgentCode(final String code) { + return this.codeList.stream().filter(agentCode -> agentCode.getCode().equals(code)).findFirst(); + } + protected List<AgentCode> parseFile() { var result = new ArrayList<AgentCode>(); @@ -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; |
