From 54b7f54ade10fe1107b0c8a5b811cc02ab0ec6e0 Mon Sep 17 00:00:00 2001 From: Jim Martens Date: Thu, 26 Oct 2023 20:52:31 +0200 Subject: [PATCH] Moved common model classes to common package --- .../twomartens/timetable/bahnApi/model/Eva.kt | 4 +-- .../controller/TimetableController.kt | 2 +- .../model/{db => common}/CoachCapacity.kt | 2 +- .../model/{db => common}/CountryCode.kt | 4 +-- .../timetable/model/{db => common}/Depot.kt | 2 +- .../timetable/model/common/FormationId.kt | 14 +++++++++ .../model/{db => common}/Platform.kt | 2 +- .../timetable/model/{db => common}/Portal.kt | 2 +- .../timetable/model/common/Section.kt | 12 ++++++++ .../timetable/model/common/ServiceId.kt | 12 ++++++++ .../timetable/model/common/StationId.kt | 30 +++++++++++++++++++ .../timetable/model/common/TrackId.kt | 12 ++++++++ .../timetable/model/common/UserId.kt | 12 ++++++++ .../timetable/model/db/Formation.kt | 2 ++ .../timetable/model/db/FormationId.kt | 6 ---- .../twomartens/timetable/model/db/Section.kt | 6 ---- .../twomartens/timetable/model/db/Station.kt | 2 ++ .../timetable/model/db/StationId.kt | 29 ------------------ .../twomartens/timetable/model/db/TrackId.kt | 6 ---- .../twomartens/timetable/model/db/TswRoute.kt | 1 + .../de/twomartens/timetable/model/db/User.kt | 1 + .../twomartens/timetable/model/db/UserId.kt | 6 ---- .../repository/TswRouteRepository.kt | 2 +- 23 files changed, 108 insertions(+), 63 deletions(-) rename module-server/src/main/kotlin/de/twomartens/timetable/model/{db => common}/CoachCapacity.kt (73%) rename module-server/src/main/kotlin/de/twomartens/timetable/model/{db => common}/CountryCode.kt (72%) rename module-server/src/main/kotlin/de/twomartens/timetable/model/{db => common}/Depot.kt (86%) create mode 100644 module-server/src/main/kotlin/de/twomartens/timetable/model/common/FormationId.kt rename module-server/src/main/kotlin/de/twomartens/timetable/model/{db => common}/Platform.kt (67%) rename module-server/src/main/kotlin/de/twomartens/timetable/model/{db => common}/Portal.kt (83%) create mode 100644 module-server/src/main/kotlin/de/twomartens/timetable/model/common/Section.kt create mode 100644 module-server/src/main/kotlin/de/twomartens/timetable/model/common/ServiceId.kt create mode 100644 module-server/src/main/kotlin/de/twomartens/timetable/model/common/StationId.kt create mode 100644 module-server/src/main/kotlin/de/twomartens/timetable/model/common/TrackId.kt create mode 100644 module-server/src/main/kotlin/de/twomartens/timetable/model/common/UserId.kt delete mode 100644 module-server/src/main/kotlin/de/twomartens/timetable/model/db/FormationId.kt delete mode 100644 module-server/src/main/kotlin/de/twomartens/timetable/model/db/Section.kt delete mode 100644 module-server/src/main/kotlin/de/twomartens/timetable/model/db/StationId.kt delete mode 100644 module-server/src/main/kotlin/de/twomartens/timetable/model/db/TrackId.kt delete mode 100644 module-server/src/main/kotlin/de/twomartens/timetable/model/db/UserId.kt diff --git a/module-server/src/main/kotlin/de/twomartens/timetable/bahnApi/model/Eva.kt b/module-server/src/main/kotlin/de/twomartens/timetable/bahnApi/model/Eva.kt index 19a8ee6..39a9ee8 100644 --- a/module-server/src/main/kotlin/de/twomartens/timetable/bahnApi/model/Eva.kt +++ b/module-server/src/main/kotlin/de/twomartens/timetable/bahnApi/model/Eva.kt @@ -1,6 +1,6 @@ package de.twomartens.timetable.bahnApi.model -import de.twomartens.timetable.model.db.StationId +import de.twomartens.timetable.model.common.StationId @JvmInline value class Eva(val value: Int) { @@ -18,7 +18,7 @@ value class Eva(val value: Int) { val UNKNOWN = Eva(-1) fun of(stationId: StationId): Eva { - return Eva(stationId.stationIdWithinCountry.name.toInt()) + return Eva(stationId.stationIdWithinCountry.toInt()) } } } diff --git a/module-server/src/main/kotlin/de/twomartens/timetable/controller/TimetableController.kt b/module-server/src/main/kotlin/de/twomartens/timetable/controller/TimetableController.kt index 83244bb..2848223 100644 --- a/module-server/src/main/kotlin/de/twomartens/timetable/controller/TimetableController.kt +++ b/module-server/src/main/kotlin/de/twomartens/timetable/controller/TimetableController.kt @@ -1,7 +1,7 @@ package de.twomartens.timetable.controller import de.twomartens.timetable.bahnApi.service.ScheduledTaskService -import de.twomartens.timetable.model.db.UserId +import de.twomartens.timetable.model.common.UserId import de.twomartens.timetable.repository.TswRouteRepository import de.twomartens.timetable.types.NonEmptyString import io.swagger.v3.oas.annotations.Operation diff --git a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/CoachCapacity.kt b/module-server/src/main/kotlin/de/twomartens/timetable/model/common/CoachCapacity.kt similarity index 73% rename from module-server/src/main/kotlin/de/twomartens/timetable/model/db/CoachCapacity.kt rename to module-server/src/main/kotlin/de/twomartens/timetable/model/common/CoachCapacity.kt index 29516d0..f104c33 100644 --- a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/CoachCapacity.kt +++ b/module-server/src/main/kotlin/de/twomartens/timetable/model/common/CoachCapacity.kt @@ -1,4 +1,4 @@ -package de.twomartens.timetable.model.db +package de.twomartens.timetable.model.common import de.twomartens.timetable.types.PositiveInteger diff --git a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/CountryCode.kt b/module-server/src/main/kotlin/de/twomartens/timetable/model/common/CountryCode.kt similarity index 72% rename from module-server/src/main/kotlin/de/twomartens/timetable/model/db/CountryCode.kt rename to module-server/src/main/kotlin/de/twomartens/timetable/model/common/CountryCode.kt index c1947a6..93e5953 100644 --- a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/CountryCode.kt +++ b/module-server/src/main/kotlin/de/twomartens/timetable/model/common/CountryCode.kt @@ -1,11 +1,11 @@ -package de.twomartens.timetable.model.db +package de.twomartens.timetable.model.common import de.twomartens.timetable.types.NonEmptyString @JvmInline value class CountryCode(val countryCode: NonEmptyString) { init { - require(countryCode.name.length == 2) { + require(countryCode.value.length == 2) { "CountryCode must be only two characters long to conform to ISO 3166-1 alpha-2" } } diff --git a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/Depot.kt b/module-server/src/main/kotlin/de/twomartens/timetable/model/common/Depot.kt similarity index 86% rename from module-server/src/main/kotlin/de/twomartens/timetable/model/db/Depot.kt rename to module-server/src/main/kotlin/de/twomartens/timetable/model/common/Depot.kt index cf530ad..4a42250 100644 --- a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/Depot.kt +++ b/module-server/src/main/kotlin/de/twomartens/timetable/model/common/Depot.kt @@ -1,4 +1,4 @@ -package de.twomartens.timetable.model.db +package de.twomartens.timetable.model.common import de.twomartens.timetable.types.NonEmptyString import kotlin.time.Duration diff --git a/module-server/src/main/kotlin/de/twomartens/timetable/model/common/FormationId.kt b/module-server/src/main/kotlin/de/twomartens/timetable/model/common/FormationId.kt new file mode 100644 index 0000000..722d073 --- /dev/null +++ b/module-server/src/main/kotlin/de/twomartens/timetable/model/common/FormationId.kt @@ -0,0 +1,14 @@ +package de.twomartens.timetable.model.common + +import de.twomartens.timetable.types.PositiveInteger + +@JvmInline +value class FormationId private constructor(val id: Int) { + companion object { + val EMPTY = FormationId(-1) + + fun of(id: PositiveInteger): FormationId { + return FormationId(id.value) + } + } +} \ No newline at end of file diff --git a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/Platform.kt b/module-server/src/main/kotlin/de/twomartens/timetable/model/common/Platform.kt similarity index 67% rename from module-server/src/main/kotlin/de/twomartens/timetable/model/db/Platform.kt rename to module-server/src/main/kotlin/de/twomartens/timetable/model/common/Platform.kt index dc81689..7734597 100644 --- a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/Platform.kt +++ b/module-server/src/main/kotlin/de/twomartens/timetable/model/common/Platform.kt @@ -1,4 +1,4 @@ -package de.twomartens.timetable.model.db +package de.twomartens.timetable.model.common data class Platform( var name: String, diff --git a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/Portal.kt b/module-server/src/main/kotlin/de/twomartens/timetable/model/common/Portal.kt similarity index 83% rename from module-server/src/main/kotlin/de/twomartens/timetable/model/db/Portal.kt rename to module-server/src/main/kotlin/de/twomartens/timetable/model/common/Portal.kt index ad359c4..5b97269 100644 --- a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/Portal.kt +++ b/module-server/src/main/kotlin/de/twomartens/timetable/model/common/Portal.kt @@ -1,4 +1,4 @@ -package de.twomartens.timetable.model.db +package de.twomartens.timetable.model.common import de.twomartens.timetable.types.NonEmptyString import kotlin.time.Duration diff --git a/module-server/src/main/kotlin/de/twomartens/timetable/model/common/Section.kt b/module-server/src/main/kotlin/de/twomartens/timetable/model/common/Section.kt new file mode 100644 index 0000000..0ab94df --- /dev/null +++ b/module-server/src/main/kotlin/de/twomartens/timetable/model/common/Section.kt @@ -0,0 +1,12 @@ +package de.twomartens.timetable.model.common + +import de.twomartens.timetable.types.NonEmptyString + +@JvmInline +value class Section private constructor(val value: String) { + companion object { + fun of(section: NonEmptyString): Section { + return Section(section.value) + } + } +} diff --git a/module-server/src/main/kotlin/de/twomartens/timetable/model/common/ServiceId.kt b/module-server/src/main/kotlin/de/twomartens/timetable/model/common/ServiceId.kt new file mode 100644 index 0000000..2a4ce8a --- /dev/null +++ b/module-server/src/main/kotlin/de/twomartens/timetable/model/common/ServiceId.kt @@ -0,0 +1,12 @@ +package de.twomartens.timetable.model.common + +import de.twomartens.timetable.types.NonEmptyString + +@JvmInline +value class ServiceId private constructor(val value: String) { + companion object { + fun of(id: NonEmptyString): ServiceId { + return ServiceId(id.value) + } + } +} diff --git a/module-server/src/main/kotlin/de/twomartens/timetable/model/common/StationId.kt b/module-server/src/main/kotlin/de/twomartens/timetable/model/common/StationId.kt new file mode 100644 index 0000000..9e80ce6 --- /dev/null +++ b/module-server/src/main/kotlin/de/twomartens/timetable/model/common/StationId.kt @@ -0,0 +1,30 @@ +package de.twomartens.timetable.model.common + +import de.twomartens.timetable.types.NonEmptyString + +@JvmInline +value class StationId private constructor(val value: String) { + + companion object { + private val idPattern = Regex("^\\w{2}-(?\\w.*)") + + fun of(id: NonEmptyString): StationId { + require(idPattern.matches(id.value)) { + "StationId must start with two character country code, followed by a dash, " + + "and at least one word character" + } + + return StationId(id.value) + } + } + + val stationIdWithinCountry: String + get() { + val matchResult = idPattern.matchEntire(value) + val groupMatch = matchResult?.groups?.get("countryStationId")?.value + + require(matchResult != null && groupMatch != null) + + return groupMatch + } +} diff --git a/module-server/src/main/kotlin/de/twomartens/timetable/model/common/TrackId.kt b/module-server/src/main/kotlin/de/twomartens/timetable/model/common/TrackId.kt new file mode 100644 index 0000000..b28a528 --- /dev/null +++ b/module-server/src/main/kotlin/de/twomartens/timetable/model/common/TrackId.kt @@ -0,0 +1,12 @@ +package de.twomartens.timetable.model.common + +import de.twomartens.timetable.types.PositiveInteger + +@JvmInline +value class TrackId private constructor(val value: Int) { + companion object { + fun of(id: PositiveInteger): TrackId { + return TrackId(id.value) + } + } +} diff --git a/module-server/src/main/kotlin/de/twomartens/timetable/model/common/UserId.kt b/module-server/src/main/kotlin/de/twomartens/timetable/model/common/UserId.kt new file mode 100644 index 0000000..82de538 --- /dev/null +++ b/module-server/src/main/kotlin/de/twomartens/timetable/model/common/UserId.kt @@ -0,0 +1,12 @@ +package de.twomartens.timetable.model.common + +import de.twomartens.timetable.types.NonEmptyString + +@JvmInline +value class UserId private constructor(val value: String) { + companion object { + fun of(id: NonEmptyString): UserId { + return UserId(id.value) + } + } +} diff --git a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/Formation.kt b/module-server/src/main/kotlin/de/twomartens/timetable/model/db/Formation.kt index 3b31d5f..88af887 100644 --- a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/Formation.kt +++ b/module-server/src/main/kotlin/de/twomartens/timetable/model/db/Formation.kt @@ -1,5 +1,7 @@ package de.twomartens.timetable.model.db +import de.twomartens.timetable.model.common.FormationId +import de.twomartens.timetable.model.common.UserId import de.twomartens.timetable.types.NonEmptyString import org.bson.types.ObjectId import org.springframework.data.annotation.CreatedDate diff --git a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/FormationId.kt b/module-server/src/main/kotlin/de/twomartens/timetable/model/db/FormationId.kt deleted file mode 100644 index 11af083..0000000 --- a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/FormationId.kt +++ /dev/null @@ -1,6 +0,0 @@ -package de.twomartens.timetable.model.db - -import de.twomartens.timetable.types.PositiveInteger - -@JvmInline -value class FormationId(val id: PositiveInteger) \ No newline at end of file diff --git a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/Section.kt b/module-server/src/main/kotlin/de/twomartens/timetable/model/db/Section.kt deleted file mode 100644 index 5bdde2e..0000000 --- a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/Section.kt +++ /dev/null @@ -1,6 +0,0 @@ -package de.twomartens.timetable.model.db - -import de.twomartens.timetable.types.NonEmptyString - -@JvmInline -value class Section(val name: NonEmptyString) diff --git a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/Station.kt b/module-server/src/main/kotlin/de/twomartens/timetable/model/db/Station.kt index 70d5af1..2a4886c 100644 --- a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/Station.kt +++ b/module-server/src/main/kotlin/de/twomartens/timetable/model/db/Station.kt @@ -1,5 +1,7 @@ package de.twomartens.timetable.model.db +import de.twomartens.timetable.model.common.Platform +import de.twomartens.timetable.model.common.StationId import org.bson.types.ObjectId import org.springframework.data.annotation.CreatedDate import org.springframework.data.annotation.Id diff --git a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/StationId.kt b/module-server/src/main/kotlin/de/twomartens/timetable/model/db/StationId.kt deleted file mode 100644 index dabfc23..0000000 --- a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/StationId.kt +++ /dev/null @@ -1,29 +0,0 @@ -package de.twomartens.timetable.model.db - -import de.twomartens.timetable.types.NonEmptyString - -@JvmInline -value class StationId(val id: NonEmptyString) { - init { - require(idPattern.matches(id.name)) { - "StationId must start with two character country code, followed by a dash, " + - "and at least one word character" - } - } - - companion object { - private val idPattern = Regex("^\\w{2}-(?\\w.*)") - } - - val stationIdWithinCountry: NonEmptyString - get() { - val matchResult = idPattern.matchEntire(id.name) - val groupMatch = matchResult?.groups?.get("countryStationId")?.value - return when { - matchResult == null || groupMatch == null -> - throw IllegalArgumentException("id wasn't matched by pattern") - - else -> NonEmptyString(groupMatch) - } - } -} diff --git a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/TrackId.kt b/module-server/src/main/kotlin/de/twomartens/timetable/model/db/TrackId.kt deleted file mode 100644 index 6424aa3..0000000 --- a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/TrackId.kt +++ /dev/null @@ -1,6 +0,0 @@ -package de.twomartens.timetable.model.db - -import de.twomartens.timetable.types.PositiveInteger - -@JvmInline -value class TrackId(val id: PositiveInteger) diff --git a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/TswRoute.kt b/module-server/src/main/kotlin/de/twomartens/timetable/model/db/TswRoute.kt index e763ad0..8ce25b4 100644 --- a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/TswRoute.kt +++ b/module-server/src/main/kotlin/de/twomartens/timetable/model/db/TswRoute.kt @@ -1,5 +1,6 @@ package de.twomartens.timetable.model.db +import de.twomartens.timetable.model.common.* import de.twomartens.timetable.types.NonEmptyString import org.bson.types.ObjectId import org.springframework.data.annotation.CreatedDate diff --git a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/User.kt b/module-server/src/main/kotlin/de/twomartens/timetable/model/db/User.kt index d80333e..1e79f3a 100644 --- a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/User.kt +++ b/module-server/src/main/kotlin/de/twomartens/timetable/model/db/User.kt @@ -1,5 +1,6 @@ package de.twomartens.timetable.model.db +import de.twomartens.timetable.model.common.UserId import de.twomartens.timetable.types.NonEmptyString import org.bson.types.ObjectId import org.springframework.data.annotation.CreatedDate diff --git a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/UserId.kt b/module-server/src/main/kotlin/de/twomartens/timetable/model/db/UserId.kt deleted file mode 100644 index 63b7d7f..0000000 --- a/module-server/src/main/kotlin/de/twomartens/timetable/model/db/UserId.kt +++ /dev/null @@ -1,6 +0,0 @@ -package de.twomartens.timetable.model.db - -import de.twomartens.timetable.types.NonEmptyString - -@JvmInline -value class UserId(val id: NonEmptyString) diff --git a/module-server/src/main/kotlin/de/twomartens/timetable/repository/TswRouteRepository.kt b/module-server/src/main/kotlin/de/twomartens/timetable/repository/TswRouteRepository.kt index 999e8ba..67d5420 100644 --- a/module-server/src/main/kotlin/de/twomartens/timetable/repository/TswRouteRepository.kt +++ b/module-server/src/main/kotlin/de/twomartens/timetable/repository/TswRouteRepository.kt @@ -1,7 +1,7 @@ package de.twomartens.timetable.repository +import de.twomartens.timetable.model.common.UserId import de.twomartens.timetable.model.db.TswRoute -import de.twomartens.timetable.model.db.UserId import de.twomartens.timetable.types.NonEmptyString import org.bson.types.ObjectId import org.springframework.data.mongodb.repository.MongoRepository