Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 6 additions & 3 deletions src/main/java/org/mtransit/parser/DefaultAgencyTools.java
Original file line number Diff line number Diff line change
Expand Up @@ -344,6 +344,9 @@ public Integer getAgencyExtendedRouteType() {
@NotNull
@Override
public Integer getOriginalAgencyRouteType() {
if (Configs.getAgencyConfig() != null) {
return Configs.getAgencyConfig().getOriginalRouteTypeId();
}
return getAgencyRouteType();
}

Expand Down Expand Up @@ -575,9 +578,9 @@ public String cleanRouteShortName(@NotNull String routeShortName) {
@Override
public String provideMissingRouteShortName(@NotNull GRoute gRoute) {
//noinspection DiscouragedApi
final String routeShortNameFromRouteId = Configs.getRouteConfig().getRouteShortNameFromRouteId(gRoute.getRouteId());
if (routeShortNameFromRouteId != null) {
return routeShortNameFromRouteId;
final String routeShortNameFromRoute = Configs.getRouteConfig().getRouteShortNameForRoute(gRoute);
if (routeShortNameFromRoute != null) {
return routeShortNameFromRoute;
}
if (Configs.getRouteConfig().getUseRouteLongNameForMissingRouteShortName()) {
return gRoute.getRouteLongNameOrDefault();
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,8 @@ data class AgencyConfig(
*/
@SerialName("target_route_type_id")
val targetRouteTypeId: Int, // REQUIRED
@SerialName("original_route_type_id")
val originalRouteTypeId: Int = targetRouteTypeId, // REQUIRED (default to target route type ID)
@SerialName("extended_target_route_type_id")
val extendedTargetRouteTypeId: Int? = null, // OPTIONAL
// STRINGS
Expand Down
37 changes: 26 additions & 11 deletions src/main/java/org/mtransit/parser/config/gtfs/data/RouteConfig.kt
Original file line number Diff line number Diff line change
Expand Up @@ -40,8 +40,11 @@ data class RouteConfig(
val useRouteLongNameForRouteShortName: Boolean = false, // OPT-IN feature
@SerialName("use_route_long_name_for_missing_route_short_name")
val useRouteLongNameForMissingRouteShortName: Boolean = false, // OPT-IN feature
@Deprecated("use routeToRouteShortNameConfigs instead")
@SerialName("route_id_to_route_short_name_configs")
val routeIdToRouteShortNameConfigs: List<RouteIdToRouteShortNameConfig> = emptyList(),
val routeIdToRouteShortNameConfigs: List<RouteDefToShortNameConfig> = emptyList(),
@SerialName("route_to_short_name_configs")
val routeToRouteShortNameConfigs: List<RouteDefToShortNameConfig> = routeIdToRouteShortNameConfigs,
@SerialName("route_short_name_cleaners")
val routeShortNameCleaners: List<Cleaner> = emptyList(),
// long-name
Expand Down Expand Up @@ -162,19 +165,29 @@ data class RouteConfig(
)

@Serializable
data class RouteIdToRouteShortNameConfig(
data class RouteDefToShortNameConfig(
@SerialName("route_id")
val routeId: String,
val routeId: String? = null,
@SerialName("route_long_name")
val routeLongName: String? = null,
@SerialName("route_short_name")
val routeShortName: String,
)
) {
init {
require(routeId != null || routeLongName != null) {
"Either 'route_id' or 'route_long_name' must be provided in RouteDefToShortNameConfig."
}
}
}

@Serializable
data class RouteColor(
@SerialName("route_id")
val routeId: String? = null,
@SerialName("route_short_name")
val routeShortName: String?,
@SerialName("route_long_name")
val routeLongName: String? = null,
@SerialName("color")
val color: String,
@SerialName("override")
Expand Down Expand Up @@ -251,19 +264,21 @@ data class RouteConfig(
this.routeIdPreviousCharConfigs
.singleOrNull { it.char == previousChars }?.idPart

fun getRouteShortNameFromRouteId(routeId: String) =
this.routeIdToRouteShortNameConfigs
.singleOrNull { it.routeId == routeId }?.routeShortName
fun getRouteShortNameForRoute(gRoute: GRoute) =
//noinspection DiscouragedApi
(this.routeToRouteShortNameConfigs.singleOrNull { gRoute.routeId == it.routeId }
?: this.routeToRouteShortNameConfigs.singleOrNull { gRoute.routeLongNameOrDefault == it.routeLongName })
?.routeShortName

@JvmOverloads
fun getRouteColor(gRoute: GRoute, defaultColor: String? = gRoute.routeColor, override: Boolean = false): String? {
fun getRouteColor(gRoute: GRoute, defaultColor: String? = gRoute.routeColor, override: Boolean = false) =
//noinspection DiscouragedApi
return (this.routeColors.singleOrNull { gRoute.routeId == it.routeId }
?: this.routeColors.singleOrNull { gRoute.routeShortName == it.routeShortName })
(this.routeColors.singleOrNull { gRoute.routeId == it.routeId }
?: this.routeColors.singleOrNull { gRoute.routeShortName == it.routeShortName }
?: this.routeColors.singleOrNull { gRoute.routeLongNameOrDefault == it.routeLongName })
?.takeIf { it.override || !override }
?.color
?: defaultColor
}

fun isRouteColorIgnored(routeColor: String) =
this.routeColorsIgnored.any { it.equals(routeColor, ignoreCase = true) }
Expand Down