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
13 changes: 11 additions & 2 deletions src/main/java/org/mtransit/parser/DefaultAgencyTools.java
Original file line number Diff line number Diff line change
Expand Up @@ -966,13 +966,22 @@ public void forgetOriginalTripId(@NotNull String gOriginalTripId) {
this.tripIdToCleanupTripId.remove(gOriginalTripId);
}

private boolean directionSplitterUseful = false; // opt-in feature

@Override
public boolean directionSplitterEnabled() {
return Configs.getRouteConfig().isDirectionSplitterEnabled(getTodayDateInt());
public void setDirectionSplitterUseful(boolean enabled) {
this.directionSplitterUseful = enabled;
}

@Override
public boolean directionSplitterEnabled(long routeId) {
if (Configs.getRouteConfig().getDirectionSplitterEnabled() == null // not set
&& !Configs.getRouteConfig().getDirectionSplitterDisabledUntil().containsKey(routeId) // not disabled for this route
) {
if (this.directionSplitterUseful) {
return true;
Comment thread
mmathieum marked this conversation as resolved.
}
}
return Configs.getRouteConfig().isDirectionSplitterEnabled(getTodayDateInt(), routeId);
}

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -99,7 +99,7 @@ data class RouteConfig(
@SerialName("direction_headsign_ignore_trip_headsign")
val directionHeadsignIgnoreTripHeadsign: Boolean = false, // OPT-IN feature
@SerialName("direction_splitter_enabled")
val directionSplitterEnabled: Boolean = false, // OPT-IN feature
val directionSplitterEnabled: Boolean? = null, // OPT-IN feature
@SerialName("direction_splitter_disabled_until")
val directionSplitterDisabledUntil: Map<Long, String> = emptyMap(), // OPT-IN feature
@SerialName("direction_finder_enabled")
Expand Down Expand Up @@ -475,7 +475,7 @@ data class RouteConfig(

@JvmOverloads
fun isDirectionSplitterEnabled(todayDate: Int, routeId: Long? = null) =
directionSplitterEnabled && !isAllowedUntil(directionSplitterDisabledUntil[routeId], todayDate)
directionSplitterEnabled == true && !isAllowedUntil(directionSplitterDisabledUntil[routeId], todayDate)

fun isDirectionIdOverrideEnabled(todayDate: Int, routeId: Long) =
directionIdOverrideEnabled[routeId] == true || isAllowedUntil(directionIdOverrideEnabledUntil[routeId], todayDate)
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/mtransit/parser/gtfs/GAgencyTools.java
Original file line number Diff line number Diff line change
Expand Up @@ -202,7 +202,7 @@ public interface GAgencyTools {

void forgetOriginalTripId(@NotNull String gTripOriginalId);

boolean directionSplitterEnabled();
void setDirectionSplitterUseful(boolean enabled);

boolean directionSplitterEnabled(long routeId);
Comment thread
mmathieum marked this conversation as resolved.

Expand Down
9 changes: 7 additions & 2 deletions src/main/java/org/mtransit/parser/gtfs/GReader.java
Original file line number Diff line number Diff line change
Expand Up @@ -106,8 +106,13 @@ public static GSpec readGtfsZipFile(
if (!calendarsOnly) {
GTFSDataBase.setAutoCommit(false);
final PreparedStatement insertTripsPrepared = USE_PREPARED_STATEMENT ? GTFSDataBase.prepareInsertTrip(agencyTools.allowDuplicateKeyError()) : null;
readFile(gtfsDir, GTrip.FILENAME, true, line ->
processTrip(agencyTools, gSpec, line, insertTripsPrepared, skipDataCleanup)
readFile(gtfsDir, GTrip.FILENAME, true,
line -> processTrip(agencyTools, gSpec, line, insertTripsPrepared, skipDataCleanup),
columnNames -> {
if (!columnNames.contains(GTrip.DIRECTION_ID)) {
agencyTools.setDirectionSplitterUseful(true); // direction IDs not provided
}
}
);
if (insertTripsPrepared != null) {
GTFSDataBase.executePreparedStatement(insertTripsPrepared);
Expand Down
2 changes: 1 addition & 1 deletion src/main/java/org/mtransit/parser/gtfs/data/GTrip.kt
Original file line number Diff line number Diff line change
Expand Up @@ -136,7 +136,7 @@ data class GTrip(
internal const val SERVICE_ID = "service_id"
private const val TRIP_HEADSIGN = "trip_headsign"
private const val TRIP_SHORT_NAME = "trip_short_name"
private const val DIRECTION_ID = "direction_id"
internal const val DIRECTION_ID = "direction_id"
private const val BLOCK_ID = "block_id"
private const val SHAPE_ID = "shape_id"
private const val WHEELCHAIR_ACCESSIBLE = "wheelchair_accessible"
Expand Down