diff options
| author | Paul-Christian Volkmer | 2023-03-14 11:45:59 +0100 |
|---|---|---|
| committer | Paul-Christian Volkmer | 2023-03-14 11:45:59 +0100 |
| commit | e10c7fba2d7f5358c12b90308f68b84269d1a0c5 (patch) | |
| tree | 3b233da10eca0e06c428cba91f4ed39231300150 /src | |
| parent | dfd0bcead45259e8fe317d54e7eeaa8d1f3b79fe (diff) | |
Issue #9: Entspricht der Code aus OS dem ATC-Schema, verwende Substanz als ATCCode
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/java/ATCCodes/AtcCode.java | 11 | ||||
| -rw-r--r-- | src/main/java/ATCCodes/services/OnkostarAgentCodeService.java | 11 | ||||
| -rw-r--r-- | src/test/java/ATCCodes/AtcCodeTest.java | 28 |
3 files changed, 48 insertions, 2 deletions
diff --git a/src/main/java/ATCCodes/AtcCode.java b/src/main/java/ATCCodes/AtcCode.java index e8bf9f1..deb1419 100644 --- a/src/main/java/ATCCodes/AtcCode.java +++ b/src/main/java/ATCCodes/AtcCode.java @@ -48,4 +48,15 @@ public class AtcCode implements AgentCode { public int hashCode() { return Objects.hash(code.toLowerCase(), name.toLowerCase()); } + + /** + * Prüft auf gültiges ATCCode-Schema ab Ebene 2 + * @param code Der zu prüfende Code + * @return Gibt <code>true</code> zurück, wenn der angegebene Code dem ATCCode-Schema entspricht + */ + public static boolean isAtcCode(String code) { + return null != code + && ! code.isBlank() + && code.matches("[ABCDGHJLMNPRSV][0-2][1-9]([A-Z]([A-Z]([0-9]{2})?)?)?"); + } }
\ No newline at end of file diff --git a/src/main/java/ATCCodes/services/OnkostarAgentCodeService.java b/src/main/java/ATCCodes/services/OnkostarAgentCodeService.java index f29f074..e0c75f4 100644 --- a/src/main/java/ATCCodes/services/OnkostarAgentCodeService.java +++ b/src/main/java/ATCCodes/services/OnkostarAgentCodeService.java @@ -1,6 +1,7 @@ package ATCCodes.services; import ATCCodes.AgentCode; +import ATCCodes.AtcCode; import ATCCodes.UnregisteredCode; import org.springframework.jdbc.core.JdbcTemplate; import org.springframework.stereotype.Service; @@ -47,8 +48,14 @@ public class OnkostarAgentCodeService implements AgentCodeService { return jdbcTemplate.query( sql, new Object[]{query + "%", "%" + query + "%", "%" + query + "%"}, - (resultSet, i) -> - new UnregisteredCode(resultSet.getString("code"), resultSet.getString("shortdesc")) + (resultSet, i) -> { + var code = resultSet.getString("code"); + var shortdesc = resultSet.getString("shortdesc"); + if (AtcCode.isAtcCode(code)) { + return new AtcCode(code, shortdesc); + } + return new UnregisteredCode(code, shortdesc); + } ); } }
\ No newline at end of file diff --git a/src/test/java/ATCCodes/AtcCodeTest.java b/src/test/java/ATCCodes/AtcCodeTest.java new file mode 100644 index 0000000..c00e499 --- /dev/null +++ b/src/test/java/ATCCodes/AtcCodeTest.java @@ -0,0 +1,28 @@ +package ATCCodes; + +import org.junit.jupiter.api.Test; + +import static org.junit.jupiter.api.Assertions.assertFalse; +import static org.junit.jupiter.api.Assertions.assertTrue; + +public class AtcCodeTest { + + @Test + void testShouldDetectAtcCodeScheme() { + assertTrue(AtcCode.isAtcCode("L01")); + assertTrue(AtcCode.isAtcCode("L01A")); + assertTrue(AtcCode.isAtcCode("L01AA")); + assertTrue(AtcCode.isAtcCode("L01AA01")); + } + + @Test + void testShouldDetectInvalidAtcCodeScheme() { + assertFalse(AtcCode.isAtcCode(null)); + assertFalse(AtcCode.isAtcCode(" ")); + assertFalse(AtcCode.isAtcCode("irgendwas")); + assertFalse(AtcCode.isAtcCode("L00AA")); + assertFalse(AtcCode.isAtcCode("Z01AA")); + assertFalse(AtcCode.isAtcCode("L01AA0")); + } + +} |
