diff --git a/src/main/java/org/mtransit/parser/gtfs/GReader.java b/src/main/java/org/mtransit/parser/gtfs/GReader.java index bb406c89..46d1623d 100644 --- a/src/main/java/org/mtransit/parser/gtfs/GReader.java +++ b/src/main/java/org/mtransit/parser/gtfs/GReader.java @@ -535,8 +535,9 @@ private static void processRoute(GAgencyTools agencyTools, GSpec gSpec, HashMap< if (previousGRoute != null && previousGRoute.equalsExceptMergeable(gRoute)) { final String mergedRouteLongName = GRoute.mergeRouteLongNames(previousGRoute.getRouteLongName(), gRoute.getRouteLongName()); final String mergedRouteColor = GRoute.mergeRouteColors(previousGRoute.getRouteColor(), gRoute.getRouteColor()); + final Integer mergedRouteSortOrder = GRoute.mergeRouteSortOrders(previousGRoute.getRouteSortOrder(), gRoute.getRouteSortOrder()); if (mergedRouteLongName != null) { // merge successful - gSpec.addRoute(previousGRoute.clone(mergedRouteLongName, mergedRouteColor), true); + gSpec.addRoute(previousGRoute.clone(mergedRouteLongName, mergedRouteColor, mergedRouteSortOrder), true); return; } } diff --git a/src/main/java/org/mtransit/parser/gtfs/data/GRoute.kt b/src/main/java/org/mtransit/parser/gtfs/data/GRoute.kt index c6acb32b..70178cc3 100644 --- a/src/main/java/org/mtransit/parser/gtfs/data/GRoute.kt +++ b/src/main/java/org/mtransit/parser/gtfs/data/GRoute.kt @@ -143,14 +143,18 @@ data class GRoute( routeDesc != o.routeDesc -> false // not equal routeType != o.routeType -> false // not equal routeTextColor != o.routeTextColor -> false // not equal - routeSortOrder != o.routeSortOrder -> false // not equal else -> true // mostly equal } } - fun clone(routeLongName: String?, routeColor: String?) = this.copy( + fun clone( + routeLongName: String?, + routeColor: String?, + routeSortOrder: Int?, + ) = this.copy( routeLongName = routeLongName, routeColor = routeColor, + routeSortOrder = routeSortOrder, ) companion object { @@ -260,5 +264,18 @@ data class GRoute( val mergedColorHex = ColorUtils.convertToHEX(mergedColorInt) return mergedColorHex } + + @JvmStatic + fun mergeRouteSortOrders(routeSortOrder1: Int?, routeSortOrder2: Int?): Int? { + if (routeSortOrder2 == null) { + return routeSortOrder1 + } else if (routeSortOrder1 == null) { + return routeSortOrder2 + } + if (routeSortOrder1 == routeSortOrder2) { + return routeSortOrder1 + } + return null // -1 // not merged < route sort order not used at the moment + } } } \ No newline at end of file