diff --git a/src/main/java/org/mtransit/commons/FeatureFlags.kt b/src/main/java/org/mtransit/commons/FeatureFlags.kt index 2f5519b..adcb5f7 100644 --- a/src/main/java/org/mtransit/commons/FeatureFlags.kt +++ b/src/main/java/org/mtransit/commons/FeatureFlags.kt @@ -29,10 +29,32 @@ object FeatureFlags { 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 = true // WIP // only marginal gains in APK size because of Android optimizations const val F_EXPORT_STRINGS = false - // const val F_EXPORT_STRINGS = true // WIP + // const val F_EXPORT_STRINGS = true // WIP // only marginal gains in APK size because of Android optimizations + + // region Schedule + + const val F_EXPORT_SCHEDULE_STRINGS = false + // const val F_EXPORT_SCHEDULE_STRINGS = true // WIP + + const val F_EXPORT_TRIP_ID_INTS = false + // const val F_EXPORT_TRIP_ID_INTS = true // WIP + + const val F_EXPORT_TRIP_ID = false + // const val F_EXPORT_TRIP_ID = true // WIP + + const val F_EXPORT_ARRIVAL_W_TRIP_ID = false + // const val F_EXPORT_ARRIVAL_W_TRIP_ID = F_EXPORT_TRIP_ID && true // WIP + + const val F_SCHEDULE_NO_QUOTES = false + // const val F_SCHEDULE_NO_QUOTES = true // WIP + + const val F_SCHEDULE_IN_MINUTES = false + // const val F_SCHEDULE_IN_MINUTES = true // WIP + + // endregion Schedule // @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 22cfb89..471f839 100644 --- a/src/main/java/org/mtransit/commons/GTFSCommons.kt +++ b/src/main/java/org/mtransit/commons/GTFSCommons.kt @@ -112,6 +112,29 @@ object GTFSCommons { // endregion Direction + // region Trip IDs + + const val T_TRIP_IDS = "trip_ids" + const val T_TRIP_IDS_K_ID_INT = "trip_id_int" + const val T_TRIP_IDS_K_ID = "trip_id" + + @JvmStatic + val T_TRIP_IDS_SQL_CREATE = SQLCreateBuilder.getNew(T_TRIP_IDS).apply { + appendColumn(T_TRIP_IDS_K_ID_INT, SQLUtils.INT_PK_AUTO) // can manual insert, next ID based on largest value in table + appendColumn(T_TRIP_IDS_K_ID, SQLUtils.TXT, unique = true) + }.build() + + @JvmStatic + val T_TRIP_IDS_SQL_INSERT = SQLInsertBuilder.getNew(T_TRIP_IDS).apply { + appendColumn(T_TRIP_IDS_K_ID_INT) + appendColumn(T_TRIP_IDS_K_ID) + }.build() + + @JvmStatic + val T_TRIP_IDS_SQL_DROP = SQLUtils.getSQLDropIfExistsQuery(T_TRIP_IDS) + + // endregion Trip IDs + // region Stop const val T_STOP = "stop" @@ -224,7 +247,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) // TODO INT_PK_AUTO? + appendColumn(T_SERVICE_IDS_K_ID_INT, SQLUtils.INT_PK_AUTO) // can manual insert, next ID based on largest value in table appendColumn(T_SERVICE_IDS_K_ID, SQLUtils.TXT, unique = true) }.build() @@ -292,7 +315,7 @@ object GTFSCommons { @JvmStatic val T_STRINGS_SQL_CREATE = SQLCreateBuilder.getNew(T_STRINGS).apply { - appendColumn(T_STRINGS_K_ID, SQLUtils.INT_PK_AUTO) // SQLite will determine next ID based on largest value in table, even after manual insert w/ custom ID value + appendColumn(T_STRINGS_K_ID, SQLUtils.INT_PK_AUTO) // can manual insert, next ID based on largest value in table appendColumn(T_STRINGS_K_STRING, SQLUtils.TXT, unique = true) }.build() diff --git a/src/main/java/org/mtransit/commons/sql/SQLUtils.kt b/src/main/java/org/mtransit/commons/sql/SQLUtils.kt index a8be939..90eaf93 100644 --- a/src/main/java/org/mtransit/commons/sql/SQLUtils.kt +++ b/src/main/java/org/mtransit/commons/sql/SQLUtils.kt @@ -213,8 +213,8 @@ object SQLUtils { } @JvmStatic - fun unescapeStringOrNull(string: String): String? = - string.trim { it == '\'' }.takeIf { it.isNotBlank() }?.let { unescapeString(it) } + fun unquoteUnescapeStringOrNull(string: String): String? = + unquotes(string).takeIf { it.isNotBlank() }?.let { unescapeString(it) } @JvmName("escapeStringExt") fun String.escapeString() = escapeString(this)