diff --git a/src/main/java/no/fintlabs/instance/gateway/IncomingInstanceMappingService.java b/src/main/java/no/fintlabs/instance/gateway/IncomingInstanceMappingService.java index 7ea2d11..12b1c01 100644 --- a/src/main/java/no/fintlabs/instance/gateway/IncomingInstanceMappingService.java +++ b/src/main/java/no/fintlabs/instance/gateway/IncomingInstanceMappingService.java @@ -10,7 +10,9 @@ import org.springframework.stereotype.Service; import reactor.core.publisher.Mono; +import java.util.HashSet; import java.util.Map; +import java.util.Set; import java.util.UUID; import java.util.stream.Collectors; import java.util.stream.Stream; @@ -36,27 +38,37 @@ public Mono map(Long sourceApplicationId, IncomingInstance incom } private static Map toValuePerKey(IncomingInstance incomingInstance, UUID uuid) { + Set> entries = new HashSet<>(); - return Stream.of( - Map.entry("personaliaFodselsnummer", incomingInstance.getPersonalia().getFodselsnummer()), - Map.entry("personaliaFornavn", incomingInstance.getPersonalia().getFornavn()), - Map.entry("personaliaMellomnavn", incomingInstance.getPersonalia().getMellomnavn()), - Map.entry("personaliaEtternavn", incomingInstance.getPersonalia().getEtternavn()), - Map.entry("kontaktinformasjonTelefonnummer", incomingInstance.getKontaktinformasjon().getTelefonnummer()), - Map.entry("kontaktinformasjonEpostadresse", incomingInstance.getKontaktinformasjon().getEpostadresse()), + entries.add(Map.entry("personaliaFodselsnummer", incomingInstance.getPersonalia().getFodselsnummer())); + entries.add(Map.entry("personaliaFornavn", incomingInstance.getPersonalia().getFornavn())); + entries.add(Map.entry("personaliaMellomnavn", incomingInstance.getPersonalia().getMellomnavn())); + entries.add(Map.entry("personaliaEtternavn", incomingInstance.getPersonalia().getEtternavn())); - Map.entry("inntaksadresseGateadresse", incomingInstance.getInntaksadresse().getGateadresse()), - Map.entry("inntaksadressePostnummer", incomingInstance.getInntaksadresse().getPostnummer()), - Map.entry("inntaksadressePoststed", incomingInstance.getInntaksadresse().getPoststed()), + entries.add(Map.entry("kontaktinformasjonTelefonnummer", incomingInstance.getKontaktinformasjon().getTelefonnummer())); + entries.add(Map.entry("kontaktinformasjonEpostadresse", incomingInstance.getKontaktinformasjon().getEpostadresse())); - Map.entry("dokumentTittel", incomingInstance.getDokument().getTittel()), - Map.entry("dokumentDato", incomingInstance.getDokument().getDato()), - Map.entry("dokumentFilnavn", incomingInstance.getDokument().getFilnavn()), - Map.entry("dokumentFormat", incomingInstance.getDokument().getFormat()), - Map.entry("dokumentFil", uuid.toString())) + entries.add(Map.entry("inntaksadresseGateadresse", incomingInstance.getInntaksadresse().getGateadresse())); + entries.add(Map.entry("inntaksadressePostnummer", incomingInstance.getInntaksadresse().getPostnummer())); + entries.add(Map.entry("inntaksadressePoststed", incomingInstance.getInntaksadresse().getPoststed())); - .collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); + entries.add(Map.entry("dokumentTittel", incomingInstance.getDokument().getTittel())); + entries.add(Map.entry("dokumentDato", incomingInstance.getDokument().getDato())); + entries.add(Map.entry("dokumentFilnavn", incomingInstance.getDokument().getFilnavn())); + entries.add(Map.entry("dokumentFormat", incomingInstance.getDokument().getFormat())); + entries.add(Map.entry("dokumentFil", uuid.toString())); + + if (incomingInstance.getTilleggsinformasjon() != null) { + entries.add(Map.entry("tilleggsinformasjonSkolear", incomingInstance.getTilleggsinformasjon().getSkolear())); + entries.add(Map.entry("tilleggsinformasjonSkolenummer", incomingInstance.getTilleggsinformasjon().getSkolenummer())); + entries.add(Map.entry("tilleggsinformasjonSkolenavn", incomingInstance.getTilleggsinformasjon().getSkolenavn())); + entries.add(Map.entry("tilleggsinformasjonProgramomradekode", incomingInstance.getTilleggsinformasjon().getProgramomradekode())); + entries.add(Map.entry("tilleggsinformasjonProgramomradenavn", incomingInstance.getTilleggsinformasjon().getProgramomradenavn())); + entries.add(Map.entry("tilleggsinformasjonSokertype", incomingInstance.getTilleggsinformasjon().getSokertype())); + } + + return entries.stream().collect(Collectors.toMap(Map.Entry::getKey, Map.Entry::getValue)); } private Mono postFile(Long sourceApplicationId, IncomingInstance incomingInstance) { diff --git a/src/main/java/no/fintlabs/instance/gateway/InstanceProcessorConfiguration.java b/src/main/java/no/fintlabs/instance/gateway/InstanceProcessorConfiguration.java index 43cb8f1..9754baf 100644 --- a/src/main/java/no/fintlabs/instance/gateway/InstanceProcessorConfiguration.java +++ b/src/main/java/no/fintlabs/instance/gateway/InstanceProcessorConfiguration.java @@ -17,11 +17,9 @@ public InstanceProcessor incomingInstanceProcessor( IncomingInstanceMappingService incomingInstanceMappingService ) { return instanceProcessorFactoryService.createInstanceProcessor( - incommingInstance -> Optional.ofNullable(incommingInstance.getDokumenttype()), + incomingInstance -> Optional.ofNullable(incomingInstance.getDokumenttype()), incomingInstance -> Optional.ofNullable(incomingInstance.getInstansId()), incomingInstanceMappingService ); } - - } diff --git a/src/main/java/no/fintlabs/instance/gateway/model/vigo/IncomingInstance.java b/src/main/java/no/fintlabs/instance/gateway/model/vigo/IncomingInstance.java index 9a97eaa..1b3994a 100644 --- a/src/main/java/no/fintlabs/instance/gateway/model/vigo/IncomingInstance.java +++ b/src/main/java/no/fintlabs/instance/gateway/model/vigo/IncomingInstance.java @@ -21,4 +21,5 @@ public class IncomingInstance { private final Kontaktinformasjon kontaktinformasjon; private final Inntaksadresse inntaksadresse; private final Dokument dokument; + private final Tilleggsinformasjon tilleggsinformasjon; } diff --git a/src/main/java/no/fintlabs/instance/gateway/model/vigo/Tilleggsinformasjon.java b/src/main/java/no/fintlabs/instance/gateway/model/vigo/Tilleggsinformasjon.java new file mode 100644 index 0000000..cfdd1ca --- /dev/null +++ b/src/main/java/no/fintlabs/instance/gateway/model/vigo/Tilleggsinformasjon.java @@ -0,0 +1,20 @@ +package no.fintlabs.instance.gateway.model.vigo; + +import lombok.Builder; +import lombok.EqualsAndHashCode; +import lombok.Getter; +import lombok.extern.jackson.Jacksonized; + +@Getter +@Jacksonized +@EqualsAndHashCode +@Builder +public class Tilleggsinformasjon { + + private String skolear; + private String skolenummer; + private String skolenavn; + private String programomradekode; + private String programomradenavn; + private String sokertype; +} diff --git a/src/test/java/no/fintlabs/instance/gateway/IncomingInstanceMappingServiceTest.java b/src/test/java/no/fintlabs/instance/gateway/IncomingInstanceMappingServiceTest.java index d917907..45bbc4d 100644 --- a/src/test/java/no/fintlabs/instance/gateway/IncomingInstanceMappingServiceTest.java +++ b/src/test/java/no/fintlabs/instance/gateway/IncomingInstanceMappingServiceTest.java @@ -37,7 +37,41 @@ void shouldReturnInstanceObjectWhenIncomingInstanceIsValid() { UUID uuid = UUID.randomUUID(); when(fileClient.postFile(any(File.class))).thenReturn(Mono.just(uuid)); - InstanceObject result = incomingInstanceMappingService.map(4L, createValidIncomingInstance()).block(); + InstanceObject result = incomingInstanceMappingService.map(4L, createValidIncomingInstanceWithTilleggsinformasjon()).block(); + + Map valuePerKey = result.getValuePerKey(); + assertEquals("Ola", valuePerKey.get("personaliaFornavn")); + assertEquals("Nordmann", valuePerKey.get("personaliaMellomnavn")); + assertEquals("Nordmannsen", valuePerKey.get("personaliaEtternavn")); + assertEquals("12345678901", valuePerKey.get("personaliaFodselsnummer")); + + assertEquals("12345678", valuePerKey.get("kontaktinformasjonTelefonnummer")); + assertEquals("ola@normann.no", valuePerKey.get("kontaktinformasjonEpostadresse")); + + assertEquals("Osloveien 1", valuePerKey.get("inntaksadresseGateadresse")); + assertEquals("1234", valuePerKey.get("inntaksadressePostnummer")); + assertEquals("Oslo", valuePerKey.get("inntaksadressePoststed")); + + assertEquals("Dokumenttittel", valuePerKey.get("dokumentTittel")); + assertEquals("2021-01-01", valuePerKey.get("dokumentDato")); + assertEquals("dokument.pdf", valuePerKey.get("dokumentFilnavn")); + assertEquals("text/plain", valuePerKey.get("dokumentFormat")); + assertEquals(uuid.toString(), valuePerKey.get("dokumentFil")); + + assertEquals("2024/2025", valuePerKey.get("tilleggsinformasjonSkolear")); + assertEquals("1", valuePerKey.get("tilleggsinformasjonSkolenummer")); + assertEquals("Oslo katedralskole", valuePerKey.get("tilleggsinformasjonSkolenavn")); + assertEquals("LA1", valuePerKey.get("tilleggsinformasjonProgramomradekode")); + assertEquals("Latin", valuePerKey.get("tilleggsinformasjonProgramomradenavn")); + assertEquals("Ordinær", valuePerKey.get("tilleggsinformasjonSokertype")); + } + + @Test + void shouldReturnInstanceObjectWhenIncomingInstanceDoesNotHaveTilleggsinformasjon() { + UUID uuid = UUID.randomUUID(); + when(fileClient.postFile(any(File.class))).thenReturn(Mono.just(uuid)); + + InstanceObject result = incomingInstanceMappingService.map(4L, createIncomingInstanceWithoutTilleggsinformasjon()).block(); Map valuePerKey = result.getValuePerKey(); assertEquals("Ola", valuePerKey.get("personaliaFornavn")); @@ -63,12 +97,51 @@ void shouldReturnInstanceObjectWhenIncomingInstanceIsValid() { void shouldNotReturnInstansId(){ when(fileClient.postFile(any(File.class))).thenReturn(Mono.just(UUID.randomUUID())); - InstanceObject result = incomingInstanceMappingService.map(4L, createValidIncomingInstance()).block(); + InstanceObject result = incomingInstanceMappingService.map(4L, createValidIncomingInstanceWithTilleggsinformasjon()).block(); assertFalse(result.getValuePerKey().containsKey("instansId")); } - private IncomingInstance createValidIncomingInstance() { + private IncomingInstance createValidIncomingInstanceWithTilleggsinformasjon() { + return IncomingInstance.builder() + .instansId("12345") + .personalia(Personalia.builder() + .fodselsnummer("12345678901") + .fornavn("Ola") + .mellomnavn("Nordmann") + .etternavn("Nordmannsen") + .build()) + + .kontaktinformasjon(Kontaktinformasjon.builder() + .telefonnummer("12345678") + .epostadresse("ola@normann.no") + .build()) + + .inntaksadresse(Inntaksadresse.builder() + .gateadresse("Osloveien 1") + .postnummer("1234") + .poststed("Oslo") + .build()) + + .dokument(Dokument.builder() + .tittel("Dokumenttittel") + .dato("2021-01-01") + .filnavn("dokument.pdf") + .format("text/plain") + .build()) + + .tilleggsinformasjon(Tilleggsinformasjon.builder() + .skolear("2024/2025") + .skolenummer("1") + .skolenavn("Oslo katedralskole") + .programomradekode("LA1") + .programomradenavn("Latin") + .sokertype("Ordinær") + .build()) + .build(); + } + + private IncomingInstance createIncomingInstanceWithoutTilleggsinformasjon() { return IncomingInstance.builder() .instansId("12345") .personalia(Personalia.builder() @@ -95,6 +168,7 @@ private IncomingInstance createValidIncomingInstance() { .filnavn("dokument.pdf") .format("text/plain") .build()) + .build(); } } \ No newline at end of file