From 42035f094a99b9cdefa661f39a38ef9c295caea7 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20M=C3=A9a?= Date: Wed, 12 Nov 2025 21:44:31 -0500 Subject: [PATCH 1/6] Index Service IDs --- .../java/org/mtransit/commons/FeatureFlags.kt | 3 +++ .../java/org/mtransit/commons/GTFSCommons.kt | 23 +++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/src/main/java/org/mtransit/commons/FeatureFlags.kt b/src/main/java/org/mtransit/commons/FeatureFlags.kt index fc5b498..cac8ca4 100644 --- a/src/main/java/org/mtransit/commons/FeatureFlags.kt +++ b/src/main/java/org/mtransit/commons/FeatureFlags.kt @@ -28,5 +28,8 @@ object FeatureFlags { // const val F_AVOID_DATA_CHANGED = false const val F_AVOID_DATA_CHANGED = true // WIP + // const val F_EXPORT_SERVICE_ID_INTS = false + const val F_EXPORT_SERVICE_ID_INTS = true // WIP + // @formatter:on } \ No newline at end of file diff --git a/src/main/java/org/mtransit/commons/GTFSCommons.kt b/src/main/java/org/mtransit/commons/GTFSCommons.kt index c6705e9..fe41d1d 100644 --- a/src/main/java/org/mtransit/commons/GTFSCommons.kt +++ b/src/main/java/org/mtransit/commons/GTFSCommons.kt @@ -198,6 +198,29 @@ object GTFSCommons { // endregion Direction Stops + // region Service IDs + + const val T_SERVICE_IDS = "service_ids" + const val T_SERVICE_IDS_K_ID = "id" + const val T_SERVICE_IDS_K_ID_INT = "id_int" + + @JvmStatic + val T_SERVICE_IDS_SQL_CREATE = SQLCreateBuilder.getNew(T_SERVICE_IDS).apply { + appendColumn(T_SERVICE_IDS_K_ID, SQLUtils.TXT) + appendColumn(T_SERVICE_IDS_K_ID_INT, SQLUtils.INT) + }.build() + + @JvmStatic + val T_SERVICE_IDS_SQL_INSERT = SQLInsertBuilder.getNew(T_SERVICE_IDS).apply { + appendColumn(T_SERVICE_IDS_K_ID) + appendColumn(T_SERVICE_IDS_K_ID_INT) + }.build() + + @JvmStatic + val T_SERVICE_IDS_SQL_DROP = SQLUtils.getSQLDropIfExistsQuery(T_SERVICE_IDS) + + // endregion Service IDs + // region Service Dates const val T_SERVICE_DATES = "service_dates" From 8866dca61861f358397ee8e3d14bc0fd41b9708d Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20M=C3=A9a?= Date: Fri, 14 Nov 2025 21:07:42 -0500 Subject: [PATCH 2/6] wip --- .../java/org/mtransit/commons/FeatureFlags.kt | 4 +-- .../java/org/mtransit/commons/GTFSCommons.kt | 27 ++++++++++++------- 2 files changed, 20 insertions(+), 11 deletions(-) diff --git a/src/main/java/org/mtransit/commons/FeatureFlags.kt b/src/main/java/org/mtransit/commons/FeatureFlags.kt index cac8ca4..62a3dc9 100644 --- a/src/main/java/org/mtransit/commons/FeatureFlags.kt +++ b/src/main/java/org/mtransit/commons/FeatureFlags.kt @@ -28,8 +28,8 @@ object FeatureFlags { // const val F_AVOID_DATA_CHANGED = false const val F_AVOID_DATA_CHANGED = true // WIP - // const val F_EXPORT_SERVICE_ID_INTS = false - const val F_EXPORT_SERVICE_ID_INTS = true // WIP + const val F_EXPORT_SERVICE_ID_INTS = false + // const val F_EXPORT_SERVICE_ID_INTS = true // WIP // @formatter:on } \ No newline at end of file diff --git a/src/main/java/org/mtransit/commons/GTFSCommons.kt b/src/main/java/org/mtransit/commons/GTFSCommons.kt index fe41d1d..aa13c15 100644 --- a/src/main/java/org/mtransit/commons/GTFSCommons.kt +++ b/src/main/java/org/mtransit/commons/GTFSCommons.kt @@ -201,8 +201,8 @@ object GTFSCommons { // region Service IDs const val T_SERVICE_IDS = "service_ids" - const val T_SERVICE_IDS_K_ID = "id" - const val T_SERVICE_IDS_K_ID_INT = "id_int" + const val T_SERVICE_IDS_K_ID = "service_id" + const val T_SERVICE_IDS_K_ID_INT = "service_id_int" @JvmStatic val T_SERVICE_IDS_SQL_CREATE = SQLCreateBuilder.getNew(T_SERVICE_IDS).apply { @@ -225,28 +225,37 @@ object GTFSCommons { const val T_SERVICE_DATES = "service_dates" const val T_SERVICE_DATES_K_SERVICE_ID = "service_id" + const val T_SERVICE_DATES_K_SERVICE_ID_INT = "service_id_int" const val T_SERVICE_DATES_K_DATE = "date" const val T_SERVICE_DATES_K_EXCEPTION_TYPE = "exception_type" + // 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 + const val EXCEPTION_TYPE_REMOVED = 2 + @JvmStatic val T_SERVICE_DATES_SQL_CREATE = SQLCreateBuilder.getNew(T_SERVICE_DATES).apply { - appendColumn(T_SERVICE_DATES_K_SERVICE_ID, SQLUtils.TXT) + if (FeatureFlags.F_EXPORT_SERVICE_ID_INTS) { + appendColumn(T_SERVICE_DATES_K_SERVICE_ID_INT, SQLUtils.INT) + } else { + appendColumn(T_SERVICE_DATES_K_SERVICE_ID, SQLUtils.TXT) + } appendColumn(T_SERVICE_DATES_K_DATE, SQLUtils.INT) appendColumn(T_SERVICE_DATES_K_EXCEPTION_TYPE, SQLUtils.INT) }.build() @JvmStatic val T_SERVICE_DATES_SQL_INSERT = SQLInsertBuilder.getNew(T_SERVICE_DATES).apply { - appendColumn(T_SERVICE_DATES_K_SERVICE_ID) + if (FeatureFlags.F_EXPORT_SERVICE_ID_INTS) { + appendColumn(T_SERVICE_DATES_K_SERVICE_ID_INT) + } else { + appendColumn(T_SERVICE_DATES_K_SERVICE_ID) + } appendColumn(T_SERVICE_DATES_K_DATE) appendColumn(T_SERVICE_DATES_K_EXCEPTION_TYPE) }.build() - // 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 - const val EXCEPTION_TYPE_REMOVED = 2 - @JvmStatic val T_SERVICE_DATES_SQL_DROP = SQLUtils.getSQLDropIfExistsQuery(T_SERVICE_DATES) From 05738484abb14c5643d489700405564707ec2411 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20M=C3=A9a?= Date: Tue, 18 Nov 2025 19:58:30 -0500 Subject: [PATCH 3/6] PR review --- src/main/java/org/mtransit/commons/GTFSCommons.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/mtransit/commons/GTFSCommons.kt b/src/main/java/org/mtransit/commons/GTFSCommons.kt index aa13c15..fdcbbe3 100644 --- a/src/main/java/org/mtransit/commons/GTFSCommons.kt +++ b/src/main/java/org/mtransit/commons/GTFSCommons.kt @@ -206,8 +206,8 @@ object GTFSCommons { @JvmStatic val T_SERVICE_IDS_SQL_CREATE = SQLCreateBuilder.getNew(T_SERVICE_IDS).apply { + appendColumn(T_SERVICE_IDS_K_ID_INT, SQLUtils.INT_PK_AUTO) appendColumn(T_SERVICE_IDS_K_ID, SQLUtils.TXT) - appendColumn(T_SERVICE_IDS_K_ID_INT, SQLUtils.INT) }.build() @JvmStatic From d1cff889967fd50e9f53d6d3d0b72d07daa1be50 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20M=C3=A9a?= Date: Tue, 18 Nov 2025 20:06:24 -0500 Subject: [PATCH 4/6] PR comments --- src/main/java/org/mtransit/commons/GTFSCommons.kt | 5 ++++- src/main/java/org/mtransit/commons/sql/SQLCreateBuilder.kt | 6 +++++- src/main/java/org/mtransit/commons/sql/SQLUtils.kt | 1 + 3 files changed, 10 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/mtransit/commons/GTFSCommons.kt b/src/main/java/org/mtransit/commons/GTFSCommons.kt index fdcbbe3..e126d1e 100644 --- a/src/main/java/org/mtransit/commons/GTFSCommons.kt +++ b/src/main/java/org/mtransit/commons/GTFSCommons.kt @@ -207,7 +207,7 @@ object GTFSCommons { @JvmStatic val T_SERVICE_IDS_SQL_CREATE = SQLCreateBuilder.getNew(T_SERVICE_IDS).apply { appendColumn(T_SERVICE_IDS_K_ID_INT, SQLUtils.INT_PK_AUTO) - appendColumn(T_SERVICE_IDS_K_ID, SQLUtils.TXT) + appendColumn(T_SERVICE_IDS_K_ID, SQLUtils.TXT, unique = true) }.build() @JvmStatic @@ -243,6 +243,9 @@ object GTFSCommons { } appendColumn(T_SERVICE_DATES_K_DATE, SQLUtils.INT) appendColumn(T_SERVICE_DATES_K_EXCEPTION_TYPE, SQLUtils.INT) + if (FeatureFlags.F_EXPORT_SERVICE_ID_INTS) { + appendForeignKey(T_SERVICE_DATES_K_SERVICE_ID_INT, T_SERVICE_IDS, T_SERVICE_IDS_K_ID_INT) + } }.build() @JvmStatic diff --git a/src/main/java/org/mtransit/commons/sql/SQLCreateBuilder.kt b/src/main/java/org/mtransit/commons/sql/SQLCreateBuilder.kt index 2eb0f85..f48a853 100644 --- a/src/main/java/org/mtransit/commons/sql/SQLCreateBuilder.kt +++ b/src/main/java/org/mtransit/commons/sql/SQLCreateBuilder.kt @@ -14,11 +14,15 @@ class SQLCreateBuilder private constructor(table: String) { private var nbColumn = 0 - fun appendColumn(name: String, type: String): SQLCreateBuilder { + @JvmOverloads + fun appendColumn(name: String, type: String, unique: Boolean = false): SQLCreateBuilder { if (nbColumn > 0) { sqlCreateSb.append(SQLUtils.COLUMN_SEPARATOR) } sqlCreateSb.append(name).append(type) + if (unique) { + sqlCreateSb.append(SQLUtils.UNIQUE) + } nbColumn++ return this } diff --git a/src/main/java/org/mtransit/commons/sql/SQLUtils.kt b/src/main/java/org/mtransit/commons/sql/SQLUtils.kt index 91f15c0..33264fb 100644 --- a/src/main/java/org/mtransit/commons/sql/SQLUtils.kt +++ b/src/main/java/org/mtransit/commons/sql/SQLUtils.kt @@ -13,6 +13,7 @@ object SQLUtils { const val INT_PK_AUTO = "$INT_PK AUTOINCREMENT" const val TXT = " text" const val REAL = " real" + const val UNIQUE = " unique" const val STRING_DELIMITER = "'" const val STRING_DELIMITER_ESCAPED = '\'' From 5820689500ddbec1f067e6b101a73f8335407e86 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20M=C3=A9a?= Date: Tue, 18 Nov 2025 20:17:39 -0500 Subject: [PATCH 5/6] fix --- src/main/java/org/mtransit/commons/GTFSCommons.kt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/main/java/org/mtransit/commons/GTFSCommons.kt b/src/main/java/org/mtransit/commons/GTFSCommons.kt index e126d1e..c829c35 100644 --- a/src/main/java/org/mtransit/commons/GTFSCommons.kt +++ b/src/main/java/org/mtransit/commons/GTFSCommons.kt @@ -206,7 +206,7 @@ object GTFSCommons { @JvmStatic val T_SERVICE_IDS_SQL_CREATE = SQLCreateBuilder.getNew(T_SERVICE_IDS).apply { - appendColumn(T_SERVICE_IDS_K_ID_INT, SQLUtils.INT_PK_AUTO) + appendColumn(T_SERVICE_IDS_K_ID_INT, SQLUtils.INT) // TODO INT_PK_AUTO? appendColumn(T_SERVICE_IDS_K_ID, SQLUtils.TXT, unique = true) }.build() From 6d6afb428e2c3d87a6b7c25ffa811f81a0f2a660 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Mathieu=20M=C3=A9a?= Date: Tue, 18 Nov 2025 20:29:44 -0500 Subject: [PATCH 6/6] PR comments --- src/main/java/org/mtransit/commons/GTFSCommons.kt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/main/java/org/mtransit/commons/GTFSCommons.kt b/src/main/java/org/mtransit/commons/GTFSCommons.kt index c829c35..bbb7fdc 100644 --- a/src/main/java/org/mtransit/commons/GTFSCommons.kt +++ b/src/main/java/org/mtransit/commons/GTFSCommons.kt @@ -201,8 +201,8 @@ object GTFSCommons { // region Service IDs const val T_SERVICE_IDS = "service_ids" - const val T_SERVICE_IDS_K_ID = "service_id" const val T_SERVICE_IDS_K_ID_INT = "service_id_int" + const val T_SERVICE_IDS_K_ID = "service_id" @JvmStatic val T_SERVICE_IDS_SQL_CREATE = SQLCreateBuilder.getNew(T_SERVICE_IDS).apply { @@ -212,8 +212,8 @@ object GTFSCommons { @JvmStatic val T_SERVICE_IDS_SQL_INSERT = SQLInsertBuilder.getNew(T_SERVICE_IDS).apply { - appendColumn(T_SERVICE_IDS_K_ID) appendColumn(T_SERVICE_IDS_K_ID_INT) + appendColumn(T_SERVICE_IDS_K_ID) }.build() @JvmStatic