Skip to content

Commit

Permalink
Add missing journalpost response properties
Browse files Browse the repository at this point in the history
  • Loading branch information
eivindmorch committed Apr 13, 2023
1 parent c8dfac4 commit c1293f4
Show file tree
Hide file tree
Showing 6 changed files with 139 additions and 67 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -3,24 +3,22 @@
import no.fint.model.felles.basisklasser.Begrep;
import no.fint.model.felles.kompleksedatatyper.Identifikator;
import no.fint.model.resource.administrasjon.personal.PersonalressursResource;
import no.fint.model.resource.arkiv.kodeverk.DokumentTypeResource;
import no.fint.model.resource.arkiv.kodeverk.JournalStatusResource;
import no.fint.model.resource.arkiv.kodeverk.JournalpostTypeResource;
import no.fint.model.resource.arkiv.noark.AdministrativEnhetResource;
import no.fint.model.resource.arkiv.noark.ArkivressursResource;
import no.fint.model.resource.arkiv.noark.JournalpostResource;
import no.fint.model.resource.arkiv.noark.SakResource;
import no.fint.model.resource.arkiv.kodeverk.*;
import no.fint.model.resource.arkiv.noark.*;
import no.fint.model.resource.felles.PersonResource;
import no.fintlabs.cache.FintCache;
import no.fintlabs.model.EgrunnervervJournalpostInstanceToDispatch;
import org.springframework.stereotype.Service;

import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.List;
import java.util.Objects;
import java.util.Optional;
import java.util.stream.Collectors;
import java.util.stream.Stream;

import static no.fintlabs.InstanceConsumerConfiguration.EGRUNNERVERV_DATETIME_FORMAT;
import static no.fintlabs.links.ResourceLinkUtil.getOptionalFirstLink;

@Service
Expand All @@ -31,6 +29,8 @@ public class EgrunnervervJournalpostInstanceToDispatchMappingService {
private final FintCache<String, DokumentTypeResource> dokumentTypeResourceCache;
private final FintCache<String, JournalStatusResource> journalStatusResourceCache;
private final FintCache<String, JournalpostTypeResource> journalpostTypeResourceCache;
private final FintCache<String, TilgangsrestriksjonResource> tilgangsrestriksjonResourceCache;
private final FintCache<String, SkjermingshjemmelResource> skjermingshjemmelResourceCache;
private final FintCache<String, PersonalressursResource> personalressursResourceCache;
private final FintCache<String, PersonResource> personResourceCache;

Expand All @@ -40,6 +40,8 @@ public EgrunnervervJournalpostInstanceToDispatchMappingService(
FintCache<String, DokumentTypeResource> dokumentTypeResourceCache,
FintCache<String, JournalStatusResource> journalStatusResourceCache,
FintCache<String, JournalpostTypeResource> journalpostTypeResourceCache,
FintCache<String, TilgangsrestriksjonResource> tilgangsrestriksjonResourceCache,
FintCache<String, SkjermingshjemmelResource> skjermingshjemmelResourceCache,
FintCache<String, PersonalressursResource> personalressursResourceCache,
FintCache<String, PersonResource> personResourceCache
) {
Expand All @@ -48,6 +50,8 @@ public EgrunnervervJournalpostInstanceToDispatchMappingService(
this.dokumentTypeResourceCache = dokumentTypeResourceCache;
this.journalStatusResourceCache = journalStatusResourceCache;
this.journalpostTypeResourceCache = journalpostTypeResourceCache;
this.tilgangsrestriksjonResourceCache = tilgangsrestriksjonResourceCache;
this.skjermingshjemmelResourceCache = skjermingshjemmelResourceCache;
this.personalressursResourceCache = personalressursResourceCache;
this.personResourceCache = personResourceCache;
}
Expand Down Expand Up @@ -93,43 +97,93 @@ public EgrunnervervJournalpostInstanceToDispatch map(SakResource sakResource, Lo
getOptionalFirstLink(journalpostResource::getJournalposttype)
.flatMap(journalpostTypeResourceCache::getOptional);

return EgrunnervervJournalpostInstanceToDispatch
.builder()
.statusId(journalStatusResource.map(Begrep::getSystemId).map(Identifikator::getIdentifikatorverdi).orElse(""))
.dokumentTypeNavn(journalpostTypeResource.map(Begrep::getNavn).orElse(""))
.dokumentkategoriId(dokumentTypeResources
.stream()
.map(Begrep::getSystemId)
.map(Identifikator::getIdentifikatorverdi)
.collect(Collectors.joining(", "))
)
.dokumentkategoriNavn(dokumentTypeResources
.stream()
.map(Begrep::getNavn)
.collect(Collectors.joining(", "))
)
.saksansvarligBrukernavn(
saksansvarligPersonalressursResource
.map(PersonalressursResource::getBrukernavn)
.map(Identifikator::getIdentifikatorverdi)
.orElse("")
)
.saksansvarligNavn(saksansvarligPersonResource.map(resource -> Stream.of(
resource.getNavn().getFornavn(),
resource.getNavn().getMellomnavn(),
resource.getNavn().getEtternavn()
).filter(Objects::nonNull)
.collect(Collectors.joining(" "))
).orElse("")
)
.adminEnhetKortnavn(
administrativEnhetResource
.map(AdministrativEnhetResource::getSystemId)
SkjermingResource skjermingResource = journalpostResource.getSkjerming();

Optional<TilgangsrestriksjonResource> tilgangsrestriksjonResource =
getOptionalFirstLink(skjermingResource::getTilgangsrestriksjon)
.flatMap(tilgangsrestriksjonResourceCache::getOptional);

Optional<SkjermingshjemmelResource> skjermingshjemmelResource =
getOptionalFirstLink(skjermingResource::getSkjermingshjemmel)
.flatMap(skjermingshjemmelResourceCache::getOptional);

EgrunnervervJournalpostInstanceToDispatch.EgrunnervervJournalpostInstanceToDispatchBuilder builder =
EgrunnervervJournalpostInstanceToDispatch
.builder()
.journalpostnr(
sakResource.getMappeId().getIdentifikatorverdi() +
"-" +
journalpostResource.getJournalPostnummer().toString()
)
.tittel(journalpostResource.getTittel())
.dokumentDato(
journalpostResource
.getDokumentetsDato()
.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDateTime()
.format(DateTimeFormatter.ofPattern(EGRUNNERVERV_DATETIME_FORMAT))
)
.dokumentkategoriId(dokumentTypeResources
.stream()
.map(Begrep::getSystemId)
.map(Identifikator::getIdentifikatorverdi)
.orElse("")
.collect(Collectors.joining(", "))
)
.dokumentkategoriNavn(dokumentTypeResources
.stream()
.map(Begrep::getNavn)
.collect(Collectors.joining(", "))
)
.antallVedlegg(journalpostResource.getAntallVedlegg());

journalStatusResource
.map(Begrep::getSystemId)
.map(Identifikator::getIdentifikatorverdi)
.ifPresent(builder::statusId);

tilgangsrestriksjonResource
.map(Begrep::getKode)
.ifPresent(builder::tilgangskode);

skjermingshjemmelResource
.map(Begrep::getKode)
.ifPresent(builder::hjemmel);

journalpostTypeResource
.map(Begrep::getSystemId)
.map(Identifikator::getIdentifikatorverdi)
.ifPresent(builder::dokumentTypeId);

journalpostTypeResource
.map(Begrep::getNavn)
.ifPresent(builder::dokumentTypeNavn);

saksansvarligPersonalressursResource
.map(PersonalressursResource::getBrukernavn)
.map(Identifikator::getIdentifikatorverdi)
.ifPresent(builder::saksansvarligBrukernavn);

saksansvarligPersonResource
.map(resource -> Stream.of(
resource.getNavn().getFornavn(),
resource.getNavn().getMellomnavn(),
resource.getNavn().getEtternavn()
).filter(Objects::nonNull)
.collect(Collectors.joining(" "))
)
.adminEnhetNavn(administrativEnhetResource.map(AdministrativEnhetResource::getNavn).orElse(""))
.build();
.ifPresent(builder::saksansvarligNavn);

administrativEnhetResource
.map(AdministrativEnhetResource::getSystemId)
.map(Identifikator::getIdentifikatorverdi)
.ifPresent(builder::adminEnhetKortnavn);

administrativEnhetResource
.map(AdministrativEnhetResource::getNavn)
.ifPresent(builder::adminEnhetNavn);

return builder.build();
}

}
18 changes: 12 additions & 6 deletions src/main/java/no/fintlabs/InstanceConsumerConfiguration.java
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,7 @@
import org.springframework.web.util.UriComponentsBuilder;

import java.time.Duration;
import java.time.LocalDateTime;
import java.time.ZoneId;
import java.time.format.DateTimeFormatter;
import java.util.Optional;

Expand Down Expand Up @@ -168,7 +168,6 @@ private Optional<InstanceToDispatchEntity> storeJournalpostInstanceToDispatch(
tableName,
sourceApplicationInstanceId
)
.queryParam("sysparm_fields", "journalpostid,journalpostnr,journalposturl")
.queryParam("sysparm_query_no_domain", "true")
.toUriString();

Expand All @@ -188,21 +187,28 @@ private Optional<InstanceToDispatchEntity> storeSakInstanceToDispatch(
String sourceApplicationInstanceId,
String archiveInstanceId
) throws JsonProcessingException {
SakResource sakResource = caseRequestService.getByMappeId(archiveInstanceId).orElseThrow();

EgrunnervervSakInstanceToDispatch egrunnervervSakInstanceToDispatch = EgrunnervervSakInstanceToDispatch.builder()
.archiveInstanceId(archiveInstanceId)
.archivedTimestamp(LocalDateTime.now().format(DateTimeFormatter.ofPattern(EGRUNNERVERV_DATETIME_FORMAT)))
.arkivnummer(archiveInstanceId)
.opprettelse_i_elements_fullfort(
sakResource
.getOpprettetDato()
.toInstant()
.atZone(ZoneId.systemDefault())
.toLocalDateTime()
.format(DateTimeFormatter.ofPattern(EGRUNNERVERV_DATETIME_FORMAT))
)
.build();

String uri = UriComponentsBuilder.newInstance()
.pathSegment(
tableName,
sourceApplicationInstanceId
)
.queryParam("sysparm_fields", "u_elements,arkivnummer,u_opprettelse_i_elements_fullfort")
.queryParam("sysparm_query_no_domain", "true")
.toUriString();


InstanceToDispatchEntity instanceToDispatchEntity = InstanceToDispatchEntity.builder()
.sourceApplicationInstanceId(sourceApplicationInstanceId)
.instanceToDispatch(objectMapper.writeValueAsString(egrunnervervSakInstanceToDispatch))
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,7 @@
package no.fintlabs.kafka;

import no.fint.model.resource.administrasjon.personal.PersonalressursResource;
import no.fint.model.resource.arkiv.kodeverk.DokumentTypeResource;
import no.fint.model.resource.arkiv.kodeverk.JournalStatusResource;
import no.fint.model.resource.arkiv.kodeverk.JournalpostTypeResource;
import no.fint.model.resource.arkiv.kodeverk.TilgangsrestriksjonResource;
import no.fint.model.resource.arkiv.kodeverk.*;
import no.fint.model.resource.arkiv.noark.AdministrativEnhetResource;
import no.fint.model.resource.arkiv.noark.ArkivressursResource;
import no.fint.model.resource.felles.PersonResource;
Expand Down Expand Up @@ -44,6 +41,11 @@ FintCache<String, TilgangsrestriksjonResource> tilgangsrestriksjonResourceCache(
return createCache(TilgangsrestriksjonResource.class);
}

@Bean
FintCache<String, SkjermingshjemmelResource> skjermingshjemmelResourceCache() {
return createCache(SkjermingshjemmelResource.class);
}

@Bean
FintCache<String, JournalStatusResource> journalstatusResourceCache() {
return createCache(JournalStatusResource.class);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,10 +2,7 @@

import no.fint.model.resource.FintLinks;
import no.fint.model.resource.administrasjon.personal.PersonalressursResource;
import no.fint.model.resource.arkiv.kodeverk.DokumentTypeResource;
import no.fint.model.resource.arkiv.kodeverk.JournalStatusResource;
import no.fint.model.resource.arkiv.kodeverk.JournalpostTypeResource;
import no.fint.model.resource.arkiv.kodeverk.TilgangsrestriksjonResource;
import no.fint.model.resource.arkiv.kodeverk.*;
import no.fint.model.resource.arkiv.noark.AdministrativEnhetResource;
import no.fint.model.resource.arkiv.noark.ArkivressursResource;
import no.fint.model.resource.felles.PersonResource;
Expand Down Expand Up @@ -86,6 +83,17 @@ ConcurrentMessageListenerContainer<String, TilgangsrestriksjonResource> tilgangs
);
}

@Bean
ConcurrentMessageListenerContainer<String, SkjermingshjemmelResource> skjermingshjemmelResourceEntityConsumer(
FintCache<String, SkjermingshjemmelResource> skjermingshjemmelResourceCache
) {
return createCacheConsumer(
"arkiv.kodeverk.skjermingshjemmel",
SkjermingshjemmelResource.class,
skjermingshjemmelResourceCache
);
}

@Bean
ConcurrentMessageListenerContainer<String, JournalStatusResource> journalstatusResourceEntityConsumer(
FintCache<String, JournalStatusResource> journalStatusResourceCache
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,18 +2,25 @@

import lombok.Builder;
import lombok.Getter;
import lombok.extern.jackson.Jacksonized;
import lombok.ToString;

@Getter
@Builder
@Jacksonized
@ToString
public class EgrunnervervJournalpostInstanceToDispatch {
private final String journalpostnr;
private final String tittel;
private final String statusId;
private final String tilgangskode;
private final String hjemmel;
private final String dokumentDato;
private final String dokumentTypeId;
private final String dokumentTypeNavn;
private final String dokumentkategoriId;
private final String dokumentkategoriNavn;
private final String saksansvarligBrukernavn;
private final String saksansvarligNavn;
private final String adminEnhetKortnavn;
private final String adminEnhetNavn;
private final Long antallVedlegg;
}
Original file line number Diff line number Diff line change
@@ -1,18 +1,13 @@
package no.fintlabs.model;

import com.fasterxml.jackson.annotation.JsonProperty;
import lombok.Builder;
import lombok.Getter;
import lombok.extern.jackson.Jacksonized;
import lombok.ToString;

@Getter
@Builder
@Jacksonized
@ToString
public class EgrunnervervSakInstanceToDispatch {
@JsonProperty("arkivnummer")
private final String archiveInstanceId;
@JsonProperty("u_elements")
private final String urlToArchive;
@JsonProperty("opprettelse_i_elements_fullfort")
private final String archivedTimestamp;
private final String arkivnummer;
private final String opprettelse_i_elements_fullfort;
}

0 comments on commit c1293f4

Please sign in to comment.