Skip to content
Draft
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
3 changes: 3 additions & 0 deletions src/main/java/org/mtransit/commons/CollectionExt.kt
Original file line number Diff line number Diff line change
Expand Up @@ -58,3 +58,6 @@ inline fun <T> Iterable<T>.dropWhile(minSize: Int = 0, predicate: (T) -> Boolean
}
return list
}

inline fun <K, V> Map<out K, V>.mapNotNullToMap(transform: (Map.Entry<K, V>) -> Pair<K, V>?): Map<K, V> =
this.mapNotNull(transform).toMap()
6 changes: 6 additions & 0 deletions src/main/java/org/mtransit/commons/FeatureFlags.kt
Original file line number Diff line number Diff line change
Expand Up @@ -31,11 +31,17 @@ object FeatureFlags {
const val F_EXPORT_SERVICE_ID_INTS = false
// const val F_EXPORT_SERVICE_ID_INTS = true // WIP // only marginal gains in APK size because of Android optimizations

const val F_EXPORT_FLATTEN_SERVICE_DATES = false
// const val F_EXPORT_FLATTEN_SERVICE_DATES = true // WIP

const val F_EXPORT_STRINGS = false
// const val F_EXPORT_STRINGS = true // WIP // only marginal gains in APK size because of Android optimizations

// region Schedule

const val F_EXPORT_SCHEDULE_SORTED_BY_ROUTE_DIRECTION = false
// const val F_EXPORT_SCHEDULE_SORTED_BY_ROUTE_DIRECTION = true // WIP

const val F_EXPORT_SCHEDULE_STRINGS = false
// const val F_EXPORT_SCHEDULE_STRINGS = true // WIP

Expand Down
121 changes: 66 additions & 55 deletions src/main/java/org/mtransit/commons/GTFSCommons.kt
Original file line number Diff line number Diff line change
Expand Up @@ -63,21 +63,6 @@ object GTFSCommons {
@JvmField
val T_DIRECTION_STRINGS_COLUMN_IDX = intArrayOf(2)

@Deprecated("use T_DIRECTION instead", ReplaceWith("T_DIRECTION"))
const val T_TRIP = T_DIRECTION

@Deprecated("use T_DIRECTION_K_ID instead", ReplaceWith("T_DIRECTION_K_ID"))
const val T_TRIP_K_ID = T_DIRECTION_K_ID

@Deprecated("use T_DIRECTION_K_HEADSIGN_TYPE instead", ReplaceWith("T_DIRECTION_K_HEADSIGN_TYPE"))
const val T_TRIP_K_HEADSIGN_TYPE = T_DIRECTION_K_HEADSIGN_TYPE

@Deprecated("use T_DIRECTION_K_HEADSIGN_VALUE instead", ReplaceWith("T_DIRECTION_K_HEADSIGN_VALUE"))
const val T_TRIP_K_HEADSIGN_VALUE = T_DIRECTION_K_HEADSIGN_VALUE

@Deprecated("use T_DIRECTION_K_ROUTE_ID instead", ReplaceWith("T_DIRECTION_K_ROUTE_ID"))
const val T_TRIP_K_ROUTE_ID = T_DIRECTION_K_ROUTE_ID

@JvmStatic
val T_DIRECTION_SQL_CREATE = SQLCreateBuilder.getNew(T_DIRECTION).apply {
appendColumn(T_DIRECTION_K_ID, SQLUtils.INT_PK)
Expand All @@ -87,10 +72,6 @@ object GTFSCommons {
appendForeignKey(T_DIRECTION_K_ROUTE_ID, T_ROUTE, T_ROUTE_K_ID)
}.build()

@Deprecated("use T_DIRECTION_SQL_CREATE instead", ReplaceWith("T_DIRECTION_SQL_CREATE"))
@JvmStatic
val T_TRIP_SQL_CREATE = T_DIRECTION_SQL_CREATE

@JvmStatic
val T_DIRECTION_SQL_INSERT = SQLInsertBuilder.getNew(T_DIRECTION).apply {
appendColumn(T_DIRECTION_K_ID)
Expand All @@ -99,18 +80,72 @@ object GTFSCommons {
appendColumn(T_DIRECTION_K_ROUTE_ID)
}.build()

@Deprecated("use T_DIRECTION_SQL_INSERT instead", ReplaceWith("T_DIRECTION_SQL_INSERT"))
@JvmStatic
val T_TRIP_SQL_INSERT = T_DIRECTION_SQL_INSERT
val T_DIRECTION_SQL_DROP = SQLUtils.getSQLDropIfExistsQuery(T_DIRECTION)

// endregion Direction

// region Trip

const val T_TRIP = "path" // do not change to avoid breaking compat w/ old modules
const val T_TRIP_K_ROUTE_ID = "route_id"
private const val T_TRIP_K_SERVICE_ID = "service_id"
private const val T_TRIP_K_SERVICE_ID_INT = "service_id_int"
@JvmStatic
val T_DIRECTION_SQL_DROP = SQLUtils.getSQLDropIfExistsQuery(T_DIRECTION)
val T_TRIP_K_SERVICE_ID_OR_INT = if (FeatureFlags.F_EXPORT_SERVICE_ID_INTS) T_TRIP_K_SERVICE_ID_INT else T_TRIP_K_SERVICE_ID
private const val T_TRIP_K_TRIP_ID = "trip_id"
private const val T_TRIP_K_TRIP_ID_INT = "trip_id_int"
@JvmStatic
val T_TRIP_K_TRIP_ID_OR_INT = if (FeatureFlags.F_EXPORT_TRIP_ID_INTS) T_TRIP_K_TRIP_ID_INT else T_TRIP_K_TRIP_ID
const val T_TRIP_K_DIRECTION_ID = "direction_id"

const val T_TRIP_SAME_COLUMNS_COUNT = 3
const val T_TRIP_OTHER_COLUMNS_COUNT = 1

@Deprecated("use T_DIRECTION_SQL_DROP instead", ReplaceWith("T_DIRECTION_SQL_DROP"))
@JvmStatic
val T_TRIP_SQL_DROP = T_DIRECTION_SQL_DROP
val T_TRIP_SQL_CREATE = SQLCreateBuilder.getNew(T_TRIP).apply {
if (FeatureFlags.F_EXPORT_TRIP_ID_INTS) {
appendColumn(T_TRIP_K_TRIP_ID_INT, SQLUtils.INT)
} else {
appendColumn(T_TRIP_K_TRIP_ID, SQLUtils.TXT)
}
appendColumn(T_TRIP_K_ROUTE_ID, SQLUtils.INT)
if (FeatureFlags.F_EXPORT_SERVICE_ID_INTS) {
appendColumn(T_TRIP_K_SERVICE_ID_INT, SQLUtils.INT)
} else {
appendColumn(T_TRIP_K_SERVICE_ID, SQLUtils.TXT)
}
appendColumn(T_TRIP_K_DIRECTION_ID, SQLUtils.INT)
appendForeignKey(T_TRIP_K_ROUTE_ID, T_ROUTE, T_ROUTE_K_ID)
appendForeignKey(T_TRIP_K_DIRECTION_ID, T_DIRECTION, T_DIRECTION_K_ID)
if (FeatureFlags.F_EXPORT_TRIP_ID_INTS) {
appendForeignKey(T_TRIP_K_TRIP_ID_INT, T_TRIP_IDS, T_TRIP_IDS_K_ID_INT)
}
if (FeatureFlags.F_EXPORT_SERVICE_ID_INTS) {
appendForeignKey(T_TRIP_K_SERVICE_ID_INT, T_SERVICE_IDS, T_SERVICE_IDS_K_ID_INT)
}
}.build()

// endregion Direction
@JvmStatic
val T_TRIP_SQL_INSERT = SQLInsertBuilder.getNew(T_TRIP).apply {
appendColumn(T_TRIP_K_ROUTE_ID)
appendColumn(T_TRIP_K_DIRECTION_ID)
if (FeatureFlags.F_EXPORT_SERVICE_ID_INTS) {
appendColumn(T_TRIP_K_SERVICE_ID_INT)
} else {
appendColumn(T_TRIP_K_SERVICE_ID)
}
if (FeatureFlags.F_EXPORT_TRIP_ID_INTS) {
appendColumn(T_TRIP_K_TRIP_ID_INT)
} else {
appendColumn(T_TRIP_K_TRIP_ID)
}
}.build()

@JvmStatic
val T_TRIP_SQL_DROP = SQLUtils.getSQLDropIfExistsQuery(T_TRIP)

// endregion
Copy link
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

For consistency with other endregion comments in this file (e.g., // endregion Direction), please specify the region name here. This improves code readability and makes it easier to navigate the code using IDE features.

Suggested change
// endregion
// endregion Trip


// region Trip IDs

Expand Down Expand Up @@ -185,24 +220,6 @@ object GTFSCommons {
const val T_DIRECTION_STOPS_K_STOP_SEQUENCE = "stop_sequence"
const val T_DIRECTION_STOPS_K_NO_PICKUP = "decent_only"

@Deprecated("use T_DIRECTION_STOPS instead", ReplaceWith("T_DIRECTION_STOPS"))
const val T_TRIP_STOPS = T_DIRECTION_STOPS

@Deprecated("use T_DIRECTION_STOPS_K_ID instead", ReplaceWith("T_DIRECTION_STOPS_K_ID"))
const val T_TRIP_STOPS_K_ID = T_DIRECTION_STOPS_K_ID

@Deprecated("use T_DIRECTION_STOPS_K_DIRECTION_ID instead", ReplaceWith("T_DIRECTION_STOPS_K_DIRECTION_ID"))
const val T_TRIP_STOPS_K_TRIP_ID = T_DIRECTION_STOPS_K_DIRECTION_ID

@Deprecated("use T_DIRECTION_STOPS_K_STOP_ID instead", ReplaceWith("T_DIRECTION_STOPS_K_STOP_ID"))
const val T_TRIP_STOPS_K_STOP_ID = T_DIRECTION_STOPS_K_STOP_ID

@Deprecated("use T_DIRECTION_STOPS_K_STOP_SEQUENCE instead", ReplaceWith("T_DIRECTION_STOPS_K_STOP_SEQUENCE"))
const val T_TRIP_STOPS_K_STOP_SEQUENCE = T_DIRECTION_STOPS_K_STOP_SEQUENCE

@Deprecated("use T_DIRECTION_STOPS_K_NO_PICKUP instead", ReplaceWith("T_DIRECTION_STOPS_K_NO_PICKUP"))
const val T_TRIP_STOPS_K_NO_PICKUP = T_DIRECTION_STOPS_K_NO_PICKUP

@JvmStatic
val T_DIRECTION_STOPS_SQL_CREATE = SQLCreateBuilder.getNew(T_DIRECTION_STOPS).apply {
appendColumn(T_DIRECTION_STOPS_K_ID, SQLUtils.INT_PK_AUTO)
Expand All @@ -214,10 +231,6 @@ object GTFSCommons {
appendForeignKey(T_DIRECTION_STOPS_K_STOP_ID, T_STOP, T_STOP_K_ID)
}.build()

@Deprecated("use T_DIRECTION_STOPS_SQL_CREATE instead", ReplaceWith("T_DIRECTION_STOPS_SQL_CREATE"))
@JvmStatic
val T_TRIP_STOPS_SQL_CREATE = T_DIRECTION_STOPS_SQL_CREATE

@JvmStatic
val T_DIRECTION_STOPS_SQL_INSERT = SQLInsertBuilder.getNew(T_DIRECTION_STOPS).apply {
appendColumn(T_DIRECTION_STOPS_K_DIRECTION_ID)
Expand All @@ -226,17 +239,9 @@ object GTFSCommons {
appendColumn(T_DIRECTION_STOPS_K_NO_PICKUP)
}.build()

@Deprecated("use T_DIRECTION_STOPS_SQL_INSERT instead", ReplaceWith("T_DIRECTION_STOPS_SQL_INSERT"))
@JvmStatic
val T_TRIP_STOPS_SQL_INSERT = T_DIRECTION_STOPS_SQL_INSERT

@JvmStatic
val T_DIRECTION_STOPS_SQL_DROP = SQLUtils.getSQLDropIfExistsQuery(T_DIRECTION_STOPS)

@Deprecated("use T_DIRECTION_STOPS_SQL_DROP instead", ReplaceWith("T_DIRECTION_STOPS_SQL_DROP"))
@JvmStatic
val T_TRIP_STOPS_SQL_DROP = T_DIRECTION_STOPS_SQL_DROP

// endregion Direction Stops

// region Service IDs
Expand Down Expand Up @@ -270,6 +275,12 @@ object GTFSCommons {
const val T_SERVICE_DATES_K_DATE = "date"
const val T_SERVICE_DATES_K_EXCEPTION_TYPE = "exception_type"

@JvmStatic
val T_SERVICE_DATES_SAME_COLUMNS_COUNT = if (FeatureFlags.F_EXPORT_FLATTEN_SERVICE_DATES) 1 else 0

@JvmStatic
val T_SERVICE_DATES_OTHER_COLUMNS_COUNT = if (FeatureFlags.F_EXPORT_FLATTEN_SERVICE_DATES) 2 else 0

// https://gtfs.org/documentation/schedule/reference/#calendar_datestxt
const val EXCEPTION_TYPE_DEFAULT = 0 // default schedule // added by MT
const val EXCEPTION_TYPE_ADDED = 1
Expand Down