Skip to content

Commit 5dac74e

Browse files
authored
Refaktorering etter endringer i felles grunnlag objekter (#130)
* Refaktorering etter endringer i felles grunnlag objekter * Refaktorering etter endringer i felles grunnlag objekter
1 parent a49f6b0 commit 5dac74e

31 files changed

+139
-149
lines changed

bidrag-beregn-core/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
<parent>
44
<groupId>no.nav.bidrag</groupId>
55
<artifactId>bidrag-beregn-felles</artifactId>
6-
<version>${revision}</version>
6+
<version>1.0-SNAPSHOT</version>
77
</parent>
88

99
<artifactId>bidrag-beregn-core</artifactId>

bidrag-beregn-forskudd/pom.xml

+1-1
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@
66
<parent>
77
<groupId>no.nav.bidrag</groupId>
88
<artifactId>bidrag-beregn-felles</artifactId>
9-
<version>${revision}</version>
9+
<version>1.0-SNAPSHOT</version>
1010
</parent>
1111

1212
<artifactId>bidrag-beregn-forskudd</artifactId>

bidrag-beregn-forskudd/src/main/kotlin/no/nav/bidrag/beregn/forskudd/service/BeregnForskuddService.kt

+6-8
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,6 @@
11
package no.nav.bidrag.beregn.forskudd.service
22

3-
import com.fasterxml.jackson.databind.ObjectMapper
4-
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
3+
import com.fasterxml.jackson.databind.node.POJONode
54
import io.github.oshai.kotlinlogging.KotlinLogging
65
import no.nav.bidrag.beregn.forskudd.core.ForskuddCore
76
import no.nav.bidrag.beregn.forskudd.core.dto.BeregnetForskuddResultatCore
@@ -13,11 +12,11 @@ import no.nav.bidrag.domene.enums.beregning.ResultatkodeForskudd
1312
import no.nav.bidrag.domene.enums.grunnlag.Grunnlagstype
1413
import no.nav.bidrag.domene.tid.ÅrMånedsperiode
1514
import no.nav.bidrag.transport.behandling.beregning.felles.BeregnGrunnlag
16-
import no.nav.bidrag.transport.behandling.beregning.felles.Grunnlag
1715
import no.nav.bidrag.transport.behandling.beregning.felles.valider
1816
import no.nav.bidrag.transport.behandling.beregning.forskudd.BeregnetForskuddResultat
1917
import no.nav.bidrag.transport.behandling.beregning.forskudd.ResultatBeregning
2018
import no.nav.bidrag.transport.behandling.beregning.forskudd.ResultatPeriode
19+
import no.nav.bidrag.transport.behandling.felles.grunnlag.GrunnlagDto
2120

2221
private val logger = KotlinLogging.logger {}
2322

@@ -106,9 +105,8 @@ internal class BeregnForskuddService(private val forskuddCore: ForskuddCore = Fo
106105
// Lager en liste over resultatgrunnlag som inneholder:
107106
// - mottatte grunnlag som er brukt i beregningen
108107
// - sjabloner som er brukt i beregningen
109-
private fun lagGrunnlagReferanseListe(forskuddGrunnlag: BeregnGrunnlag, resultatFraCore: BeregnetForskuddResultatCore): List<Grunnlag> {
110-
val mapper = ObjectMapper().findAndRegisterModules().registerModules(JavaTimeModule())
111-
val resultatGrunnlagListe = mutableListOf<Grunnlag>()
108+
private fun lagGrunnlagReferanseListe(forskuddGrunnlag: BeregnGrunnlag, resultatFraCore: BeregnetForskuddResultatCore): List<GrunnlagDto> {
109+
val resultatGrunnlagListe = mutableListOf<GrunnlagDto>()
112110
val grunnlagReferanseListe =
113111
resultatFraCore.beregnetForskuddPeriodeListe
114112
.flatMap { it.grunnlagsreferanseListe }
@@ -118,7 +116,7 @@ internal class BeregnForskuddService(private val forskuddCore: ForskuddCore = Fo
118116
resultatGrunnlagListe.addAll(
119117
forskuddGrunnlag.grunnlagListe!!
120118
.filter { grunnlagReferanseListe.contains(it.referanse) }
121-
.map { Grunnlag(referanse = it.referanse, type = it.type, innhold = it.innhold) },
119+
.map { GrunnlagDto(referanse = it.referanse, type = it.type, innhold = it.innhold) },
122120
)
123121

124122
// Danner grunnlag basert på liste over sjabloner som er brukt i beregningen
@@ -130,7 +128,7 @@ internal class BeregnForskuddService(private val forskuddCore: ForskuddCore = Fo
130128
map["datoTil"] = it.periode.datoTil.toString()
131129
map["sjablonNavn"] = it.navn
132130
map["sjablonVerdi"] = it.verdi.toInt()
133-
Grunnlag(referanse = it.referanse, type = Grunnlagstype.SJABLON, innhold = mapper.valueToTree(map))
131+
GrunnlagDto(referanse = it.referanse, type = Grunnlagstype.SJABLON, innhold = POJONode(map))
134132
},
135133
)
136134

bidrag-beregn-forskudd/src/main/kotlin/no/nav/bidrag/beregn/forskudd/service/CoreMapper.kt

+18-25
Original file line numberDiff line numberDiff line change
@@ -15,12 +15,12 @@ import no.nav.bidrag.domene.enums.person.Bostatuskode
1515
import no.nav.bidrag.domene.enums.sjablon.SjablonInnholdNavn
1616
import no.nav.bidrag.domene.enums.sjablon.SjablonTallNavn
1717
import no.nav.bidrag.transport.behandling.beregning.felles.BeregnGrunnlag
18-
import no.nav.bidrag.transport.behandling.beregning.felles.grunnlag.BeregningInntektRapporteringPeriode
19-
import no.nav.bidrag.transport.behandling.beregning.felles.hentInnholdBasertPåEgenReferanse
20-
import no.nav.bidrag.transport.behandling.beregning.felles.hentInnholdBasertPåFremmedReferanse
2118
import no.nav.bidrag.transport.behandling.felles.grunnlag.BostatusPeriode
19+
import no.nav.bidrag.transport.behandling.felles.grunnlag.InntektsrapporteringPeriode
2220
import no.nav.bidrag.transport.behandling.felles.grunnlag.Person
2321
import no.nav.bidrag.transport.behandling.felles.grunnlag.SivilstandPeriode
22+
import no.nav.bidrag.transport.behandling.felles.grunnlag.filtrerOgKonverterBasertPåEgenReferanse
23+
import no.nav.bidrag.transport.behandling.felles.grunnlag.filtrerOgKonverterBasertPåFremmedReferanse
2424
import java.time.LocalDate
2525

2626
internal object CoreMapper {
@@ -51,15 +51,15 @@ internal object CoreMapper {
5151

5252
val sjablonPeriodeCoreListe =
5353
mapSjablonVerdier(
54-
beregnDatoFra = beregnForskuddGrunnlag.periode!!.fom.atDay(1),
55-
beregnDatoTil = beregnForskuddGrunnlag.periode!!.til!!.atDay(1),
54+
beregnDatoFra = beregnForskuddGrunnlag.periode.fom.atDay(1),
55+
beregnDatoTil = beregnForskuddGrunnlag.periode.til!!.atDay(1),
5656
sjablonSjablontallListe = sjablontallListe,
5757
sjablontallMap = sjablontallMap,
5858
)
5959

6060
return BeregnForskuddGrunnlagCore(
61-
beregnDatoFra = beregnForskuddGrunnlag.periode!!.fom.atDay(1),
62-
beregnDatoTil = beregnForskuddGrunnlag.periode!!.til!!.atDay(1),
61+
beregnDatoFra = beregnForskuddGrunnlag.periode.fom.atDay(1),
62+
beregnDatoTil = beregnForskuddGrunnlag.periode.til!!.atDay(1),
6363
soknadBarn = soknadbarnCore!!,
6464
bostatusPeriodeListe = bostatusPeriodeCoreListe,
6565
inntektPeriodeListe = inntektPeriodeCoreListe,
@@ -72,10 +72,9 @@ internal object CoreMapper {
7272
private fun mapSoknadsbarn(beregnForskuddGrunnlag: BeregnGrunnlag): SoknadBarnCore? {
7373
try {
7474
val soknadsbarnGrunnlag =
75-
beregnForskuddGrunnlag.hentInnholdBasertPåEgenReferanse(
75+
beregnForskuddGrunnlag.grunnlagListe.filtrerOgKonverterBasertPåEgenReferanse<Person>(
7676
grunnlagType = Grunnlagstype.PERSON,
77-
clazz = Person::class.java,
78-
referanse = beregnForskuddGrunnlag.søknadsbarnReferanse!!,
77+
referanse = beregnForskuddGrunnlag.søknadsbarnReferanse,
7978
)
8079

8180
return if (soknadsbarnGrunnlag.isEmpty() || soknadsbarnGrunnlag.count() > 1) {
@@ -96,10 +95,9 @@ internal object CoreMapper {
9695
private fun mapBostatus(beregnForskuddGrunnlag: BeregnGrunnlag): List<BostatusPeriodeCore> {
9796
try {
9897
val bostatusGrunnlag =
99-
beregnForskuddGrunnlag.hentInnholdBasertPåFremmedReferanse(
98+
beregnForskuddGrunnlag.grunnlagListe.filtrerOgKonverterBasertPåFremmedReferanse<BostatusPeriode>(
10099
grunnlagType = Grunnlagstype.BOSTATUS_PERIODE,
101-
clazz = BostatusPeriode::class.java,
102-
referanse = beregnForskuddGrunnlag.søknadsbarnReferanse!!,
100+
referanse = beregnForskuddGrunnlag.søknadsbarnReferanse,
103101
)
104102

105103
return bostatusGrunnlag.map {
@@ -123,9 +121,8 @@ internal object CoreMapper {
123121
private fun mapInntekt(beregnForskuddGrunnlag: BeregnGrunnlag): List<InntektPeriodeCore> {
124122
try {
125123
val inntektGrunnlag =
126-
beregnForskuddGrunnlag.hentInnholdBasertPåEgenReferanse(
127-
grunnlagType = Grunnlagstype.BEREGNING_INNTEKT_RAPPORTERING_PERIODE,
128-
clazz = BeregningInntektRapporteringPeriode::class.java,
124+
beregnForskuddGrunnlag.grunnlagListe.filtrerOgKonverterBasertPåEgenReferanse<InntektsrapporteringPeriode>(
125+
grunnlagType = Grunnlagstype.INNTEKT_RAPPORTERING_PERIODE,
129126
)
130127

131128
return inntektGrunnlag
@@ -145,7 +142,7 @@ internal object CoreMapper {
145142
}
146143
} catch (e: Exception) {
147144
throw IllegalArgumentException(
148-
"Ugyldig input ved beregning av forskudd. Innhold i Grunnlagstype.BEREGNING_INNTEKT_RAPPORTERING_PERIODE er ikke gyldig: " +
145+
"Ugyldig input ved beregning av forskudd. Innhold i Grunnlagstype.INNTEKT_RAPPORTERING_PERIODE er ikke gyldig: " +
149146
e.message,
150147
)
151148
}
@@ -154,10 +151,8 @@ internal object CoreMapper {
154151
private fun mapSivilstand(beregnForskuddGrunnlag: BeregnGrunnlag): List<SivilstandPeriodeCore> {
155152
try {
156153
val sivilstandGrunnlag =
157-
beregnForskuddGrunnlag.hentInnholdBasertPåEgenReferanse(
158-
grunnlagType = Grunnlagstype.SIVILSTAND_PERIODE,
159-
clazz = SivilstandPeriode::class.java,
160-
)
154+
beregnForskuddGrunnlag.grunnlagListe
155+
.filtrerOgKonverterBasertPåEgenReferanse<SivilstandPeriode>(Grunnlagstype.SIVILSTAND_PERIODE)
161156

162157
return sivilstandGrunnlag.map {
163158
SivilstandPeriodeCore(
@@ -180,10 +175,8 @@ internal object CoreMapper {
180175
private fun mapBarnIHusstanden(beregnForskuddGrunnlag: BeregnGrunnlag): List<BarnIHusstandenPeriodeCore> {
181176
try {
182177
val barnIHusstandenGrunnlag =
183-
beregnForskuddGrunnlag.hentInnholdBasertPåEgenReferanse(
184-
grunnlagType = Grunnlagstype.BOSTATUS_PERIODE,
185-
clazz = BostatusPeriode::class.java,
186-
)
178+
beregnForskuddGrunnlag.grunnlagListe
179+
.filtrerOgKonverterBasertPåEgenReferanse<BostatusPeriode>(Grunnlagstype.BOSTATUS_PERIODE)
187180

188181
return barnIHusstandenGrunnlag
189182
.filter { it.innhold.bostatus == Bostatuskode.MED_FORELDER || it.innhold.bostatus == Bostatuskode.DOKUMENTERT_SKOLEGANG }

bidrag-beregn-forskudd/src/test/kotlin/no/nav/bidrag/beregn/forskudd/service/TestUtil.kt

+13-16
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package no.nav.bidrag.beregn.forskudd.service
22

33
import com.fasterxml.jackson.databind.JsonNode
44
import com.fasterxml.jackson.databind.ObjectMapper
5+
import com.fasterxml.jackson.databind.node.POJONode
56
import com.fasterxml.jackson.datatype.jsr310.JavaTimeModule
67
import com.fasterxml.jackson.module.kotlin.registerKotlinModule
78
import no.nav.bidrag.beregn.core.dto.AvvikCore
@@ -17,10 +18,10 @@ import no.nav.bidrag.domene.enums.person.Bostatuskode
1718
import no.nav.bidrag.domene.enums.person.Sivilstandskode
1819
import no.nav.bidrag.domene.tid.ÅrMånedsperiode
1920
import no.nav.bidrag.transport.behandling.beregning.felles.BeregnGrunnlag
20-
import no.nav.bidrag.transport.behandling.beregning.felles.Grunnlag
2121
import no.nav.bidrag.transport.behandling.beregning.forskudd.BeregnetForskuddResultat
2222
import no.nav.bidrag.transport.behandling.beregning.forskudd.ResultatBeregning
2323
import no.nav.bidrag.transport.behandling.beregning.forskudd.ResultatPeriode
24+
import no.nav.bidrag.transport.behandling.felles.grunnlag.GrunnlagDto
2425
import java.math.BigDecimal
2526
import java.text.SimpleDateFormat
2627
import java.time.LocalDate
@@ -49,10 +50,6 @@ object TestUtil {
4950
return byggDummyForskuddGrunnlag("referanse")
5051
}
5152

52-
fun byggForskuddGrunnlagUtenType(): BeregnGrunnlag {
53-
return byggDummyForskuddGrunnlag("type")
54-
}
55-
5653
fun byggForskuddGrunnlagUtenInnhold(): BeregnGrunnlag {
5754
return byggDummyForskuddGrunnlag("innhold")
5855
}
@@ -62,11 +59,11 @@ object TestUtil {
6259
val mapper = ObjectMapper()
6360
val beregningsperiodeFom = YearMonth.parse("2017-01")
6461
val beregningsperiodeTil = if (nullVerdi == "beregningsperiodeTil") null else YearMonth.parse("2020-01")
65-
val referanse = if (nullVerdi == "referanse") null else "Mottatt_BM_Inntekt_AG_20201201"
66-
val type = if (nullVerdi == "type") null else Grunnlagstype.INNTEKT
62+
val referanse = if (nullVerdi == "referanse") "" else "Mottatt_BM_Inntekt_AG_20201201"
63+
val type = Grunnlagstype.INNTEKT
6764
val innhold =
6865
if (nullVerdi == "innhold") {
69-
null
66+
POJONode(null)
7067
} else {
7168
mapper.valueToTree<JsonNode>(
7269
mapOf(
@@ -82,10 +79,10 @@ object TestUtil {
8279
}
8380
val grunnlagListe =
8481
if (nullVerdi == "grunnlagListe") {
85-
null
82+
emptyList()
8683
} else {
8784
listOf(
88-
Grunnlag(
85+
GrunnlagDto(
8986
referanse = referanse,
9087
type = type,
9188
grunnlagsreferanseListe = emptyList(),
@@ -159,34 +156,34 @@ object TestUtil {
159156

160157
val beregningsperiodeFom = YearMonth.parse(periodeFom)
161158
val beregningsperiodeTil = YearMonth.parse(periodeTil)
162-
val grunnlagListe = mutableListOf<Grunnlag>()
159+
val grunnlagListe = mutableListOf<GrunnlagDto>()
163160

164161
grunnlagListe.add(
165-
Grunnlag(
162+
GrunnlagDto(
166163
referanse = "Person_Søknadsbarn",
167164
type = Grunnlagstype.PERSON,
168165
grunnlagsreferanseListe = emptyList(),
169166
innhold = personSøknadsbarnInnhold,
170167
),
171168
)
172169
grunnlagListe.add(
173-
Grunnlag(
170+
GrunnlagDto(
174171
referanse = "Bostatus_20170101",
175172
type = Grunnlagstype.BOSTATUS_PERIODE,
176173
grunnlagsreferanseListe = listOf("Person_Søknadsbarn"),
177174
innhold = bostatusInnhold,
178175
),
179176
)
180177
grunnlagListe.add(
181-
Grunnlag(
178+
GrunnlagDto(
182179
referanse = "BeregningInntektRapportering_Ainntekt_20170101",
183-
type = Grunnlagstype.BEREGNING_INNTEKT_RAPPORTERING_PERIODE,
180+
type = Grunnlagstype.INNTEKT_RAPPORTERING_PERIODE,
184181
grunnlagsreferanseListe = emptyList(),
185182
innhold = inntektInnhold,
186183
),
187184
)
188185
grunnlagListe.add(
189-
Grunnlag(
186+
GrunnlagDto(
190187
referanse = "Sivilstand_20170101",
191188
type = Grunnlagstype.SIVILSTAND_PERIODE,
192189
grunnlagsreferanseListe = emptyList(),

bidrag-beregn-forskudd/src/test/kotlin/no/nav/bidrag/beregn/forskudd/service/dto/DtoTest.kt

+2-10
Original file line numberDiff line numberDiff line change
@@ -20,23 +20,15 @@ internal class DtoTest {
2020
fun skalKasteIllegalArgumentExceptionNaarGrunnlagListeErNull() {
2121
val grunnlag = TestUtil.byggForskuddGrunnlagUtenGrunnlagListe()
2222
Assertions.assertThatExceptionOfType(IllegalArgumentException::class.java).isThrownBy { grunnlag.valider() }
23-
.withMessage("grunnlagListe kan ikke være null")
23+
.withMessage("grunnlagListe kan ikke være tom")
2424
}
2525

2626
@Test
2727
@DisplayName("Skal kaste IllegalArgumentException når referanse er null")
2828
fun skalKasteIllegalArgumentExceptionNaarReferanseErNull() {
2929
val grunnlag = TestUtil.byggForskuddGrunnlagUtenReferanse()
3030
Assertions.assertThatExceptionOfType(IllegalArgumentException::class.java).isThrownBy { grunnlag.valider() }
31-
.withMessage("referanse kan ikke være null")
32-
}
33-
34-
@Test
35-
@DisplayName("Skal kaste IllegalArgumentException når type er null")
36-
fun skalKasteIllegalArgumentExceptionNaarTypeErNull() {
37-
val grunnlag = TestUtil.byggForskuddGrunnlagUtenType()
38-
Assertions.assertThatExceptionOfType(IllegalArgumentException::class.java).isThrownBy { grunnlag.valider() }
39-
.withMessage("type kan ikke være null")
31+
.withMessage("referanse kan ikke være en tom streng")
4032
}
4133

4234
@Test

0 commit comments

Comments
 (0)