Skip to content

Commit

Permalink
Merge pull request #124 from kartverket/TB-91-app-arkitektur
Browse files Browse the repository at this point in the history
TB-91 Endringer i applikasjonsarkitektur
  • Loading branch information
henriwi authored Oct 28, 2024
2 parents 27d0cbb + ac4a89a commit 771cd60
Show file tree
Hide file tree
Showing 79 changed files with 589 additions and 410 deletions.
2 changes: 1 addition & 1 deletion Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -2,5 +2,5 @@ FROM eclipse-temurin:21-jdk-alpine
ENV TZ=Europe/Oslo
EXPOSE ${PORT:-8080}:${PORT:-8080}
RUN mkdir /app
COPY /build/libs/matrikkel-bygning-egenregistrering-all.jar /app/app.jar
COPY /web/build/libs/app.jar /app/app.jar
ENTRYPOINT ["java", "-jar", "/app/app.jar"]
49 changes: 49 additions & 0 deletions application/build.gradle.kts
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
import org.gradle.api.tasks.testing.logging.TestExceptionFormat
import org.gradle.api.tasks.testing.logging.TestLogEvent.FAILED
import org.gradle.api.tasks.testing.logging.TestLogEvent.PASSED
import org.gradle.api.tasks.testing.logging.TestLogEvent.SKIPPED

plugins {
kotlin("jvm")
kotlin("plugin.serialization").version(libs.versions.kotlinVersion)

`jvm-test-suite`
}

dependencies {
// Error handling
api(libs.kotlin.result)

// Serialization
// TODO: Bør helst ikke måtte ligge i application (skyldes lagring i databasen)
implementation(libs.ktor.serialization.kotlinx)

// Norwegian Commons
implementation(libs.norwegian.commons)
}

tasks.withType<Test> {
testLogging {
showCauses = true
showExceptions = true
exceptionFormat = TestExceptionFormat.FULL
events(PASSED, SKIPPED, FAILED)
}
}

@Suppress("UnstableApiUsage")
testing {
suites {
withType<JvmTestSuite> {
useJUnitJupiter()
}

named<JvmTestSuite>("test") {
dependencies {
implementation(libs.kotlin.test)
implementation(libs.assertk)
implementation(libs.mockk)
}
}
}
}
Original file line number Diff line number Diff line change
@@ -1,8 +1,8 @@
package no.kartverket.matrikkel.bygning.matrikkel
package no.kartverket.matrikkel.bygning.application.bygning

import com.github.michaelbull.result.Result
import no.kartverket.matrikkel.bygning.models.Bygning
import no.kartverket.matrikkel.bygning.models.responses.ErrorDetail
import no.kartverket.matrikkel.bygning.application.models.Bygning
import no.kartverket.matrikkel.bygning.application.models.error.ErrorDetail

interface BygningClient {
fun getBygningById(id: Long): Result<Bygning, ErrorDetail>
Expand Down
Original file line number Diff line number Diff line change
@@ -1,21 +1,22 @@
package no.kartverket.matrikkel.bygning.services
package no.kartverket.matrikkel.bygning.application.bygning

import no.kartverket.matrikkel.bygning.application.models.Bruksenhet
import no.kartverket.matrikkel.bygning.application.models.Bygning
import no.kartverket.matrikkel.bygning.application.models.error.ErrorDetail
import no.kartverket.matrikkel.bygning.application.models.withEgenregistrertData
import no.kartverket.matrikkel.bygning.application.egenregistrering.EgenregistreringService
import com.github.michaelbull.result.Result
import com.github.michaelbull.result.andThen
import com.github.michaelbull.result.flatMap
import com.github.michaelbull.result.map
import com.github.michaelbull.result.toResultOr
import no.kartverket.matrikkel.bygning.matrikkel.BygningClient
import no.kartverket.matrikkel.bygning.models.Bruksenhet
import no.kartverket.matrikkel.bygning.models.Bygning
import no.kartverket.matrikkel.bygning.models.responses.ErrorDetail
import no.kartverket.matrikkel.bygning.models.withEgenregistrertData

class BygningService(
private val bygningClient: BygningClient,
private val egenregistreringService: EgenregistreringService
) {
fun getBygningWithEgenregistrertData(bygningId: Long): Result<Bygning, ErrorDetail> {

return bygningClient
.getBygningById(bygningId)
.andThen { bygning ->
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,10 @@
package no.kartverket.matrikkel.bygning.application.egenregistrering

import com.github.michaelbull.result.Result
import no.kartverket.matrikkel.bygning.application.models.Egenregistrering
import no.kartverket.matrikkel.bygning.application.models.error.ErrorDetail

interface EgenregistreringRepository {
fun getAllEgenregistreringerForBygning(bygningId: Long): Result<List<Egenregistrering>, ErrorDetail>
fun saveEgenregistrering(egenregistrering: Egenregistrering): Result<Unit, ErrorDetail>
}
Original file line number Diff line number Diff line change
@@ -1,13 +1,12 @@
package no.kartverket.matrikkel.bygning.services
package no.kartverket.matrikkel.bygning.application.egenregistrering

import com.github.michaelbull.result.Err
import com.github.michaelbull.result.Ok
import com.github.michaelbull.result.Result
import com.github.michaelbull.result.andThen
import no.kartverket.matrikkel.bygning.matrikkel.BygningClient
import no.kartverket.matrikkel.bygning.models.Egenregistrering
import no.kartverket.matrikkel.bygning.models.responses.ErrorDetail
import no.kartverket.matrikkel.bygning.repositories.EgenregistreringRepository
import no.kartverket.matrikkel.bygning.application.bygning.BygningClient
import no.kartverket.matrikkel.bygning.application.models.Egenregistrering
import no.kartverket.matrikkel.bygning.application.models.error.ErrorDetail

class EgenregistreringService(
private val bygningClient: BygningClient,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,8 +1,9 @@
package no.kartverket.matrikkel.bygning.services
package no.kartverket.matrikkel.bygning.application.egenregistrering

import no.kartverket.matrikkel.bygning.application.models.Bygning
import no.kartverket.matrikkel.bygning.application.models.Egenregistrering
import no.kartverket.matrikkel.bygning.application.models.error.ErrorDetail

import no.kartverket.matrikkel.bygning.models.Bygning
import no.kartverket.matrikkel.bygning.models.Egenregistrering
import no.kartverket.matrikkel.bygning.models.responses.ErrorDetail

class EgenregistreringValidator {
companion object {
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,5 @@
package no.kartverket.matrikkel.bygning.application.health

interface HealthRepository {
fun isHealthy(): Boolean
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,7 @@
package no.kartverket.matrikkel.bygning.application.health

class HealthService(private val healthRepository: HealthRepository) {
fun isHealthy(): Boolean {
return healthRepository.isHealthy()
}
}
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
package no.kartverket.matrikkel.bygning.models
package no.kartverket.matrikkel.bygning.application.models

import no.kartverket.matrikkel.bygning.models.kodelister.AvlopKode
import no.kartverket.matrikkel.bygning.models.kodelister.EnergikildeKode
import no.kartverket.matrikkel.bygning.models.kodelister.OppvarmingKode
import no.kartverket.matrikkel.bygning.models.kodelister.VannforsyningKode
import no.kartverket.matrikkel.bygning.application.models.kodelister.AvlopKode
import no.kartverket.matrikkel.bygning.application.models.kodelister.EnergikildeKode
import no.kartverket.matrikkel.bygning.application.models.kodelister.OppvarmingKode
import no.kartverket.matrikkel.bygning.application.models.kodelister.VannforsyningKode
import java.time.Instant

data class Bygning(
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package no.kartverket.matrikkel.bygning.models
package no.kartverket.matrikkel.bygning.application.models

/**
* Burde vi kanskje sortere egenregistreringer her, da vi er avhengig av at egenregistreringene er sortert her,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,11 +1,11 @@
package no.kartverket.matrikkel.bygning.models
package no.kartverket.matrikkel.bygning.application.models

import kotlinx.serialization.Serializable
import no.kartverket.matrikkel.bygning.models.RegistreringAktoer.*
import no.kartverket.matrikkel.bygning.models.kodelister.AvlopKode
import no.kartverket.matrikkel.bygning.models.kodelister.EnergikildeKode
import no.kartverket.matrikkel.bygning.models.kodelister.OppvarmingKode
import no.kartverket.matrikkel.bygning.models.kodelister.VannforsyningKode
import no.kartverket.matrikkel.bygning.application.models.kodelister.AvlopKode
import no.kartverket.matrikkel.bygning.application.models.kodelister.EnergikildeKode
import no.kartverket.matrikkel.bygning.application.models.kodelister.OppvarmingKode
import no.kartverket.matrikkel.bygning.application.models.kodelister.VannforsyningKode
import no.kartverket.matrikkel.bygning.application.models.RegistreringAktoer.Foedselsnummer
import java.time.Instant
import java.util.*

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package no.kartverket.matrikkel.bygning.models
package no.kartverket.matrikkel.bygning.application.models

import no.bekk.bekkopen.person.FodselsnummerValidator

Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
package no.kartverket.matrikkel.bygning.application.models.error

data class ErrorDetail(
val pointer: String? = null,
val detail: String
)
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
package no.kartverket.matrikkel.bygning.models.kodelister
package no.kartverket.matrikkel.bygning.application.models.kodelister

// Kan det finnes flere presentasjonsnavn på én kode? For eksempel per ett på bokmål og ett på nynorsk?
interface IKode {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,18 @@
package no.kartverket.matrikkel.bygning.models
package no.kartverket.matrikkel.bygning.application

import assertk.assertThat
import assertk.assertions.isEqualTo
import no.kartverket.matrikkel.bygning.models.RegistreringAktoer.*
import no.kartverket.matrikkel.bygning.application.models.BruksarealRegistrering
import no.kartverket.matrikkel.bygning.application.models.Bruksenhet
import no.kartverket.matrikkel.bygning.application.models.BruksenhetRegistrering
import no.kartverket.matrikkel.bygning.application.models.Bygning
import no.kartverket.matrikkel.bygning.application.models.BygningRegistrering
import no.kartverket.matrikkel.bygning.application.models.Egenregistrering
import no.kartverket.matrikkel.bygning.application.models.Multikilde
import no.kartverket.matrikkel.bygning.application.models.withEgenregistrertData
import no.kartverket.matrikkel.bygning.application.models.RegistreringAktoer.*
import java.time.Instant
import java.util.UUID
import java.util.*
import kotlin.test.Test

class BygningExtensionsTest {
Expand Down Expand Up @@ -76,8 +84,7 @@ class BygningExtensionsTest {
fun `registrering med tom liste paa listeregistering skal ikke sette felt paa bruksenhet`() {
val bruksenhet = defaultBruksenhet.withEgenregistrertData(listOf(defaultEgenregistrering))

assertThat(bruksenhet.oppvarminger).isEmpty()
assertThat(bruksenhet.oppvarminger).isEmpty()
assertThat(bruksenhet.energikilder).isEmpty()
}
}

Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
package no.kartverket.matrikkel.bygning.models
package no.kartverket.matrikkel.bygning.application

import assertk.Assert
import assertk.all
import assertk.assertions.isNotNull
import assertk.assertions.isNull
import assertk.assertions.prop
import no.kartverket.matrikkel.bygning.application.models.Multikilde

fun <T : Any> Assert<Multikilde<T>>.isEmpty() {
prop(Multikilde<T>::autoritativ).isNull()
Expand Down
Original file line number Diff line number Diff line change
@@ -1,10 +1,10 @@
package no.kartverket.matrikkel.bygning.models
package no.kartverket.matrikkel.bygning.application

import assertk.assertFailure
import assertk.assertThat
import assertk.assertions.isEqualTo
import assertk.assertions.messageContains
import no.kartverket.matrikkel.bygning.models.RegistreringAktoer.*
import no.kartverket.matrikkel.bygning.application.models.RegistreringAktoer.*
import kotlin.test.Test

class RegistreringAktoerTest {
Expand Down
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
package no.kartverket.matrikkel.bygning.services
package no.kartverket.matrikkel.bygning.application.egenregistrering

import assertk.assertThat
import assertk.assertions.contains
import assertk.assertions.hasSize
import no.kartverket.matrikkel.bygning.models.Bruksenhet
import no.kartverket.matrikkel.bygning.models.BruksenhetRegistrering
import no.kartverket.matrikkel.bygning.models.Bygning
import no.kartverket.matrikkel.bygning.models.BygningRegistrering
import no.kartverket.matrikkel.bygning.models.Egenregistrering
import no.kartverket.matrikkel.bygning.models.RegistreringAktoer.Foedselsnummer
import no.kartverket.matrikkel.bygning.application.models.Bruksenhet
import no.kartverket.matrikkel.bygning.application.models.BruksenhetRegistrering
import no.kartverket.matrikkel.bygning.application.models.Bygning
import no.kartverket.matrikkel.bygning.application.models.BygningRegistrering
import no.kartverket.matrikkel.bygning.application.models.Egenregistrering
import no.kartverket.matrikkel.bygning.application.models.RegistreringAktoer.Foedselsnummer
import java.time.Instant
import java.util.UUID
import kotlin.test.Test
Expand Down
Loading

0 comments on commit 771cd60

Please sign in to comment.