From d19a88c0354a04d3b01d4fd68d2e26b4a8dfbf97 Mon Sep 17 00:00:00 2001 From: deka91 Date: Wed, 11 Jun 2025 10:28:00 +0200 Subject: [PATCH] Implement extension functions for legs to replace stopPointRef with parentRef --- .../ojp/data/dto/response/tir/LegDto.kt | 11 ++++++++++- .../ojp/data/dto/response/tir/TripResultDto.kt | 2 +- .../ojp/data/dto/response/tir/leg/LegAlightDto.kt | 5 +++++ .../ojp/data/dto/response/tir/leg/LegBoardDto.kt | 5 +++++ .../data/dto/response/tir/leg/LegIntermediateDto.kt | 5 +++++ .../ojp/data/dto/response/tir/leg/TimedLegDto.kt | 9 +++++++++ .../data/dto/response/tir/trips/AbstractTripDto.kt | 5 +++-- .../ojp/data/dto/response/tir/trips/TripDto.kt | 10 +++++++--- 8 files changed, 45 insertions(+), 7 deletions(-) diff --git a/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/LegDto.kt b/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/LegDto.kt index dfa3ff2..87f4051 100644 --- a/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/LegDto.kt +++ b/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/LegDto.kt @@ -1,10 +1,12 @@ package ch.opentransportdata.ojp.data.dto.response.tir import android.os.Parcelable +import ch.opentransportdata.ojp.data.dto.response.PlacesDto import ch.opentransportdata.ojp.data.dto.response.tir.leg.AbstractLegType import ch.opentransportdata.ojp.data.dto.response.tir.leg.ContinuousLegDto import ch.opentransportdata.ojp.data.dto.response.tir.leg.TimedLegDto import ch.opentransportdata.ojp.data.dto.response.tir.leg.TransferLegDto +import ch.opentransportdata.ojp.data.dto.response.tir.leg.replaceWithParentRef import com.tickaroo.tikxml.annotation.Element import com.tickaroo.tikxml.annotation.PropertyElement import com.tickaroo.tikxml.annotation.Xml @@ -27,7 +29,6 @@ data class LegDto( val transferLeg: TransferLegDto? = null, @Element(name = "ContinuousLeg") val continuousLeg: ContinuousLegDto? = null - ) : Parcelable { val legType: AbstractLegType? @@ -42,4 +43,12 @@ fun LegDto.minimalCopy(): LegDto { transferLeg = transferLeg, continuousLeg = continuousLeg ) +} + +fun LegDto.replaceWithParentRef(places: PlacesDto): LegDto { + return this.copy( + timedLeg = timedLeg?.replaceWithParentRef(places), + transferLeg = transferLeg, + continuousLeg = continuousLeg + ) } \ No newline at end of file diff --git a/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/TripResultDto.kt b/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/TripResultDto.kt index ff07a99..bb2c183 100644 --- a/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/TripResultDto.kt +++ b/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/TripResultDto.kt @@ -24,7 +24,7 @@ data class TripResultDto( val TripResultDto.minimalTripResult: TripResultDto get() = TripResultDto( - trip = trip?.minimalCopy(), + trip = trip?.minimalCopy(places = null), id = id, isAlternativeOption = null ) \ No newline at end of file diff --git a/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/leg/LegAlightDto.kt b/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/leg/LegAlightDto.kt index faa836d..3efb933 100644 --- a/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/leg/LegAlightDto.kt +++ b/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/leg/LegAlightDto.kt @@ -2,6 +2,7 @@ package ch.opentransportdata.ojp.data.dto.response.tir.leg import android.os.Parcelable import ch.opentransportdata.ojp.data.dto.response.NameDto +import ch.opentransportdata.ojp.data.dto.response.PlacesDto import com.tickaroo.tikxml.annotation.Element import com.tickaroo.tikxml.annotation.PropertyElement import com.tickaroo.tikxml.annotation.Xml @@ -68,3 +69,7 @@ fun LegAlightDto.minimalCopy(): LegAlightDto { noAlightingAtStop = null, ) } + +fun LegAlightDto.replaceWithParentRef(places: PlacesDto): LegAlightDto { + return this.copy(stopPointRef = places.findParentStation(stopPointRef)) +} \ No newline at end of file diff --git a/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/leg/LegBoardDto.kt b/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/leg/LegBoardDto.kt index c666688..f8b3691 100644 --- a/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/leg/LegBoardDto.kt +++ b/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/leg/LegBoardDto.kt @@ -2,6 +2,7 @@ package ch.opentransportdata.ojp.data.dto.response.tir.leg import android.os.Parcelable import ch.opentransportdata.ojp.data.dto.response.NameDto +import ch.opentransportdata.ojp.data.dto.response.PlacesDto import com.tickaroo.tikxml.annotation.Element import com.tickaroo.tikxml.annotation.PropertyElement import com.tickaroo.tikxml.annotation.Xml @@ -65,3 +66,7 @@ fun LegBoardDto.minimalCopy(): LegBoardDto { noAlightingAtStop = null, ) } + +fun LegBoardDto.replaceWithParentRef(places: PlacesDto): LegBoardDto { + return this.copy(stopPointRef = places.findParentStation(stopPointRef)) +} \ No newline at end of file diff --git a/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/leg/LegIntermediateDto.kt b/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/leg/LegIntermediateDto.kt index b5bd00f..1127bd8 100644 --- a/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/leg/LegIntermediateDto.kt +++ b/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/leg/LegIntermediateDto.kt @@ -2,6 +2,7 @@ package ch.opentransportdata.ojp.data.dto.response.tir.leg import android.os.Parcelable import ch.opentransportdata.ojp.data.dto.response.NameDto +import ch.opentransportdata.ojp.data.dto.response.PlacesDto import com.tickaroo.tikxml.annotation.Element import com.tickaroo.tikxml.annotation.PropertyElement import com.tickaroo.tikxml.annotation.Xml @@ -71,4 +72,8 @@ fun LegIntermediateDto.minimalCopy(): LegIntermediateDto { noBoardingAtStop = null, noAlightingAtStop = null ) +} + +fun LegIntermediateDto.replaceWithParentRef(places: PlacesDto): LegIntermediateDto { + return this.copy(stopPointRef = places.findParentStation(stopPointRef)) } \ No newline at end of file diff --git a/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/leg/TimedLegDto.kt b/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/leg/TimedLegDto.kt index 12c0ca2..2a80e15 100644 --- a/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/leg/TimedLegDto.kt +++ b/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/leg/TimedLegDto.kt @@ -1,6 +1,7 @@ package ch.opentransportdata.ojp.data.dto.response.tir.leg import android.os.Parcelable +import ch.opentransportdata.ojp.data.dto.response.PlacesDto import ch.opentransportdata.ojp.data.dto.response.tir.situations.PtSituationDto import com.tickaroo.tikxml.annotation.Element import com.tickaroo.tikxml.annotation.Xml @@ -52,4 +53,12 @@ fun TimedLegDto.minimalCopy(): TimedLegDto { service = service.minimalCopy(), legTrack = null ) +} + +fun TimedLegDto.replaceWithParentRef(places: PlacesDto): TimedLegDto { + return this.copy( + legBoard = legBoard.replaceWithParentRef(places), + legIntermediate = legIntermediate?.map { it.replaceWithParentRef(places) }, + legAlight = legAlight.replaceWithParentRef(places) + ) } \ No newline at end of file diff --git a/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/trips/AbstractTripDto.kt b/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/trips/AbstractTripDto.kt index f3b157c..ffca6bc 100644 --- a/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/trips/AbstractTripDto.kt +++ b/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/trips/AbstractTripDto.kt @@ -1,6 +1,7 @@ package ch.opentransportdata.ojp.data.dto.response.tir.trips import android.os.Parcelable +import ch.opentransportdata.ojp.data.dto.response.PlacesDto /** * Created by Michael Ruppen on 01.07.2024 @@ -9,9 +10,9 @@ abstract class AbstractTripDto : Parcelable { abstract val id: String } -fun AbstractTripDto.minimalCopy(): AbstractTripDto { +fun AbstractTripDto.minimalCopy(placesDto: PlacesDto? = null): AbstractTripDto { return when (this) { - is TripDto -> this.minimalCopy() + is TripDto -> this.minimalCopy(places = placesDto) else -> this } } \ No newline at end of file diff --git a/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/trips/TripDto.kt b/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/trips/TripDto.kt index bc126ca..bac334a 100644 --- a/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/trips/TripDto.kt +++ b/sdk/src/main/java/ch/opentransportdata/ojp/data/dto/response/tir/trips/TripDto.kt @@ -1,10 +1,13 @@ package ch.opentransportdata.ojp.data.dto.response.tir.trips import android.os.Parcelable +import ch.opentransportdata.ojp.data.dto.response.PlacesDto import ch.opentransportdata.ojp.data.dto.response.tir.LegDto import ch.opentransportdata.ojp.data.dto.response.tir.leg.ContinuousLegDto import ch.opentransportdata.ojp.data.dto.response.tir.leg.TimedLegDto import ch.opentransportdata.ojp.data.dto.response.tir.leg.TransferLegDto +import ch.opentransportdata.ojp.data.dto.response.tir.minimalCopy +import ch.opentransportdata.ojp.data.dto.response.tir.replaceWithParentRef import ch.opentransportdata.ojp.data.dto.response.tir.situations.PtSituationDto import com.tickaroo.tikxml.annotation.Element import com.tickaroo.tikxml.annotation.PropertyElement @@ -68,6 +71,7 @@ data class TripDto( val isCarTrainTrip: Boolean get() = legs.any { (it.legType as? TimedLegDto)?.service?.isCarTrain == true } + /** * If the trip has [TimedLegDto.isCancelled], [isInfeasible] or [TimedLegDto.hasAnyPlatformChanges] * set to true, it is marked to have disruptions @@ -82,7 +86,7 @@ data class TripDto( * [infeasible] flag is also set when trip is cancelled. [isInfeasible] shows if the trip is infeasible but not cancelled */ val isInfeasible: Boolean - get() = !isCancelled && infeasible == true + get() = !isCancelled && infeasible == true val isCancelled: Boolean get() = legs.any { (it.legType as? TimedLegDto)?.isCancelled == true } @@ -124,14 +128,14 @@ data class TripDto( } } -fun TripDto.minimalCopy(): TripDto { +fun TripDto.minimalCopy(places: PlacesDto?): TripDto { return TripDto( id = id, duration = duration, startTime = startTime, endTime = endTime, transfers = transfers, - legs = legs, + legs = places?.let { p -> legs.map { it.minimalCopy().replaceWithParentRef(p) } } ?: legs.map { it.minimalCopy() }, unplanned = null, delayed = null, infeasible = null,