diff --git a/src/main/java/no/fintlabs/model/personopplysning/PersonopplysningJpaRepository.java b/src/main/java/no/fintlabs/model/personopplysning/PersonopplysningJpaRepository.java index ff76059..cf67d89 100644 --- a/src/main/java/no/fintlabs/model/personopplysning/PersonopplysningJpaRepository.java +++ b/src/main/java/no/fintlabs/model/personopplysning/PersonopplysningJpaRepository.java @@ -1,5 +1,6 @@ package no.fintlabs.model.personopplysning; +import no.fintlabs.model.personopplysning.model.PersonopplysningEntity; import org.springframework.data.jpa.repository.JpaRepository; import org.springframework.stereotype.Repository; diff --git a/src/main/java/no/fintlabs/model/personopplysning/PersonopplysningMappingService.java b/src/main/java/no/fintlabs/model/personopplysning/PersonopplysningMappingService.java index 18ab377..6e410c8 100644 --- a/src/main/java/no/fintlabs/model/personopplysning/PersonopplysningMappingService.java +++ b/src/main/java/no/fintlabs/model/personopplysning/PersonopplysningMappingService.java @@ -1,16 +1,22 @@ package no.fintlabs.model.personopplysning; +import com.fasterxml.jackson.core.type.TypeReference; +import com.fasterxml.jackson.databind.ObjectMapper; import no.fint.model.felles.kompleksedatatyper.Identifikator; import no.fint.model.felles.kompleksedatatyper.Periode; +import no.fint.model.resource.Link; import no.fint.model.resource.personvern.kodeverk.PersonopplysningResource; +import no.fintlabs.model.personopplysning.model.PersonopplysningEntity; import org.springframework.stereotype.Service; import java.util.Date; -import java.util.UUID; +import java.util.List; +import java.util.Map; @Service public class PersonopplysningMappingService { + private static final ObjectMapper objectMapper = new ObjectMapper(); public static PersonopplysningResource toResource(PersonopplysningEntity personopplysningEntity) { PersonopplysningResource personopplysningResource = new PersonopplysningResource(); @@ -21,6 +27,15 @@ public static PersonopplysningResource toResource(PersonopplysningEntity persono personopplysningResource.setPassiv(personopplysningEntity.isPassiv()); personopplysningResource.setGyldighetsperiode(mapToPeriode(personopplysningEntity.getStartGyldighetsdato(), personopplysningEntity.getEndGyldighetsdato(), personopplysningEntity.getBeskrivelseGyldighetsPeriode())); personopplysningResource.setSystemId(identifikator); + + try { + String links = personopplysningEntity.getLinks(); + personopplysningResource.setLinks(objectMapper.readValue(links, new TypeReference>>() { + })); + } catch (Exception e) { + throw new RuntimeException("Could not parse links", e); + } + return personopplysningResource; } @@ -38,7 +53,16 @@ public static PersonopplysningEntity toEntity(PersonopplysningResource personopp personopplysningEntity.setNavn(personopplysningResource.getNavn()); if (personopplysningResource.getPassiv() != null) personopplysningEntity.setPassiv(personopplysningResource.getPassiv()); - personopplysningEntity.setIdentifikatorVerdi(UUID.randomUUID().toString()); + personopplysningEntity.setIdentifikatorVerdi(personopplysningResource.getSystemId().getIdentifikatorverdi()); + + if(personopplysningResource.getLinks() != null) { + try { + Map> links = personopplysningResource.getLinks(); + personopplysningEntity.setLinks(objectMapper.writeValueAsString(links)); + } catch (Exception e) { + throw new RuntimeException("Could not serialize personopplysning links", e); + } + } return personopplysningEntity; } diff --git a/src/main/java/no/fintlabs/model/personopplysning/PersonopplysningRepository.java b/src/main/java/no/fintlabs/model/personopplysning/PersonopplysningRepository.java index 505351c..a41c86d 100644 --- a/src/main/java/no/fintlabs/model/personopplysning/PersonopplysningRepository.java +++ b/src/main/java/no/fintlabs/model/personopplysning/PersonopplysningRepository.java @@ -5,6 +5,7 @@ import no.fint.model.resource.personvern.kodeverk.PersonopplysningResource; import no.fintlabs.adapter.events.WriteableResourceRepository; import no.fintlabs.adapter.models.event.RequestFintEvent; +import no.fintlabs.model.personopplysning.model.PersonopplysningEntity; import org.springframework.stereotype.Repository; import java.util.ArrayList; diff --git a/src/main/java/no/fintlabs/model/personopplysning/PersonopplysningEntity.java b/src/main/java/no/fintlabs/model/personopplysning/model/PersonopplysningEntity.java similarity index 84% rename from src/main/java/no/fintlabs/model/personopplysning/PersonopplysningEntity.java rename to src/main/java/no/fintlabs/model/personopplysning/model/PersonopplysningEntity.java index c0d5d8e..7f05767 100644 --- a/src/main/java/no/fintlabs/model/personopplysning/PersonopplysningEntity.java +++ b/src/main/java/no/fintlabs/model/personopplysning/model/PersonopplysningEntity.java @@ -1,4 +1,4 @@ -package no.fintlabs.model.personopplysning; +package no.fintlabs.model.personopplysning.model; import jakarta.persistence.Column; import jakarta.persistence.Entity; @@ -7,6 +7,8 @@ import lombok.Setter; import java.util.Date; +import java.util.List; +import java.util.Map; @Entity @Getter @@ -14,6 +16,8 @@ public class PersonopplysningEntity { @Id @Column(nullable = false, unique = true) + private String identifikatorVerdi; + private String kode; private Date startGyldighetsdato; @@ -27,9 +31,9 @@ public class PersonopplysningEntity { private boolean passiv; - private String identifikatorVerdi; - private Date startIdentifikatorDato; private Date endIdentifikatorDato; + + private String links; }