Skip to content

Commit

Permalink
add feedback from QA
Browse files Browse the repository at this point in the history
  • Loading branch information
anderssonw committed Sep 25, 2024
1 parent d53e69e commit 6195bc4
Show file tree
Hide file tree
Showing 2 changed files with 12 additions and 8 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,11 @@ fun bygning(scope: Bygning.() -> Unit): Bygning = Bygning()
etasjedata.bruttoarealTilBolig = 0.0
etasjedata.bruttoarealTilAnnet = 0.0
etasjedata.bruttoarealTotalt = 0.0
bygningsstatusHistorikker = bygningsstatusHistorikkList(
bygningsstatusHistorikk {
registrertDato = timestampUtc(2000, 1, 1)
}
)
}
.apply(scope)
.apply {
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,32 +2,31 @@ package no.kartverket.matrikkel.bygning.matrikkel.adapters

import no.kartverket.matrikkel.bygning.matrikkelapi.id.MatrikkelBygningsstatusKode
import no.kartverket.matrikkel.bygning.matrikkelapi.toLocalDate
import no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.Timestamp
import no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.bygning.BygningsstatusHistorikk
import no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.bygning.koder.BygningsstatusKodeId
import java.time.LocalDate
import no.statkart.matrikkel.matrikkelapi.wsapi.v1.domain.bygning.Bygning as MatrikkelBygning

// TODO: Hvordan dokumentere hvor denne datoen kommer fra?
private val EARLIEST_DATE_FOR_DERIVING_BYGGEAAR = LocalDate.of(2009, 4, 25)

// TODO: Det vil være mulig å få byggeår hvor bygningsstatus er veldig langt tilbakedatert, og vi kan nok anta at disse er feil.
// Må gå opp hva "smerteterskelen" for hva som regnes som en ikke-godkjent bygningsstatusdato er
internal fun deriveByggeaarForBygning(bygning: MatrikkelBygning): Int? {
if (bygning.bygningsstatusHistorikker == null) return null

return bygning.bygningsstatusHistorikker.item
.filter { isAfterThresholdDate(it.registrertDato) }
.filter { isAfterThresholdDate(it) }
.filter { isCorrectBygningsstatusKode(it.bygningsstatusKodeId) }
.filter { isNotDeleted(it.slettetDato) }
.filter { isNotDeleted(it) }
.minByOrNull { it.dato.toLocalDate() }
?.dato
?.toLocalDate()
?.year
}

private fun isNotDeleted(slettetDato: Timestamp?): Boolean = slettetDato == null
private fun isAfterThresholdDate(bygningsstatus: BygningsstatusHistorikk): Boolean =
(bygningsstatus.registrertDato.toLocalDate() > EARLIEST_DATE_FOR_DERIVING_BYGGEAAR)

private fun isCorrectBygningsstatusKode(bygningsstatusKodeId: BygningsstatusKodeId): Boolean =
bygningsstatusKodeId == MatrikkelBygningsstatusKode.FerdigAttest() || bygningsstatusKodeId == MatrikkelBygningsstatusKode.MidlertidigBrukstillatelse()

private fun isAfterThresholdDate(registrertDato: Timestamp): Boolean =
(registrertDato.toLocalDate() > EARLIEST_DATE_FOR_DERIVING_BYGGEAAR)
private fun isNotDeleted(bygningsstatus: BygningsstatusHistorikk): Boolean = bygningsstatus.slettetDato == null

0 comments on commit 6195bc4

Please sign in to comment.