From 0caf308343253e1477af41d037e2ae984820428d Mon Sep 17 00:00:00 2001 From: Terje Heen Date: Fri, 20 Jan 2023 13:45:39 +0100 Subject: [PATCH 1/2] =?UTF-8?q?r=20Fjerner=20bruk=20av=20Observer-pattern?= =?UTF-8?q?=20fra=20Arbeidss=C3=B8ker-modellen.?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Foreløpig er ikke Observer-patternet i bruk, og da fremstår det som ekstra kompleksitet. Velger heller å innføre det på nytt dersom det blir behov for det. --- .../arbeidssoker/Arbeidssoker.kt | 15 +-------------- .../arbeidssoker/Observable.kt | 7 ------- .../veilarbregistrering/arbeidssoker/Observer.kt | 6 ------ .../arbeidssoker/ArbeidssokerTest.kt | 7 ------- 4 files changed, 1 insertion(+), 34 deletions(-) delete mode 100644 src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/Observable.kt delete mode 100644 src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/Observer.kt diff --git a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/Arbeidssoker.kt b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/Arbeidssoker.kt index b75177354..69af4bef6 100644 --- a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/Arbeidssoker.kt +++ b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/Arbeidssoker.kt @@ -7,9 +7,8 @@ import java.time.LocalDateTime /** * Root aggregate - all kommunikasjon mot Arbeidssøker og underliggende elementer skal gå via dette objektet. */ -class Arbeidssoker : Observable { +class Arbeidssoker { - private val observers: MutableList = mutableListOf() private var tilstand: ArbeidssokerState = IkkeArbeidssokerState private var arbeidssokerperioder: MutableList = mutableListOf() @@ -25,15 +24,11 @@ class Arbeidssoker : Observable { internal fun startPeriode(fraDato: LocalDateTime) { this.arbeidssokerperioder.add(Arbeidssokerperiode(fraDato, null)) this.tilstand = AktivArbeidssokerState - //publish event - observers.forEach { it.update("ArbeidssokerperiodeStartetEvent") } } internal fun avsluttPeriode(tilDato: LocalDateTime) { sistePeriode()?.avslutt(tilDato) ?: throw IllegalStateException("Kan ikke avslutte en periode som ikke finnes") this.tilstand = TidligereArbeidssokerState - //publish event - observers.forEach { it.update("ArbeidssokerperiodeAvsluttetEvent") } } internal fun harVærtInaktivMerEnn28Dager() = sistePeriode()!!.tilDato!!.isBefore(LocalDateTime.now().minusDays(28)) @@ -48,14 +43,6 @@ class Arbeidssoker : Observable { internal fun allePerioder(): List { return arbeidssokerperioder } - - override fun add(observer: Observer) { - observers.add(observer) - } - - override fun remove(observer: Observer) { - observers.remove(observer) - } } private interface ArbeidssokerState { diff --git a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/Observable.kt b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/Observable.kt deleted file mode 100644 index 4c68eba28..000000000 --- a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/Observable.kt +++ /dev/null @@ -1,7 +0,0 @@ -package no.nav.fo.veilarbregistrering.arbeidssoker - -interface Observable { - - fun add(observer: Observer) - fun remove(observer: Observer) -} \ No newline at end of file diff --git a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/Observer.kt b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/Observer.kt deleted file mode 100644 index 3225c96e7..000000000 --- a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/Observer.kt +++ /dev/null @@ -1,6 +0,0 @@ -package no.nav.fo.veilarbregistrering.arbeidssoker - -interface Observer { - - fun update(event: String) -} \ No newline at end of file diff --git a/src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/ArbeidssokerTest.kt b/src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/ArbeidssokerTest.kt index eda4d7dd5..d90842068 100644 --- a/src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/ArbeidssokerTest.kt +++ b/src/test/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/ArbeidssokerTest.kt @@ -1,8 +1,5 @@ package no.nav.fo.veilarbregistrering.arbeidssoker -import no.nav.fo.veilarbregistrering.arbeidssoker.Arbeidssoker -import no.nav.fo.veilarbregistrering.arbeidssoker.Arbeidssokerperiode -import no.nav.fo.veilarbregistrering.arbeidssoker.Observer import no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.FormidlingsgruppeEndretEventTestdataBuilder.formidlingsgruppeEndret import no.nav.fo.veilarbregistrering.bruker.AktorId import no.nav.fo.veilarbregistrering.registrering.ordinaer.OrdinaerBrukerRegistreringTestdataBuilder.gyldigBrukerRegistrering @@ -22,13 +19,9 @@ class ArbeidssokerTest { val registreringsdato = LocalDateTime.now().minusMonths(2) val nyRegistrering = gyldigBrukerRegistrering(opprettetDato = registreringsdato) - var hendelse : String? = null - - arbeidssoker.add(object : Observer { override fun update(event: String) { hendelse = event } }) arbeidssoker.behandle(nyRegistrering) assertEquals(Arbeidssokerperiode(registreringsdato, null), arbeidssoker.sistePeriode()) - assertEquals("ArbeidssokerperiodeStartetEvent", hendelse) } @Test From 860e5c76fe60040265fda3b961e5d9b716c3c2c6 Mon Sep 17 00:00:00 2001 From: Terje Heen Date: Fri, 20 Jan 2023 13:56:19 +0100 Subject: [PATCH 2/2] =?UTF-8?q?r=20Unng=C3=A5r=20=C3=A5=20populere=20ny=20?= =?UTF-8?q?arbeidss=C3=B8kermodell=20med=20"egne"=20data?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Venter med å populere ny arbeidssøkermodell med ordinære registreringer og reaktiveringer. Populerer den i første omgang kun med formidlinsgruppeendringer. Da bør modellen lettere kunne bli 1:1 med svaret vi får fra ORDS-tjenesten. Så kan vi utvide med "egne" data etterpå. --- .../perioder/ArbeidssokerService.kt | 18 ++++++++---------- 1 file changed, 8 insertions(+), 10 deletions(-) diff --git a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/perioder/ArbeidssokerService.kt b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/perioder/ArbeidssokerService.kt index ae720c355..bd9aed6a8 100644 --- a/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/perioder/ArbeidssokerService.kt +++ b/src/main/kotlin/no/nav/fo/veilarbregistrering/arbeidssoker/perioder/ArbeidssokerService.kt @@ -1,9 +1,9 @@ package no.nav.fo.veilarbregistrering.arbeidssoker.perioder import no.nav.common.featuretoggle.UnleashClient +import no.nav.fo.veilarbregistrering.arbeidssoker.Arbeidssoker import no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.FormidlingsgruppeGateway import no.nav.fo.veilarbregistrering.arbeidssoker.formidlingsgruppe.FormidlingsgruppeRepository -import no.nav.fo.veilarbregistrering.arbeidssoker.Arbeidssoker import no.nav.fo.veilarbregistrering.bruker.Bruker import no.nav.fo.veilarbregistrering.bruker.Periode import no.nav.fo.veilarbregistrering.log.logger @@ -36,7 +36,11 @@ class ArbeidssokerService( try { val arbeidssoker = populerNyArbeidssøkermodell(bruker) val overlappendeArbeidssokerperioderLokalt = map(arbeidssoker).overlapperMed(forespurtPeriode) - sammenlignNyOgGammelModell(overlappendeArbeidssokerperioderLokalt, overlappendeHistoriskePerioderORDS, forespurtPeriode) + sammenlignNyOgGammelModell( + overlappendeArbeidssokerperioderLokalt, + overlappendeHistoriskePerioderORDS, + forespurtPeriode + ) } catch (e: RuntimeException) { logger.warn("Sammenligning av perioder feilet", e) } @@ -51,18 +55,12 @@ class ArbeidssokerService( } private fun populerNyArbeidssøkermodell(bruker: Bruker): Arbeidssoker { - val brukerRegistrering = - brukerRegistreringRepository.hentBrukerregistreringForFoedselsnummer(bruker.alleFoedselsnummer()) - val brukerReaktivering = - brukerReaktiveringRepository.finnReaktiveringerForFoedselsnummer(bruker.alleFoedselsnummer()) val formidlingsgruppe = formidlingsgruppeRepository.hentFormidlingsgrupperOgMapTilFormidlingsgruppeEndretEvent(bruker.alleFoedselsnummer()) - //TODO: hente meldekort - vi avventer Meldekort til vi har lært litt mer om modellen. - - val listeMedArbeidssøkerEndringer = brukerRegistrering + brukerReaktivering + formidlingsgruppe val arbeidssoker = Arbeidssoker() - listeMedArbeidssøkerEndringer.sortedBy { it.opprettetTidspunkt() }.forEach { arbeidssoker.behandle(it) } + + formidlingsgruppe.sortedBy { it.opprettetTidspunkt() }.forEach { arbeidssoker.behandle(it) } return arbeidssoker }