diff --git a/app/src/main/kotlin/no/nav/aap/brev/prosessering/ProsesserStegService.kt b/app/src/main/kotlin/no/nav/aap/brev/prosessering/ProsesserStegService.kt index 6aed446..8d5af68 100644 --- a/app/src/main/kotlin/no/nav/aap/brev/prosessering/ProsesserStegService.kt +++ b/app/src/main/kotlin/no/nav/aap/brev/prosessering/ProsesserStegService.kt @@ -54,53 +54,3 @@ class ProsesserStegService( } } } - -class ProsesseringFlyt private constructor( - private val rekkefølge: List, - private val stegTilUtfall: HashMap, - private val utfallTilSteg: HashMap, -) { - - fun fraStatus(prosesseringStatus: ProsesseringStatus?): List { - if (prosesseringStatus == null) { - return rekkefølge - } - val stegForUtfall = utfallTilSteg[prosesseringStatus] - ?: throw IllegalStateException("Uforventet oppslag av udefinert steg for status $prosesseringStatus") - return rekkefølge.dropWhile { it != stegForUtfall }.drop(1) - } - - fun utfall(steg: Steg): ProsesseringStatus { - return stegTilUtfall[steg] - ?: throw IllegalStateException("Uforventet oppslag av udefinert utfall for steg $steg") - } - - class Builder { - private val rekkefølge = mutableListOf() - private val stegTilUtfall = mutableMapOf() - private val utfallTilSteg = mutableMapOf() - - fun med(steg: Steg, utfall: ProsesseringStatus): Builder { - if (rekkefølge.contains(steg)) { - throw IllegalStateException("Steg $steg er allerede lagt til: $rekkefølge") - } - rekkefølge.add(steg) - stegTilUtfall.put(steg, utfall) - utfallTilSteg.put(utfall, steg) - - return this - } - - fun build(): ProsesseringFlyt { - if (rekkefølge.isEmpty()) { - throw IllegalStateException("Ingen steg å prosessere.") - } - - return ProsesseringFlyt( - rekkefølge = rekkefølge, - stegTilUtfall = HashMap(stegTilUtfall), - utfallTilSteg = HashMap(utfallTilSteg), - ) - } - } -} diff --git a/app/src/main/kotlin/no/nav/aap/brev/prosessering/ProsesseringFlyt.kt b/app/src/main/kotlin/no/nav/aap/brev/prosessering/ProsesseringFlyt.kt new file mode 100644 index 0000000..a3ddb25 --- /dev/null +++ b/app/src/main/kotlin/no/nav/aap/brev/prosessering/ProsesseringFlyt.kt @@ -0,0 +1,54 @@ +package no.nav.aap.brev.prosessering + +import no.nav.aap.brev.domene.ProsesseringStatus +import no.nav.aap.brev.prosessering.steg.Steg + +class ProsesseringFlyt private constructor( + private val rekkefølge: List, + private val stegTilUtfall: HashMap, + private val utfallTilSteg: HashMap, +) { + + fun fraStatus(prosesseringStatus: ProsesseringStatus?): List { + if (prosesseringStatus == null) { + return rekkefølge + } + val stegForUtfall = utfallTilSteg[prosesseringStatus] + ?: throw IllegalStateException("Uforventet oppslag av udefinert steg for status $prosesseringStatus") + return rekkefølge.dropWhile { it != stegForUtfall }.drop(1) + } + + fun utfall(steg: Steg): ProsesseringStatus { + return stegTilUtfall[steg] + ?: throw IllegalStateException("Uforventet oppslag av udefinert utfall for steg $steg") + } + + class Builder { + private val rekkefølge = mutableListOf() + private val stegTilUtfall = mutableMapOf() + private val utfallTilSteg = mutableMapOf() + + fun med(steg: Steg, utfall: ProsesseringStatus): Builder { + if (rekkefølge.contains(steg)) { + throw IllegalStateException("Steg $steg er allerede lagt til: $rekkefølge") + } + rekkefølge.add(steg) + stegTilUtfall.put(steg, utfall) + utfallTilSteg.put(utfall, steg) + + return this + } + + fun build(): ProsesseringFlyt { + if (rekkefølge.isEmpty()) { + throw IllegalStateException("Ingen steg å prosessere.") + } + + return ProsesseringFlyt( + rekkefølge = rekkefølge, + stegTilUtfall = HashMap(stegTilUtfall), + utfallTilSteg = HashMap(utfallTilSteg), + ) + } + } +}