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
25 changes: 22 additions & 3 deletions src/main/java/org/mtransit/parser/DefaultAgencyTools.java
Original file line number Diff line number Diff line change
Expand Up @@ -118,6 +118,7 @@ public class DefaultAgencyTools implements GAgencyTools {
private static final Integer OVERRIDE_DATE;

static {
//noinspection SpellCheckingInspection
OVERRIDE_DATE = null; // yyyyMMdd
}

Expand Down Expand Up @@ -466,13 +467,13 @@ public Long convertRouteIdFromShortNameNotSupported(@NotNull String routeShortNa
@Nullable
@Override
public Long convertRouteIdNextChars(@NotNull String nextChars) {
return null;
return Configs.getRouteConfig().convertRouteIdNextChars(nextChars);
}

@Nullable
@Override
public Long convertRouteIdPreviousChars(@NotNull String previousChars) {
return null;
return Configs.getRouteConfig().convertRouteIdPreviousChars(previousChars);
}

@Override
Expand Down Expand Up @@ -568,10 +569,19 @@ public boolean tryRouteDescForMissingLongName() {
return false; // OPT-IN feature
}

@Override
public boolean removeRouteIdFromRouteLongName() {
return Configs.getRouteConfig().getRouteLongNameRemoveRouteId();
}

@NotNull
@Override
public String getRouteLongName(@NotNull GRoute gRoute) {
String routeLongName = gRoute.getRouteLongNameOrDefault();
//noinspection DiscouragedApi
if (removeRouteIdFromRouteLongName() && routeLongName.equals(gRoute.getRouteId())) {
routeLongName = "";
}
if (tryRouteDescForMissingLongName()
&& org.mtransit.commons.StringUtils.isEmpty(routeLongName)) {
routeLongName = gRoute.getRouteDescOrDefault();
Expand Down Expand Up @@ -1205,13 +1215,22 @@ public String getStopOriginalId(@NotNull GStop gStop) {
return null; // only if not stop code or stop ID
}

@Override
public boolean useStopIdHashCode() {
return Configs.getRouteConfig().getUseStopIdHashCode();
}

@Override
public int getStopId(@NotNull GStop gStop) {
try {
//noinspection DiscouragedApi
final String gStopId = gStop.getStopId();
if (useStopIdHashCode()) {
return Math.abs(gStopId.hashCode());
}
final String stopIdS =
useStopCodeForStopId() ? cleanStopOriginalId(getStopCode(gStop))
: gStop.getStopId();
: gStopId;
if (!CharUtils.isDigitsOnly(stopIdS)) {
final Integer stopIdSInt = convertStopIdFromCodeNotSupported(stopIdS);
if (stopIdSInt != null) {
Expand Down
24 changes: 24 additions & 0 deletions src/main/java/org/mtransit/parser/config/gtfs/data/RouteConfig.kt
Original file line number Diff line number Diff line change
Expand Up @@ -23,6 +23,10 @@ data class RouteConfig(
val useRouteIdForRouteShortName: Boolean = false, // OPT-IN feature
@SerialName("route_short_name_to_route_id_configs")
val routeShortNameToRouteIdConfigs: List<RouteShortNameToRouteIdConfig> = emptyList(),
@SerialName("route_id_next_char_configs")
val routeIdNextCharConfigs: List<RouteIdCharToRouteIdPartConfig> = emptyList(),
@SerialName("route_id_previous_char_configs")
val routeIdPreviousCharConfigs: List<RouteIdCharToRouteIdPartConfig> = emptyList(),
// short-name
@SerialName("use_route_long_name_for_missing_route_short_name")
val useRouteLongNameForMissingRouteShortName: Boolean = false, // OPT-IN feature
Expand All @@ -35,6 +39,8 @@ data class RouteConfig(
val defaultRouteLongNameEnabled: Boolean = false, // OPT-IN feature
@SerialName("route_long_name_cleaners")
val routeLongNameCleaners: List<Cleaner> = emptyList(),
@SerialName("route_long_name_remove_route_id")
val routeLongNameRemoveRouteId: Boolean = false, // OPT-IN feature
// colors
@SerialName("route_colors")
val routeColors: List<RouteColor> = emptyList(),
Expand Down Expand Up @@ -81,6 +87,8 @@ data class RouteConfig(
val stopCodeToStopIdConfigs: List<StopCodeToStopIdConfig> = emptyList(),
@SerialName("stop_code_prepend_if_missing")
val stopCodePrependIfMissing: String? = null, // optional
@SerialName("use_stop_id_hash_code")
val useStopIdHashCode: Boolean = false, // OPT-IN feature
@SerialName("stop_headsign_remove_trip_headsign")
val stopHeadsignRemoveTripHeadsign: Boolean = false, // OPT-IN feature
@SerialName("stop_headsign_remove_route_long_name")
Expand All @@ -102,6 +110,14 @@ data class RouteConfig(
val routeId: Long,
)

@Serializable
data class RouteIdCharToRouteIdPartConfig(
@SerialName("char")
val char: String,
@SerialName("route_id_part")
val routeIdPart: Long,
)

@Serializable
data class RouteIdToRouteShortNameConfig(
@SerialName("route_id")
Expand Down Expand Up @@ -154,6 +170,14 @@ data class RouteConfig(
this.routeShortNameToRouteIdConfigs
.singleOrNull { it.routeShortName == routeShortName }?.routeId

fun convertRouteIdNextChars(nextChars: String) =
this.routeIdNextCharConfigs
.singleOrNull { it.char == nextChars }?.routeIdPart

fun convertRouteIdPreviousChars(previousChars: String) =
this.routeIdPreviousCharConfigs
.singleOrNull { it.char == previousChars }?.routeIdPart

fun getRouteShortNameFromRouteId(routeId: String) =
this.routeIdToRouteShortNameConfigs
.singleOrNull { it.routeId == routeId }?.routeShortName
Expand Down
4 changes: 4 additions & 0 deletions src/main/java/org/mtransit/parser/gtfs/GAgencyTools.java
Original file line number Diff line number Diff line change
Expand Up @@ -141,6 +141,8 @@ public interface GAgencyTools {

boolean tryRouteDescForMissingLongName();

boolean removeRouteIdFromRouteLongName();

@NotNull
String getRouteLongName(@NotNull GRoute gRoute);

Expand Down Expand Up @@ -277,6 +279,8 @@ public interface GAgencyTools {

boolean excludeStopTime(@NotNull GStopTime gStopTime);

boolean useStopIdHashCode();

// STOP
int getStopId(@NotNull GStop gStop);

Expand Down