Skip to content

Commit 5dac3c6

Browse files
committed
Splitt ut typer fra BrevService.kt
1 parent 1cf96e2 commit 5dac3c6

File tree

8 files changed

+152
-141
lines changed

8 files changed

+152
-141
lines changed

service/src/main/kotlin/no/nav/su/se/bakover/service/dokument/DistribuerDokumentService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ import dokument.domain.brev.KunneIkkeDistribuereBrev
1313
import dokument.domain.distribuering.DokDistFordeling
1414
import no.nav.su.se.bakover.common.journal.JournalpostId
1515
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsResultat
16-
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsResultat.Companion.logResultat
1716
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsResultat.Companion.tilResultat
17+
import no.nav.su.se.bakover.service.journalføring.logResultat
1818
import org.slf4j.Logger
1919
import org.slf4j.LoggerFactory
2020

service/src/main/kotlin/no/nav/su/se/bakover/service/dokument/JournalførDokumentService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,8 +13,8 @@ import dokument.domain.journalføring.brev.JournalførBrevCommand
1313
import no.nav.su.se.bakover.common.journal.JournalpostId
1414
import no.nav.su.se.bakover.domain.sak.SakService
1515
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsResultat
16-
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsResultat.Companion.logResultat
1716
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsResultat.Companion.tilResultat
17+
import no.nav.su.se.bakover.service.journalføring.logResultat
1818
import org.slf4j.Logger
1919
import org.slf4j.LoggerFactory
2020

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
package no.nav.su.se.bakover.service.journalføring
2+
3+
import dokument.domain.brev.KunneIkkeBestilleBrevForDokument
4+
import dokument.domain.brev.KunneIkkeJournalføreDokument
5+
6+
sealed interface JournalføringOgDistribueringsFeil {
7+
@JvmInline
8+
value class Distribuering(
9+
val originalFeil: KunneIkkeBestilleBrevForDokument,
10+
) : JournalføringOgDistribueringsFeil
11+
12+
@JvmInline
13+
value class Journalføring(val originalFeil: KunneIkkeJournalføreDokument) : JournalføringOgDistribueringsFeil
14+
}
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,130 @@
1+
package no.nav.su.se.bakover.service.journalføring
2+
3+
import arrow.core.Either
4+
import dokument.domain.Dokumentdistribusjon
5+
import dokument.domain.brev.BrevbestillingId
6+
import dokument.domain.brev.KunneIkkeBestilleBrevForDokument
7+
import dokument.domain.brev.KunneIkkeJournalføreDokument
8+
import no.nav.su.se.bakover.common.journal.JournalpostId
9+
import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty
10+
import org.slf4j.Logger
11+
import vilkår.skatt.domain.Skattedokument
12+
import java.util.UUID
13+
14+
sealed interface JournalføringOgDistribueringsResultat {
15+
val id: UUID
16+
val journalpostId: JournalpostId?
17+
val brevbestillingsId: BrevbestillingId?
18+
19+
data class Ok(
20+
override val id: UUID,
21+
override val journalpostId: JournalpostId?,
22+
override val brevbestillingsId: BrevbestillingId?,
23+
) : JournalføringOgDistribueringsResultat
24+
25+
data class Feil(
26+
override val id: UUID,
27+
override val journalpostId: JournalpostId?,
28+
val originalFeil: JournalføringOgDistribueringsFeil,
29+
) : JournalføringOgDistribueringsResultat {
30+
override val brevbestillingsId: BrevbestillingId? = null
31+
}
32+
33+
companion object {
34+
/**
35+
* dokumentdistribusjonen må for i feil-caser
36+
*/
37+
@JvmName("dokumentDistribusjonTilResultat")
38+
fun Either<KunneIkkeBestilleBrevForDokument, Dokumentdistribusjon>.tilResultat(
39+
dokument: Dokumentdistribusjon,
40+
log: Logger,
41+
): JournalføringOgDistribueringsResultat {
42+
return this.fold(
43+
ifLeft = {
44+
log.error(
45+
"Kunne ikke distribuere dokument ${dokument.id}: $it",
46+
RuntimeException("Genererer en stacktrace for enklere debugging."),
47+
)
48+
Feil(
49+
dokument.id,
50+
dokument.journalføringOgBrevdistribusjon.journalpostId(),
51+
JournalføringOgDistribueringsFeil.Distribuering(it),
52+
)
53+
},
54+
ifRight = {
55+
Ok(
56+
it.id,
57+
it.journalføringOgBrevdistribusjon.journalpostId(),
58+
it.journalføringOgBrevdistribusjon.brevbestillingsId(),
59+
)
60+
},
61+
)
62+
}
63+
64+
/**
65+
* dokumentdistribusjonen må for i feil-caser
66+
*/
67+
fun Either<KunneIkkeJournalføreDokument, Dokumentdistribusjon>.tilResultat(
68+
dokument: Dokumentdistribusjon,
69+
log: Logger,
70+
): JournalføringOgDistribueringsResultat {
71+
return this.fold(
72+
ifLeft = {
73+
log.error(
74+
"Kunne ikke journalføre dokument ${dokument.id}: $it",
75+
RuntimeException("Genererer en stacktrace for enklere debugging."),
76+
)
77+
Feil(
78+
dokument.id,
79+
dokument.journalføringOgBrevdistribusjon.journalpostId(),
80+
JournalføringOgDistribueringsFeil.Journalføring(it),
81+
)
82+
},
83+
ifRight = {
84+
Ok(
85+
it.id,
86+
it.journalføringOgBrevdistribusjon.journalpostId(),
87+
it.journalføringOgBrevdistribusjon.brevbestillingsId(),
88+
)
89+
},
90+
)
91+
}
92+
93+
@JvmName("skattedokumentTilReesultat")
94+
fun Either<KunneIkkeJournalføreDokument, Skattedokument.Journalført>.tilResultat(
95+
skattedokument: Skattedokument.Generert,
96+
log: Logger,
97+
): JournalføringOgDistribueringsResultat {
98+
return this.fold(
99+
ifLeft = {
100+
log.error(
101+
"Kunne ikke journalføre skattedokument ${skattedokument.id}: $it",
102+
RuntimeException("Genererer en stacktrace for enklere debugging."),
103+
)
104+
Feil(
105+
skattedokument.id,
106+
skattedokument.journalpostid,
107+
JournalføringOgDistribueringsFeil.Journalføring(it),
108+
)
109+
},
110+
ifRight = { Ok(it.id, it.journalpostid, null) },
111+
)
112+
}
113+
}
114+
}
115+
fun List<JournalføringOgDistribueringsResultat>.logResultat(logContext: String, log: Logger) {
116+
this.ifNotEmpty {
117+
val ok = this.ok()
118+
val feil = this.feil()
119+
if (feil.isEmpty()) {
120+
log.info("$logContext $ok")
121+
} else {
122+
log.error("$logContext feilet: $feil. Disse gikk ok: $ok")
123+
}
124+
}
125+
}
126+
fun List<JournalføringOgDistribueringsResultat>.ok(): List<UUID> =
127+
this.filterIsInstance<JournalføringOgDistribueringsResultat.Ok>().map { it.id }
128+
129+
fun List<JournalføringOgDistribueringsResultat>.feil() =
130+
this.filterIsInstance<JournalføringOgDistribueringsResultat.Feil>().map { it.id }
Lines changed: 0 additions & 135 deletions
Original file line numberDiff line numberDiff line change
@@ -1,17 +1,7 @@
11
package no.nav.su.se.bakover.service.journalføring
22

3-
import arrow.core.Either
4-
import dokument.domain.Dokumentdistribusjon
5-
import dokument.domain.brev.BrevbestillingId
6-
import dokument.domain.brev.KunneIkkeBestilleBrevForDokument
7-
import dokument.domain.brev.KunneIkkeJournalføreDokument
8-
import no.nav.su.se.bakover.common.journal.JournalpostId
93
import no.nav.su.se.bakover.service.dokument.JournalførDokumentService
104
import no.nav.su.se.bakover.service.skatt.JournalførSkattDokumentService
11-
import org.jetbrains.kotlin.utils.addToStdlib.ifNotEmpty
12-
import org.slf4j.Logger
13-
import vilkår.skatt.domain.Skattedokument
14-
import java.util.UUID
155

166
/**
177
* Wrapper klasse som kaller journalfør() for alle klasser. ment for å bli kallt fra en jobb.
@@ -25,128 +15,3 @@ class JournalføringService(
2515
journalførSkattDokumentService.journalførAlleSkattedokumenterPåSak()
2616
}
2717
}
28-
29-
sealed interface JournalføringOgDistribueringsResultat {
30-
val id: UUID
31-
val journalpostId: JournalpostId?
32-
val brevbestillingsId: BrevbestillingId?
33-
34-
data class Ok(
35-
override val id: UUID,
36-
override val journalpostId: JournalpostId?,
37-
override val brevbestillingsId: BrevbestillingId?,
38-
) : JournalføringOgDistribueringsResultat
39-
40-
data class Feil(
41-
override val id: UUID,
42-
override val journalpostId: JournalpostId?,
43-
val originalFeil: JournalføringOgDistribueringsFeil,
44-
) : JournalføringOgDistribueringsResultat {
45-
override val brevbestillingsId: BrevbestillingId? = null
46-
}
47-
48-
sealed interface JournalføringOgDistribueringsFeil {
49-
@JvmInline
50-
value class Distribuering(val originalFeil: KunneIkkeBestilleBrevForDokument) :
51-
JournalføringOgDistribueringsFeil
52-
53-
@JvmInline
54-
value class Journalføring(val originalFeil: KunneIkkeJournalføreDokument) : JournalføringOgDistribueringsFeil
55-
}
56-
57-
companion object {
58-
fun List<JournalføringOgDistribueringsResultat>.ok() = this.filterIsInstance<Ok>().map { it.id }
59-
fun List<JournalføringOgDistribueringsResultat>.feil() = this.filterIsInstance<Feil>().map { it.id }
60-
fun List<JournalføringOgDistribueringsResultat>.logResultat(logContext: String, log: Logger) {
61-
this.ifNotEmpty {
62-
val ok = this.ok()
63-
val feil = this.feil()
64-
if (feil.isEmpty()) {
65-
log.info("$logContext $ok")
66-
} else {
67-
log.error("$logContext feilet: $feil. Disse gikk ok: $ok")
68-
}
69-
}
70-
}
71-
72-
/**
73-
* dokumentdistribusjonen må for i feil-caser
74-
*/
75-
@JvmName("dokumentDistribusjonTilResultat")
76-
fun Either<KunneIkkeBestilleBrevForDokument, Dokumentdistribusjon>.tilResultat(
77-
dokument: Dokumentdistribusjon,
78-
log: Logger,
79-
): JournalføringOgDistribueringsResultat {
80-
return this.fold(
81-
ifLeft = {
82-
log.error(
83-
"Kunne ikke distribuere dokument ${dokument.id}: $it",
84-
RuntimeException("Genererer en stacktrace for enklere debugging."),
85-
)
86-
Feil(
87-
dokument.id,
88-
dokument.journalføringOgBrevdistribusjon.journalpostId(),
89-
JournalføringOgDistribueringsFeil.Distribuering(it),
90-
)
91-
},
92-
ifRight = {
93-
Ok(
94-
it.id,
95-
it.journalføringOgBrevdistribusjon.journalpostId(),
96-
it.journalføringOgBrevdistribusjon.brevbestillingsId(),
97-
)
98-
},
99-
)
100-
}
101-
102-
/**
103-
* dokumentdistribusjonen må for i feil-caser
104-
*/
105-
fun Either<KunneIkkeJournalføreDokument, Dokumentdistribusjon>.tilResultat(
106-
dokument: Dokumentdistribusjon,
107-
log: Logger,
108-
): JournalføringOgDistribueringsResultat {
109-
return this.fold(
110-
ifLeft = {
111-
log.error(
112-
"Kunne ikke journalføre dokument ${dokument.id}: $it",
113-
RuntimeException("Genererer en stacktrace for enklere debugging."),
114-
)
115-
Feil(
116-
dokument.id,
117-
dokument.journalføringOgBrevdistribusjon.journalpostId(),
118-
JournalføringOgDistribueringsFeil.Journalføring(it),
119-
)
120-
},
121-
ifRight = {
122-
Ok(
123-
it.id,
124-
it.journalføringOgBrevdistribusjon.journalpostId(),
125-
it.journalføringOgBrevdistribusjon.brevbestillingsId(),
126-
)
127-
},
128-
)
129-
}
130-
131-
@JvmName("skattedokumentTilReesultat")
132-
fun Either<KunneIkkeJournalføreDokument, Skattedokument.Journalført>.tilResultat(
133-
skattedokument: Skattedokument.Generert,
134-
log: Logger,
135-
): JournalføringOgDistribueringsResultat {
136-
return this.fold(
137-
ifLeft = {
138-
log.error(
139-
"Kunne ikke journalføre skattedokument ${skattedokument.id}: $it",
140-
RuntimeException("Genererer en stacktrace for enklere debugging."),
141-
)
142-
Feil(
143-
skattedokument.id,
144-
skattedokument.journalpostid,
145-
JournalføringOgDistribueringsFeil.Journalføring(it),
146-
)
147-
},
148-
ifRight = { Ok(it.id, it.journalpostid, null) },
149-
)
150-
}
151-
}
152-
}

service/src/main/kotlin/no/nav/su/se/bakover/service/skatt/JournalførSkattDokumentService.kt

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,8 @@ import dokument.domain.brev.KunneIkkeJournalføreDokument
66
import no.nav.su.se.bakover.common.journal.JournalpostId
77
import no.nav.su.se.bakover.domain.sak.SakService
88
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsResultat
9-
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsResultat.Companion.logResultat
109
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsResultat.Companion.tilResultat
10+
import no.nav.su.se.bakover.service.journalføring.logResultat
1111
import org.slf4j.Logger
1212
import org.slf4j.LoggerFactory
1313
import vilkår.skatt.domain.DokumentSkattRepo

service/src/test/kotlin/no/nav/su/se/bakover/service/dokument/DistribuerDokumentServiceTest.kt

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ import io.kotest.matchers.types.shouldBeInstanceOf
1717
import no.nav.su.se.bakover.common.journal.JournalpostId
1818
import no.nav.su.se.bakover.common.person.AktørId
1919
import no.nav.su.se.bakover.common.person.Ident
20+
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsFeil
2021
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsResultat
2122
import no.nav.su.se.bakover.test.argThat
2223
import no.nav.su.se.bakover.test.fixedTidspunkt
@@ -94,7 +95,7 @@ internal class DistribuerDokumentServiceTest {
9495
it.first().shouldBeInstanceOf<JournalføringOgDistribueringsResultat.Feil>()
9596
it.first().id shouldBe dokumentdistribusjon.id
9697
(it.first() as JournalføringOgDistribueringsResultat.Feil).originalFeil shouldBe
97-
JournalføringOgDistribueringsResultat.JournalføringOgDistribueringsFeil.Distribuering(
98+
JournalføringOgDistribueringsFeil.Distribuering(
9899
KunneIkkeBestilleBrevForDokument.MåJournalføresFørst,
99100
)
100101
}
@@ -149,7 +150,7 @@ internal class DistribuerDokumentServiceTest {
149150
it.first().shouldBeInstanceOf<JournalføringOgDistribueringsResultat.Feil>()
150151
it.first().id shouldBe dokumentdistribusjon.id
151152
(it.first() as JournalføringOgDistribueringsResultat.Feil).originalFeil shouldBe
152-
JournalføringOgDistribueringsResultat.JournalføringOgDistribueringsFeil.Distribuering(
153+
JournalføringOgDistribueringsFeil.Distribuering(
153154
KunneIkkeBestilleBrevForDokument.FeilVedBestillingAvBrev,
154155
)
155156
}

service/src/test/kotlin/no/nav/su/se/bakover/service/dokument/JournalførDokumentServiceTest.kt

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@ import no.nav.su.se.bakover.common.domain.sak.SakInfo
1515
import no.nav.su.se.bakover.common.domain.sak.Sakstype
1616
import no.nav.su.se.bakover.common.journal.JournalpostId
1717
import no.nav.su.se.bakover.domain.sak.SakService
18+
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsFeil
1819
import no.nav.su.se.bakover.service.journalføring.JournalføringOgDistribueringsResultat
1920
import no.nav.su.se.bakover.test.argThat
2021
import no.nav.su.se.bakover.test.fixedTidspunkt
@@ -55,7 +56,7 @@ class JournalførDokumentServiceTest {
5556
it.first().id shouldBe dokumentdistribusjon.id
5657
it.first().journalpostId shouldBe null
5758
it.first().brevbestillingsId shouldBe null
58-
(it.first() as JournalføringOgDistribueringsResultat.Feil).originalFeil shouldBe JournalføringOgDistribueringsResultat.JournalføringOgDistribueringsFeil.Journalføring(
59+
(it.first() as JournalføringOgDistribueringsResultat.Feil).originalFeil shouldBe JournalføringOgDistribueringsFeil.Journalføring(
5960
KunneIkkeJournalføreDokument.FeilVedOpprettelseAvJournalpost,
6061
)
6162
}

0 commit comments

Comments
 (0)