summaryrefslogtreecommitdiff
path: root/src/main/java/dev/dnpm/oshelper/atc/services/CsvAgentCodeService.java
diff options
context:
space:
mode:
authorPaul-Christian Volkmer2026-09-07 15:15:19 +0200
committerGitHub2026-09-07 15:15:19 +0200
commit37314fca05468a3bfa8d4c3d23584586463a97fa (patch)
tree7b1def283bed1fe9d7d430ca7e0481491b92f698 /src/main/java/dev/dnpm/oshelper/atc/services/CsvAgentCodeService.java
parentcdcdb21eca393b17ac5d075c5a002d30ccf038c5 (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.java25
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;