From 888c723ef46d293293164068fde4964f5e13ee44 Mon Sep 17 00:00:00 2001 From: "Kristen.Herum" Date: Thu, 9 Jan 2025 14:58:13 +0100 Subject: [PATCH] Refactor document migration logic into separate methods #deploy-test-dolly-backend Separate logic for storing documents and templates into dedicated methods for improved readability and maintainability. Added logging and error handling to ensure better traceability and resilience during the migration process. --- .../dolly/service/MigrateDokumentService.java | 50 +++++++++++++------ 1 file changed, 35 insertions(+), 15 deletions(-) diff --git a/apps/dolly-backend/src/main/java/no/nav/dolly/service/MigrateDokumentService.java b/apps/dolly-backend/src/main/java/no/nav/dolly/service/MigrateDokumentService.java index ca7a7c8afc..c2633363c1 100644 --- a/apps/dolly-backend/src/main/java/no/nav/dolly/service/MigrateDokumentService.java +++ b/apps/dolly-backend/src/main/java/no/nav/dolly/service/MigrateDokumentService.java @@ -2,7 +2,6 @@ import com.fasterxml.jackson.core.JsonProcessingException; import com.fasterxml.jackson.databind.ObjectMapper; -import jakarta.transaction.Transactional; import lombok.RequiredArgsConstructor; import lombok.extern.slf4j.Slf4j; import no.nav.dolly.domain.jpa.Bestilling; @@ -36,7 +35,6 @@ public class MigrateDokumentService { private final DokumentRepository dokumentRepository; private final ObjectMapper objectMapper; - @Transactional public void migrateDokumenter() { migrateBestillinger(bestillingRepository.findAllByDokumentArkiv(), lagreDokarkiv(), BESTILLING_DOKARKIV); @@ -50,29 +48,51 @@ private void migrateMalBestillinger(Iterable query, TriConsumer { - var utvidetBestilling = fromJson(malBestilling.getBestKriterier(), malBestilling.getId()); - if (nonNull(utvidetBestilling)) { - lagreDokument.apply(utvidetBestilling, malBestilling.getId(), dokumentType); - var oppdatertBestilling = toJson(utvidetBestilling, malBestilling.getId()); - malBestilling.setBestKriterier(isNotBlank(oppdatertBestilling) ? oppdatertBestilling : malBestilling.getBestKriterier()); + try { + storeMalDokument(lagreDokument, dokumentType, malBestilling); + } catch (RuntimeException e) { + log.error("Lagring av malbestilling {} feilet: {} ", malBestilling.getId(), e.getMessage(), e); } }); } + public void storeMalDokument(TriConsumer lagreDokument, DokumentType dokumentType, BestillingMal malBestilling) { + + log.info("Migrerer malbestilling for id {} ... ", malBestilling.getId()); + var utvidetBestilling = fromJson(malBestilling.getBestKriterier(), malBestilling.getId()); + if (nonNull(utvidetBestilling)) { + lagreDokument.apply(utvidetBestilling, malBestilling.getId(), dokumentType); + var oppdatertBestilling = toJson(utvidetBestilling, malBestilling.getId()); + malBestilling.setBestKriterier(isNotBlank(oppdatertBestilling) ? oppdatertBestilling : malBestilling.getBestKriterier()); + } + log.info("Malbestilling med id {} ferdig!", malBestilling.getId()); + } + private void migrateBestillinger(Iterable query, TriConsumer lagreDokument, DokumentType dokumentType) { StreamSupport.stream(Spliterators.spliteratorUnknownSize( query.iterator(), Spliterator.ORDERED), false) .forEach(bestilling -> { - var utvidetBestilling = fromJson(bestilling.getBestKriterier(), bestilling.getId()); - if (nonNull(utvidetBestilling)) { - lagreDokument.apply(utvidetBestilling, bestilling.getId(), dokumentType); - var oppdatertBestilling = toJson(utvidetBestilling, bestilling.getId()); - bestilling.setBestKriterier(isNotBlank(oppdatertBestilling) ? oppdatertBestilling : bestilling.getBestKriterier()); + try { + storeDokument(lagreDokument, dokumentType, bestilling); + } catch (RuntimeException e) { + log.error("Lagring av bestilling {} feilet: {} ", bestilling.getId(), e.getMessage(), e); } }); } + public void storeDokument(TriConsumer lagreDokument, DokumentType dokumentType, Bestilling bestilling) { + + log.info("Migrerer bestilling for id {} ... ", bestilling.getId()); + var utvidetBestilling = fromJson(bestilling.getBestKriterier(), bestilling.getId()); + if (nonNull(utvidetBestilling)) { + lagreDokument.apply(utvidetBestilling, bestilling.getId(), dokumentType); + var oppdatertBestilling = toJson(utvidetBestilling, bestilling.getId()); + bestilling.setBestKriterier(isNotBlank(oppdatertBestilling) ? oppdatertBestilling : bestilling.getBestKriterier()); + } + log.info("Bestilling med id {} ferdig!", bestilling.getId()); + } + private TriConsumer lagreDokarkiv() { return (utvidetBestilling, bestillingId, dokumentType) -> @@ -80,7 +100,7 @@ private TriConsumer lagreDokarkiv( dokument.getDokumentvarianter().forEach(dokumentVariant -> { if (nonNull(dokumentVariant.getFysiskDokument())) { dokumentVariant.setDokumentReferanse( - lagreDokument(dokumentVariant.getFysiskDokument(), bestillingId, dokumentType)); + storeMalDokument(dokumentVariant.getFysiskDokument(), bestillingId, dokumentType)); dokumentVariant.setFysiskDokument(null); } })); @@ -92,13 +112,13 @@ private TriConsumer lagreHistark() utvidetBestilling.getHistark().getDokumenter().forEach(dokument -> { if (nonNull(dokument.getFysiskDokument())) { dokument.setDokumentReferanse( - lagreDokument(dokument.getFysiskDokument(), bestillingId, dokumentType)); + storeMalDokument(dokument.getFysiskDokument(), bestillingId, dokumentType)); dokument.setFysiskDokument(null); } }); } - private Long lagreDokument(String fysiskDokument, Long bestillingId, DokumentType dokumentType) { + private Long storeMalDokument(String fysiskDokument, Long bestillingId, DokumentType dokumentType) { return dokumentRepository.save(Dokument.builder() .contents(fysiskDokument)