Skip to content

Commit

Permalink
Oppdater kommentarer
Browse files Browse the repository at this point in the history
  • Loading branch information
MagnusTonnessen committed Feb 13, 2025
1 parent 4bd28a9 commit fb85039
Show file tree
Hide file tree
Showing 4 changed files with 41 additions and 52 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -6,9 +6,9 @@ import no.nav.familie.tidslinje.utvidelser.kombinerMed

/**
* Extension-metode for å kombinere to nøkkel-verdi-map'er der verdiene er tidslinjer
* Nøkkelen må være av samme type, K, tidslinjene må være i samme tidsenhet (T)
* Innholdet i tidslinjene i map'en på venstre side må alle være av typen V
* Innholdet i tidslinjene i map'en på høyre side må alle være av typen H
* Nøkkelen må være av samme type K
* Verdiene i tidslinjene i map'en på venstre side må alle være av typen V
* Verdiene i tidslinjene i map'en på høyre side må alle være av typen H
* Kombinator-funksjonen kalles med verdiene av fra venstre og høyre tidslinje for samme nøkkel og tidspunkt.
* <null> blir sendt som verdier hvis venstre, høyre eller begge tidslinjer mangler verdi for et tidspunkt
* Resultatet er en ny map der nøklene er av type K, og tidslinjene har innhold av typen (nullable) R.
Expand All @@ -31,11 +31,11 @@ fun <K, V, H, R> Map<K, Tidslinje<V>>.join(

/**
* Extension-metode for å kombinere to nøkkel-verdi-map'er der verdiene er tidslinjer
* Nøkkelen må være av samme type, K, tidslinjene må være i samme tidsenhet (T)
* Innholdet i tidslinjene i map'en på venstre side må alle være av typen V
* Innholdet i tidslinjene i map'en på høyre side må alle være av typen H
* Nøkkelen må være av samme type K
* Verdiene i tidslinjene i map'en på venstre side må alle være av typen V
* Verdiene i tidslinjene i map'en på høyre side må alle være av typen H
* Kombinator-funksjonen kalles med verdiene av fra venstre og høyre tidslinje for samme nøkkel og tidspunkt.
* Kombinator-funksjonen blir IKKE kalt Hvis venstre, høyre eller begge tidslinjer mangler verdi for et tidspunkt
* Kombinator-funksjonen blir IKKE kalt hvis venstre, høyre eller begge tidslinjer mangler verdi for et tidspunkt
* Resultatet er en ny map der nøklene er av type K, og tidslinjene har innhold av typen (nullable) R.
* Bare nøkler som finnes i begge map'ene vil finnes i den resulterende map'en
*/
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,13 +13,11 @@ import no.nav.familie.tidslinje.utvidelser.slåSammen
/**
* Extension-metode for å kombinere to tidslinjer der begge har verdi
* Kombinasjonen baserer seg på å iterere gjennom alle tidspunktene
* fra minste fraOgMed til største tilOgMed fra begge tidslinjene
* Tidsenhet (T) må være av samme type
* Hver av tidslinjene kan ha ulik innholdstype, hhv V og H
* Hvis innholdet V eller H mangler innhold, så vil ikke resulterende tidslinje få innhold for det tidspunktet
* Hver av tidslinjene kan ha ulik type, hhv V og H
* Hvis V eller H mangler verdi, så vil ikke resulterende tidslinje få en verdi for det tidspunktet
* Kombintor-funksjonen tar ellers V og H og returnerer (nullable) R
* Hvis kombinator-funksjonen returner <null>, antas det at tidslinjen ikke skal ha verdi for tidspunktet
* Resultatet er en tidslinje med tidsenhet T og innhold R
* Resultatet er en tidslinje med verdi R
*/
fun <V, H, R> Tidslinje<V>.kombinerUtenNullMed(
yreTidslinje: Tidslinje<H>,
Expand All @@ -36,49 +34,46 @@ fun <V, H, R> Tidslinje<V>.kombinerUtenNullMed(

/**
* Extension-metode for å kombinere liste av tidslinjer
* Kombinasjonen baserer seg på å iterere gjennom alle tidspunktene
* fra minste <fraOgMed()> til største <tilOgMed()> fra alle tidslinjene
* Innhold (I) og tidsenhet (T) må være av samme type
* Kombintor-funksjonen tar inn Iterable<I> og returner (nullable) R
* Kombinasjonen baserer seg på å iterere gjennom alle tidspunktene fra alle tidslinjene
* Verdi (V) må være av samme type
* Kombintor-funksjonen tar inn Iterable<V> og returner (nullable) R
* Null-verdier fjernes før de sendes til kombinator-funksjonen, som betyr at en tom iterator kan bli sendt
* Hvis reesultatet fra kombinatoren er null, tolkes det som at det ikke skal være innhold
* Resultatet er en tidslinje med tidsenhet T og innhold R
* Hvis resultatet fra kombinatoren er null, tolkes det som at det ikke skal være en verdi
* Resultatet er en tidslinje med verdi R
*/
fun <V, R> Collection<Tidslinje<V>>.kombinerUtenNull(
listeKombinator: (Iterable<V>) -> R?,
): Tidslinje<R> = kombinerNullableKombinator { it.filterNotNull().let(listeKombinator) }

/**
* Extension-metode for å kombinere liste av tidslinjer
* Kombinasjonen baserer seg på å iterere gjennom alle tidspunktene
* fra minste <fraOgMed()> til største <tilOgMed()> fra alle tidslinjene
* Innhold (I) og tidsenhet (T) må være av samme type
* Kombintor-funksjonen tar inn Iterable<I> og returner (nullable) R
* Kombinasjonen baserer seg på å iterere gjennom alle tidspunktene fra alle tidslinjene
* Verdi (V) må være av samme type
* Kombintor-funksjonen tar inn Iterable<V> og returner (nullable) R
* Null-verdier fjernes, og listen av verdier sendes til kombinator-funksjonen bare hvis den inneholder verdier
* Hvis reesultatet fra kombinatoren er null, tolkes det som at det ikke skal være innhold
* Resultatet er en tidslinje med tidsenhet T og innhold R
* Hvis reesultatet fra kombinatoren er null, tolkes det som at det ikke skal være en verdi
* Resultatet er en tidslinje med verdi R
*/
fun <V, R> Collection<Tidslinje<V>>.kombinerUtenNullOgIkkeTom(
listeKombinator: (Iterable<V>) -> R?,
): Tidslinje<R> = kombinerNullableKombinator { it.filterNotNull().takeIf { it.isNotEmpty() }?.let(listeKombinator) }

/**
* Extension-metode for å kombinere liste av tidslinjer
* Kombinasjonen baserer seg på å iterere gjennom alle tidspunktene
* fra minste <fraOgMed()> til største <tilOgMed()> fra alle tidslinjene
* Innhold (I) og tidsenhet (T) må være av samme type
* Resultatet er en tidslinje med tidsenhet T og innhold Iterable<I>
* Kombinasjonen baserer seg på å iterere gjennom alle tidspunktene fra alle tidslinjene
* Verdien V må være av samme type
* Resultatet er en tidslinje med verdi Iterable<V>
*/
fun <V> Collection<Tidslinje<V>>.kombiner() = this.kombinerNullableKombinator { if (it.toList().isNotEmpty()) it else null }

/**
* Extension-metode for å kombinere en nøkkel-verdi-map'er der verdiene er tidslinjer, med en enkelt tidslinje
* Innholdet i tidslinjene i map'en på venstre side må alle være av typen V
* Innholdet i tidslinjen på høyre side er av typen H
* Verdien i tidslinjene i map'en på venstre side må alle være av typen V
* Verdien i tidslinjen på høyre side er av typen H
* Kombinator-funksjonen kalles for hvert tidspunkt med med verdien for det tidspunktet fra høyre tidslinje og
* vedien fra den enkelte av venstre tidslinjer etter tur.
* Kombinator-funksjonen blir IKKE kalt Hvis venstre, høyre eller begge tidslinjer mangler verdi for et tidspunkt
* Resultatet er en ny map der nøklene er av type K, og tidslinjene har innhold av typen (nullable) R.
* verdien fra den enkelte av venstre tidslinjer etter tur.
* Kombinator-funksjonen blir IKKE kalt hvis venstre, høyre eller begge tidslinjer mangler verdi for et tidspunkt
* Resultatet er en ny map der nøklene er av type K, og tidslinjene har verdi av typen (nullable) R.
*/
fun <K, V, H, R> Map<K, Tidslinje<V>>.kombinerKunVerdiMed(
yreTidslinje: Tidslinje<H>,
Expand All @@ -93,12 +88,10 @@ fun <K, V, H, R> Map<K, Tidslinje<V>>.kombinerKunVerdiMed(

/**
* Extension-metode for å kombinere tre tidslinjer
* Kombinasjonen baserer seg på å iterere gjennom alle tidspunktene
* fra minste <fraOgMed()> til største <tilOgMed()> fra alle tidslinjene
* Tidsenhet (T) må være av samme type
* Hver av tidslinjene kan ha ulik innholdstype, hhv A, B og C
* Kombintor-funksjonen tar inn (nullable) av A, B og C og returner (nullable) R
* Resultatet er en tidslinje med tidsenhet T og innhold R
* Kombinasjonen baserer seg på å iterere gjennom alle tidspunktene fra alle tidslinjene
* Hver av tidslinjene kan ha ulik type, hhv A, B og C
* Kombintor-funksjonen tar inn av A, B og C og returner (nullable) R
* Resultatet er en tidslinje med verdi R
*/
fun <A, B, C, R> Tidslinje<A>.kombinerKunVerdiMed(
tidslinjeB: Tidslinje<B>,
Expand Down Expand Up @@ -130,13 +123,11 @@ fun <V, H> Tidslinje<V>.kombinerMedNullable(

/**
* Extension-metode for å kombinere liste av tidslinjer
* Kombinasjonen baserer seg på å iterere gjennom alle tidspunktene
* fra minste <fraOgMed()> til største <tilOgMed()> fra alle tidslinjene
* Innhold (I) og tidsenhet (T) må være av samme type
* Kombintor-funksjonen tar inn Iterable<I> og returner (nullable) R
* Resultatet er en tidslinje med tidsenhet T og innhold R
* Kombinasjonen baserer seg på å iterere gjennom alle tidspunktene fra alle tidslinjene
* Verdi (V) må være av samme type
* Kombintor-funksjonen tar inn Iterable<V> og returner (nullable) R
* Resultatet er en tidslinje med verdi R
*/
@Deprecated("Skal flyttes til familie-felles")
fun <V, R> Collection<Tidslinje<V>>.kombinerNullableKombinator(listeKombinator: (Iterable<V>) -> R?): Tidslinje<R> =
this.slåSammen().map {
when (it) {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ import java.time.LocalDate

/**
* Extension-metode for å beskjære (forkorte) en tidslinje etter til-og-med fra en annen tidslinje
* Etter beskjæringen vil tidslinjen maksimalt strekke seg fra [this]s fraOgMed() og til [tidslinje]s tilOgMed()
* Etter beskjæringen vil tidslinjen maksimalt strekke seg fra [this]s startTidspunkt og til [tidslinje]s sluttTidspunkt
* Perioder som ligger helt utenfor grensene vil forsvinne.
* Perioden i hver ende som ligger delvis innenfor, vil forkortes.
* Hvis ny og eksisterende grenseverdi begge er uendelige, vil den nye benyttes
Expand All @@ -28,9 +28,7 @@ fun <I> Tidslinje<I>.beskjærTilOgMedEtter(tidslinje: Tidslinje<*>): Tidslinje<I
* Etter beskjæringen vil tidslinjen maksimalt strekke seg fra innsendt [fraOgMed] og til [tilOgMed]
* Perioder som ligger helt utenfor grensene vil forsvinne.
* Perioden i hver ende som ligger delvis innenfor, vil forkortes.
* Uendelige endepunkter vil beskjæres til endelig hvis [fraOgMed] eller [tilOgMed] er endelige
* Endelige endepunkter som beskjæres mot uendelige endepunkter, beholdes
* Hvis ny og eksisterende grenseverdi begge er uendelige, vil den mest ekstreme benyttes
* Uendelige endepunkter vil beskjæres til endelig
*/
fun <V> Tidslinje<V>.beskjær(
fraOgMed: LocalDate,
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -9,7 +9,7 @@ import no.nav.familie.tidslinje.utvidelser.konverterTilMåned
import no.nav.familie.tidslinje.utvidelser.trim

/**
* Extension-metode for å konvertere fra Dag-tidslinje til Måned-tidslinje
* Extension-metode for å konvertere fra dag-basert tidslinje til måned-basert tidslinje
* mapper-funksjonen tar inn listen av alle dagverdiene i én måned, og returner verdien måneden skal ha
* Dagverdiene kommer i samme rekkefølge som dagene i måneden, og vil ha null-verdi hvis dagen ikke har en verdi
*/
Expand All @@ -26,7 +26,7 @@ fun <V> Tidslinje<V>.tilMåned(mapper: (List<V?>) -> V?): Tidslinje<V> =
* <mapper>-funksjonen kalles bare dersom begge dagene har en verdi.
* Return-verdien er innholdet som blir brukt for inneværende måned.
* Hvis retur-verdien er <null>, vil den resulterende måneden mangle verdi.
* Funksjonen vil bruke månedsskiftene fra måneden før tidslinjens <fraOgMed> frem til og med måneden etter <tilOgMed>
* Funksjonen vil bruke månedsskiftene fra måneden før tidslinjen starter frem til og med siste måned i tidslinjen.
*/
fun <V> Tidslinje<V>.tilMånedFraMånedsskifteIkkeNull(
mapper: (innholdSisteDagForrigeMåned: V, innholdFørsteDagDenneMåned: V) -> V?,
Expand Down Expand Up @@ -59,7 +59,7 @@ fun <V> Tidslinje<V>.tilMånedFraMånedsskifteIkkeNull(
* det vil si verdiene fra siste dag i forrige måned og første dag i inneværemde måned.
* Return-verdien er innholdet som blir brukt for inneværende måned.
* Hvis retur-verdien er <null>, vil den resulterende måneden mangle verdi.
* Funksjonen vil bruke månedsskiftene fra måneden før tidslinjens <fraOgMed> frem til og med måneden etter <tilOgMed>
* Funksjonen vil bruke månedsskiftene fra måneden før tidslinjen starter frem til og med siste måned i tidslinjen.
*/
fun <V> Tidslinje<V>.tilMånedFraMånedsskifte(
mapper: (innholdSisteDagForrigeMåned: V?, innholdFørsteDagDenneMåned: V?) -> V?,
Expand Down

0 comments on commit fb85039

Please sign in to comment.