Skip to content

Commit

Permalink
Legg til støtte for å lage Periodisering av en liste med Periodiserbar
Browse files Browse the repository at this point in the history
  • Loading branch information
hestad committed Dec 12, 2024
1 parent f3fd5ec commit f04e341
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 2 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,7 @@ import java.time.LocalDate
* Periodene må være sortert.
*/
data class Periodisering<T>(

val perioderMedVerdi: List<PeriodeMedVerdi<T>>,
) : List<PeriodeMedVerdi<T>> by perioderMedVerdi {
constructor(vararg periodeMedVerdi: PeriodeMedVerdi<T>) : this(periodeMedVerdi.toList())
Expand Down Expand Up @@ -35,7 +36,7 @@ data class Periodisering<T>(

companion object {
fun <T> empty(): Periodisering<T> {
return Periodisering(emptyList())
return Periodisering(emptyList<PeriodeMedVerdi<T>>())
}

fun <T> List<Periodisering<T>>.reduser(sammensattVerdi: (T, T) -> T): Periodisering<T> {
Expand All @@ -47,6 +48,14 @@ data class Periodisering<T>(
total.kombiner(next, sammensattVerdi).slåSammenTilstøtendePerioder()
}
}

operator fun <T : Periodiserbar> invoke(
vararg periode: T,
) = Periodisering(periode.map { PeriodeMedVerdi(it, it.periode) })

operator fun <T : Periodiserbar> invoke(
perioder: List<T>,
) = Periodisering(perioder.map { PeriodeMedVerdi(it, it.periode) })
}

// Offentlig API:
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,7 @@ package no.nav.tiltakspenger.libs.periodisering
* Brukes for å lage en tidslinje av periodiserbare objekter, som f.eks. vedtak.
*/
fun <T : Periodiserbar> List<T>.toTidslinje(): Periodisering<T> {
if (this.isEmpty()) return Periodisering(emptyList())
if (this.isEmpty()) return Periodisering.empty()
if (this.size == 1) return Periodisering(this.first(), this.first().periode)
this.map { it.opprettet }.distinct().let {
require(it.size == this.size) { "Støtter ikke lage tidslinje når 2 elementer er opprettet samtidig." }
Expand Down

0 comments on commit f04e341

Please sign in to comment.