diff --git a/backend/akr/src/main/java/fi/oph/akr/service/koodisto/PostalCodeService.java b/backend/akr/src/main/java/fi/oph/akr/service/koodisto/PostalCodeService.java index cd7aa462f..879605139 100644 --- a/backend/akr/src/main/java/fi/oph/akr/service/koodisto/PostalCodeService.java +++ b/backend/akr/src/main/java/fi/oph/akr/service/koodisto/PostalCodeService.java @@ -44,11 +44,21 @@ public Pair translateTown(final String t, final boolean retainCa if (t == null || t.isBlank()) { return Pair.of("", ""); } - final String town = retainCase ? t : capitalize(t.toLowerCase()); - if (fiToSv.containsKey(town)) { - return Pair.of(town, fiToSv.getOrDefault(town, town)); + final String normalizedCase = capitalize(t.toLowerCase()); + if (fiToSv.containsKey(normalizedCase)) { + return Pair.of(normalizedCase, fiToSv.getOrDefault(normalizedCase, normalizedCase)); + } else if (svToFi.containsKey(normalizedCase)) { + return Pair.of(svToFi.getOrDefault(normalizedCase, normalizedCase), normalizedCase); + } + + // If the normalized string wasn't found in translation maps, + // return the string itself, with either normalized or the original capitalization, + // depending on the source of the address. + if (retainCase) { + return Pair.of(t, t); + } else { + return Pair.of(normalizedCase, normalizedCase); } - return Pair.of(svToFi.getOrDefault(town, town), town); } public Pair translateTown(final String t) {