From 4176531e11232c4f6fd0970adee9aca11c36be24 Mon Sep 17 00:00:00 2001 From: Ugur Cenar Date: Thu, 11 Jul 2024 20:43:07 +0200 Subject: [PATCH 1/3] Hent RTF dokument --- pom.xml | 62 ++++++++++++++++--- .../consumer/BidragDokumentConsumer.kt | 14 +++-- .../dokument/controller/DokumentController.kt | 28 +++++++-- .../dokument/service/DokumentService.kt | 46 +++++++++----- .../dokument/CorrelationIdFilterTest.kt | 10 ++- 5 files changed, 123 insertions(+), 37 deletions(-) diff --git a/pom.xml b/pom.xml index 665f119c..843b50fa 100644 --- a/pom.xml +++ b/pom.xml @@ -14,7 +14,7 @@ org.springframework.boot spring-boot-starter-parent - 3.2.0 + 3.3.1 @@ -22,10 +22,10 @@ 21 - 1.9.22 + 2.0.0 - 2024.04.15.133925 + 2024.07.10.131205 7.4 2.3.0 4.1.0 @@ -36,7 +36,7 @@ 3.0.5 - 3.4.0 + 3.5.0 3.8.0 2.22.0 UTF-8 @@ -51,6 +51,11 @@ GitHub felles Apache Maven Packages for navikt https://maven.pkg.github.com/navikt/maven-release/ + + maven_central + Maven Central + https://repo.maven.apache.org/maven2/ + @@ -143,13 +148,13 @@ ch.qos.logback logback-core - 1.4.14 + 1.5.6 ch.qos.logback logback-classic - 1.4.14 + 1.5.6 @@ -269,6 +274,17 @@ + + org.jetbrains.kotlin + kotlin-stdlib-jdk8 + ${kotlin.version} + + + org.jetbrains.kotlin + kotlin-test + ${kotlin.version} + test + @@ -289,14 +305,14 @@ compile - process-sources + compile compile src/main/java - src/main/kotlin + target/generated-sources/annotations @@ -309,7 +325,7 @@ src/test/java - src/test/kotlin + target/generated-test-sources/test-annotations @@ -420,6 +436,34 @@ + + org.apache.maven.plugins + maven-compiler-plugin + + + default-compile + none + + + default-testCompile + none + + + compile + compile + + compile + + + + testCompile + test-compile + + testCompile + + + + diff --git a/src/main/java/no/nav/bidrag/dokument/consumer/BidragDokumentConsumer.kt b/src/main/java/no/nav/bidrag/dokument/consumer/BidragDokumentConsumer.kt index d6a37c9c..93829934 100644 --- a/src/main/java/no/nav/bidrag/dokument/consumer/BidragDokumentConsumer.kt +++ b/src/main/java/no/nav/bidrag/dokument/consumer/BidragDokumentConsumer.kt @@ -183,11 +183,13 @@ class BidragDokumentConsumer( fun hentDokument( journalpostId: String?, dokumentreferanse: String?, + rtf: Boolean = false, ): ResponseEntity { - if (journalpostId.isNullOrEmpty()) return hentDokument(dokumentreferanse) + if (journalpostId.isNullOrEmpty()) return hentDokument(dokumentreferanse, rtf) val dokumentReferanseUrl = if (!dokumentreferanse.isNullOrEmpty()) "/$dokumentreferanse" else "" - val dokumentUrl = String.format(PATH_HENT_DOKUMENT, journalpostId) + dokumentReferanseUrl + val rtfQuery = if (rtf) "?rtf=true" else "" + val dokumentUrl = String.format(PATH_HENT_DOKUMENT, journalpostId) + dokumentReferanseUrl + rtfQuery return restTemplate.exchange( dokumentUrl, HttpMethod.GET, @@ -226,8 +228,12 @@ class BidragDokumentConsumer( ).body } - fun hentDokument(dokumentreferanse: String?): ResponseEntity { - val dokumentUrl = String.format(PATH_HENT_DOKUMENT_REFERANSE, dokumentreferanse) + fun hentDokument( + dokumentreferanse: String?, + rtf: Boolean = false, + ): ResponseEntity { + val rtfQuery = if (rtf) "?rtf=true" else "" + val dokumentUrl = String.format(PATH_HENT_DOKUMENT_REFERANSE, dokumentreferanse) + rtfQuery return restTemplate.exchange( dokumentUrl, HttpMethod.GET, diff --git a/src/main/java/no/nav/bidrag/dokument/controller/DokumentController.kt b/src/main/java/no/nav/bidrag/dokument/controller/DokumentController.kt index fab6a1ef..bde2f068 100644 --- a/src/main/java/no/nav/bidrag/dokument/controller/DokumentController.kt +++ b/src/main/java/no/nav/bidrag/dokument/controller/DokumentController.kt @@ -50,6 +50,25 @@ class DokumentController(private val dokumentService: DokumentService) { return dokumentService.hentDokumentMetadata(dokument) } + @GetMapping( + *[ + "/dokument/rtf/{journalpostId}/{dokumentreferanse}", "/dokument/rtf/{journalpostId}", + "/dokumentreferanse/rtf/{dokumentreferanse}", + ], + ) + fun hentDokumentRTF( + @PathVariable journalpostId: String?, + @PathVariable(required = false) dokumentreferanse: String?, + @RequestParam(required = false) resizeToA4: Boolean, + @RequestParam(required = false, defaultValue = "true") optimizeForPrint: Boolean, + ): ResponseEntity { + log.info("Henter RTF dokument med journalpostId=$journalpostId og dokumentreferanse=$dokumentreferanse, resizeToA4=$resizeToA4") + val dokument = DokumentRef(journalpostId, dokumentreferanse, null) + val response = + dokumentService.hentDokumentRTF(dokument) + return response + } + @GetMapping(*["/dokument/{journalpostId}/{dokumentreferanse}", "/dokument/{journalpostId}", "/dokumentreferanse/{dokumentreferanse}"]) fun hentDokument( @PathVariable journalpostId: String?, @@ -96,10 +115,11 @@ class DokumentController(private val dokumentService: DokumentService) { @RequestParam(required = false) resizeToA4: Boolean, ): ResponseEntity { log.info("Henter dokumenter $dokumentreferanseList med resizeToA4=$resizeToA4, optimizeForPrint=$optimizeForPrint") - val response = dokumentService.hentDokumenter( - dokumentreferanseList, - DocumentProperties(resizeToA4, optimizeForPrint), - ) + val response = + dokumentService.hentDokumenter( + dokumentreferanseList, + DocumentProperties(resizeToA4, optimizeForPrint), + ) response.body?.also { log.info( diff --git a/src/main/java/no/nav/bidrag/dokument/service/DokumentService.kt b/src/main/java/no/nav/bidrag/dokument/service/DokumentService.kt index 74932bfe..ae22bc70 100644 --- a/src/main/java/no/nav/bidrag/dokument/service/DokumentService.kt +++ b/src/main/java/no/nav/bidrag/dokument/service/DokumentService.kt @@ -72,10 +72,17 @@ class DokumentService( .body(response.body?.let { PDFDokumentProcessor().process(it, documentProperties) }) } + @Timed("hentDokument") + fun hentDokumentRTF(_dokumentRef: DokumentRef): ResponseEntity { + val response = bidragJournalpostConsumer.hentDokument(_dokumentRef.journalpostId, _dokumentRef.dokumentId, true) + return ResponseEntity.ok() + .contentType(MediaType.APPLICATION_OCTET_STREAM) + .header(HttpHeaders.CONTENT_DISPOSITION, response.headers.contentDisposition.toString()) + .body(response.body) + } + @Timed("erFerdigstilt") - fun erFerdigstilt( - dokumentreferanse: String, - ): ResponseEntity { + fun erFerdigstilt(dokumentreferanse: String): ResponseEntity { return bidragJournalpostConsumer.erFerdigstilt(dokumentreferanse) } @@ -88,9 +95,12 @@ class DokumentService( return hentDokumenterData(dokumenter, documentProperties) } - private fun hentDokumentData(dokument: DokumentRef): ResponseEntity { + private fun hentDokumentData( + dokument: DokumentRef, + rtf: Boolean = false, + ): ResponseEntity { return if (dokument.erForKilde(Kilde.MIDLERTIDLIG_BREVLAGER)) { - bidragJournalpostConsumer.hentDokument(dokument.journalpostId, dokument.dokumentId) + bidragJournalpostConsumer.hentDokument(dokument.journalpostId, dokument.dokumentId, rtf) } else if (dokument.erForKilde(Kilde.FORSENDELSE)) { bidragForsendelseConsumer.hentDokument(dokument.journalpostId, dokument.dokumentId) } else { @@ -137,12 +147,13 @@ class DokumentService( documentProperties: DocumentProperties, ): ByteArray { documentProperties.numberOfDocuments = dokumentList.size - val dokumentBytes = dokumentList.map { - hentDokument( - it, - DocumentProperties(documentProperties, dokumentList.indexOf(it)), - ).body!! - } + val dokumentBytes = + dokumentList.map { + hentDokument( + it, + DocumentProperties(documentProperties, dokumentList.indexOf(it)), + ).body!! + } return PDFDokumentMerger.merge(dokumentBytes, documentProperties) } @@ -155,12 +166,13 @@ class DokumentService( return DokumentRef( journalpostId = dokument.journalpostId, dokumentId = dokument.dokumentreferanse, - kilde = when (dokument.arkivsystem) { - DokumentArkivSystemDto.MIDLERTIDLIG_BREVLAGER -> Kilde.MIDLERTIDLIG_BREVLAGER - DokumentArkivSystemDto.JOARK -> Kilde.JOARK - DokumentArkivSystemDto.BIDRAG -> Kilde.FORSENDELSE - else -> null - }, + kilde = + when (dokument.arkivsystem) { + DokumentArkivSystemDto.MIDLERTIDLIG_BREVLAGER -> Kilde.MIDLERTIDLIG_BREVLAGER + DokumentArkivSystemDto.JOARK -> Kilde.JOARK + DokumentArkivSystemDto.BIDRAG -> Kilde.FORSENDELSE + else -> null + }, ) } diff --git a/src/test/java/no/nav/bidrag/dokument/CorrelationIdFilterTest.kt b/src/test/java/no/nav/bidrag/dokument/CorrelationIdFilterTest.kt index ed469706..1197a86f 100644 --- a/src/test/java/no/nav/bidrag/dokument/CorrelationIdFilterTest.kt +++ b/src/test/java/no/nav/bidrag/dokument/CorrelationIdFilterTest.kt @@ -63,13 +63,17 @@ internal class CorrelationIdFilterTest { ) } returns HttpResponse.from(HttpStatus.I_AM_A_TEAPOT) val response = - securedTestRestTemplate.getForEntity("http://localhost:$port/bidrag-dokument/journal/BID-123?saksnummer=777") + securedTestRestTemplate + .getForEntity("http://localhost:$port/bidrag-dokument/journal/BID-123?saksnummer=777") assertSoftly { - Assertions.assertThat(response).extracting { it.statusCode } + Assertions + .assertThat(response) + .extracting { it.statusCode } .isEqualTo(HttpStatus.I_AM_A_TEAPOT); { val loggingEventCaptor = ArgumentCaptor.forClass(ILoggingEvent::class.java) - Mockito.verify(appenderMock, Mockito.atLeastOnce()) + Mockito + .verify(appenderMock, Mockito.atLeastOnce()) .doAppend(loggingEventCaptor.capture()) } } From 0160dff560288734010f81096153de26e9e46138 Mon Sep 17 00:00:00 2001 From: Ugur Cenar Date: Thu, 11 Jul 2024 20:46:51 +0200 Subject: [PATCH 2/3] Hent RTF dokument --- .../nav/bidrag/dokument/service/DokumentService.kt | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/src/main/java/no/nav/bidrag/dokument/service/DokumentService.kt b/src/main/java/no/nav/bidrag/dokument/service/DokumentService.kt index ae22bc70..b6b896d7 100644 --- a/src/main/java/no/nav/bidrag/dokument/service/DokumentService.kt +++ b/src/main/java/no/nav/bidrag/dokument/service/DokumentService.kt @@ -167,12 +167,12 @@ class DokumentService( journalpostId = dokument.journalpostId, dokumentId = dokument.dokumentreferanse, kilde = - when (dokument.arkivsystem) { - DokumentArkivSystemDto.MIDLERTIDLIG_BREVLAGER -> Kilde.MIDLERTIDLIG_BREVLAGER - DokumentArkivSystemDto.JOARK -> Kilde.JOARK - DokumentArkivSystemDto.BIDRAG -> Kilde.FORSENDELSE - else -> null - }, + when (dokument.arkivsystem) { + DokumentArkivSystemDto.MIDLERTIDLIG_BREVLAGER -> Kilde.MIDLERTIDLIG_BREVLAGER + DokumentArkivSystemDto.JOARK -> Kilde.JOARK + DokumentArkivSystemDto.BIDRAG -> Kilde.FORSENDELSE + else -> null + }, ) } From 0af72c16fb480ca9b2e91a86b3e8afd55aa3b278 Mon Sep 17 00:00:00 2001 From: Ugur Alpay Cenar Date: Wed, 7 Aug 2024 16:41:22 +0200 Subject: [PATCH 3/3] Rtf endepunkt --- .../nav/bidrag/dokument/controller/DokumentController.kt | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/main/java/no/nav/bidrag/dokument/controller/DokumentController.kt b/src/main/java/no/nav/bidrag/dokument/controller/DokumentController.kt index bde2f068..7879fff2 100644 --- a/src/main/java/no/nav/bidrag/dokument/controller/DokumentController.kt +++ b/src/main/java/no/nav/bidrag/dokument/controller/DokumentController.kt @@ -75,11 +75,12 @@ class DokumentController(private val dokumentService: DokumentService) { @PathVariable(required = false) dokumentreferanse: String?, @RequestParam(required = false) resizeToA4: Boolean, @RequestParam(required = false, defaultValue = "true") optimizeForPrint: Boolean, - ): ResponseEntity { - log.info("Henter dokument med journalpostId=$journalpostId og dokumentreferanse=$dokumentreferanse, resizeToA4=$resizeToA4") + @RequestParam("rtf", required = false) rtfFile: Boolean = false, + ): ResponseEntity { + log.info("Henter dokument med journalpostId=$journalpostId og dokumentreferanse=$dokumentreferanse, resizeToA4=$resizeToA4, rtfFile=$rtfFile") val dokument = DokumentRef(journalpostId, dokumentreferanse, null) val response = - dokumentService.hentDokument(dokument, DocumentProperties(resizeToA4, optimizeForPrint)) + if (rtfFile) dokumentService.hentDokumentRTF(dokument) else dokumentService.hentDokument(dokument, DocumentProperties(resizeToA4, optimizeForPrint)) response.body ?.also {