|
4 | 4 | import fi.vm.sade.varda.rekisterointi.model.*;
|
5 | 5 | import org.slf4j.Logger;
|
6 | 6 | import org.slf4j.LoggerFactory;
|
| 7 | +import org.springframework.beans.factory.annotation.Autowired; |
7 | 8 | import org.springframework.stereotype.Service;
|
8 | 9 |
|
9 | 10 | import java.time.LocalDate;
|
@@ -36,11 +37,21 @@ public class OrganisaatioService {
|
36 | 37 | private static final String EMAIL_TYYPPI = "email";
|
37 | 38 | private static final Pattern YRITYSMUOTOURI_PATTERN = Pattern.compile("yritysmuoto_\\d+");
|
38 | 39 |
|
| 40 | + @Autowired private final KoodistoClient koodistoClient; |
39 | 41 | private final Map<String,Koodi> yritysmuotoUriToKoodi = new HashMap<>();
|
40 | 42 |
|
41 | 43 | public OrganisaatioService(KoodistoClient koodistoClient) {
|
42 |
| - koodistoClient.listKoodit(KoodistoType.YRITYSMUOTO).forEach( |
43 |
| - koodi -> yritysmuotoUriToKoodi.put(koodi.uri, koodi)); |
| 44 | + this.koodistoClient = koodistoClient; |
| 45 | + tryUpdateYritysmuotoKoodisto(); |
| 46 | + } |
| 47 | + |
| 48 | + private void tryUpdateYritysmuotoKoodisto() { |
| 49 | + try { |
| 50 | + koodistoClient.listKoodit(KoodistoType.YRITYSMUOTO).forEach( |
| 51 | + koodi -> yritysmuotoUriToKoodi.put(koodi.uri, koodi)); |
| 52 | + } catch (Exception e) { |
| 53 | + LOGGER.error("Failed to fetch koodisto data", e); |
| 54 | + } |
44 | 55 | }
|
45 | 56 |
|
46 | 57 | /**
|
@@ -115,13 +126,20 @@ List<OrganisaatioNimi> organisaatioNimet(KielistettyNimi kielistettyNimi) {
|
115 | 126 | return List.of(organisaatioNimi);
|
116 | 127 | }
|
117 | 128 |
|
| 129 | + private Koodi getYritysmuotoFromUri(String uri) { |
| 130 | + if (yritysmuotoUriToKoodi.isEmpty()) { |
| 131 | + tryUpdateYritysmuotoKoodisto(); |
| 132 | + } |
| 133 | + return yritysmuotoUriToKoodi.get(uri); |
| 134 | + } |
| 135 | + |
118 | 136 | // organisaatiopalvelu tallentaa ikävä kyllä kielistettyjä yritysmuotoja,
|
119 | 137 | // muunnetaan kunnes saadaan organisaatiopalvelu järkevämpään kuosiin
|
120 | 138 | String yritysMuotoKoodiUriToNimi(String uri) {
|
121 | 139 | String nimi = null;
|
122 | 140 | if (YRITYSMUOTOURI_PATTERN.matcher(uri).matches()) {
|
123 | 141 | LOGGER.info("Muunnetaan yritysmuotokoodi: {}", uri);
|
124 |
| - Koodi koodi = yritysmuotoUriToKoodi.get(uri); |
| 142 | + Koodi koodi = getYritysmuotoFromUri(uri); |
125 | 143 | if (koodi != null) {
|
126 | 144 | nimi = koodi.nimi.get(DEFAULT_KIELI_KOODI_ARVO);
|
127 | 145 | } else {
|
|
0 commit comments