Loading cardinal-android/app/src/main/java/earth/maps/cardinal/data/room/AppDatabase.kt +10 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ import earth.maps.cardinal.data.DownloadStatusConverter @Database( entities = [OfflineArea::class, RoutingProfile::class, DownloadedTile::class, SavedList::class, SavedPlace::class, ListItem::class, RecentSearch::class], version = 12, version = 13, exportSchema = false ) @TypeConverters(TileTypeConverter::class, DownloadStatusConverter::class, ItemTypeConverter::class) Loading Loading @@ -224,6 +224,14 @@ abstract class AppDatabase : RoomDatabase() { } } private val MIGRATION_12_13 = object : Migration(12, 13) { override fun migrate(db: SupportSQLiteDatabase) { db.execSQL( "ALTER TABLE downloaded_tiles ADD COLUMN processed INTEGER" ) } } fun getDatabase(context: Context): AppDatabase { return INSTANCE ?: synchronized(this) { val instance = Room.databaseBuilder( Loading @@ -239,6 +247,7 @@ abstract class AppDatabase : RoomDatabase() { MIGRATION_9_10, MIGRATION_10_11, MIGRATION_11_12, MIGRATION_12_13, ).build() INSTANCE = instance instance Loading cardinal-android/app/src/main/java/earth/maps/cardinal/data/room/DownloadedTile.kt +1 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ data class DownloadedTile( val zoom: Int? = null, val tileX: Int? = null, val tileY: Int? = null, val processed: Boolean? = null, // For Valhalla tiles (hierarchyLevel/tileIndex system) val hierarchyLevel: Int? = null, Loading cardinal-android/app/src/main/java/earth/maps/cardinal/data/room/DownloadedTileDao.kt +6 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,12 @@ interface DownloadedTileDao { @Query("SELECT COUNT(*) FROM downloaded_tiles WHERE areaId = :areaId AND tileType = :tileType") suspend fun getDownloadedTileCountForAreaAndType(areaId: String, tileType: TileType): Int @Query("SELECT COUNT(*) FROM downloaded_tiles WHERE areaId = :areaId AND COALESCE(processed, 0) <> 0") suspend fun getProcessedTileCountForArea(areaId: String): Int @Query("SELECT COUNT(*) FROM downloaded_tiles WHERE areaId = :areaId AND COALESCE(processed, 0) == 0 AND zoom = 14") suspend fun getUnprocessedTileCountForArea(areaId: String): Int @Query("SELECT COUNT(*) FROM downloaded_tiles WHERE areaId = :areaId") suspend fun getDownloadedTileCountForArea(areaId: String): Int Loading cardinal-android/app/src/main/java/earth/maps/cardinal/tileserver/DownloadProgressReporter.kt +4 −2 Original line number Diff line number Diff line Loading @@ -35,7 +35,7 @@ interface DownloadProgressReporter { fun updateProgress( areaId: String, areaName: String, currentStage: DownloadStage?, currentStage: DownloadStage, stageProgress: Int, stageTotal: Int, isCompleted: Boolean, Loading @@ -49,5 +49,7 @@ interface DownloadProgressReporter { enum class DownloadStage { BASEMAP, VALHALLA, PROCESSING PROCESSING, DONE, ERROR, } cardinal-android/app/src/main/java/earth/maps/cardinal/tileserver/ServiceProgressReporter.kt +1 −1 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ class ServiceProgressReporter( override fun updateProgress( areaId: String, areaName: String, currentStage: DownloadStage?, currentStage: DownloadStage, stageProgress: Int, stageTotal: Int, isCompleted: Boolean, Loading Loading
cardinal-android/app/src/main/java/earth/maps/cardinal/data/room/AppDatabase.kt +10 −1 Original line number Diff line number Diff line Loading @@ -29,7 +29,7 @@ import earth.maps.cardinal.data.DownloadStatusConverter @Database( entities = [OfflineArea::class, RoutingProfile::class, DownloadedTile::class, SavedList::class, SavedPlace::class, ListItem::class, RecentSearch::class], version = 12, version = 13, exportSchema = false ) @TypeConverters(TileTypeConverter::class, DownloadStatusConverter::class, ItemTypeConverter::class) Loading Loading @@ -224,6 +224,14 @@ abstract class AppDatabase : RoomDatabase() { } } private val MIGRATION_12_13 = object : Migration(12, 13) { override fun migrate(db: SupportSQLiteDatabase) { db.execSQL( "ALTER TABLE downloaded_tiles ADD COLUMN processed INTEGER" ) } } fun getDatabase(context: Context): AppDatabase { return INSTANCE ?: synchronized(this) { val instance = Room.databaseBuilder( Loading @@ -239,6 +247,7 @@ abstract class AppDatabase : RoomDatabase() { MIGRATION_9_10, MIGRATION_10_11, MIGRATION_11_12, MIGRATION_12_13, ).build() INSTANCE = instance instance Loading
cardinal-android/app/src/main/java/earth/maps/cardinal/data/room/DownloadedTile.kt +1 −0 Original line number Diff line number Diff line Loading @@ -38,6 +38,7 @@ data class DownloadedTile( val zoom: Int? = null, val tileX: Int? = null, val tileY: Int? = null, val processed: Boolean? = null, // For Valhalla tiles (hierarchyLevel/tileIndex system) val hierarchyLevel: Int? = null, Loading
cardinal-android/app/src/main/java/earth/maps/cardinal/data/room/DownloadedTileDao.kt +6 −0 Original line number Diff line number Diff line Loading @@ -51,6 +51,12 @@ interface DownloadedTileDao { @Query("SELECT COUNT(*) FROM downloaded_tiles WHERE areaId = :areaId AND tileType = :tileType") suspend fun getDownloadedTileCountForAreaAndType(areaId: String, tileType: TileType): Int @Query("SELECT COUNT(*) FROM downloaded_tiles WHERE areaId = :areaId AND COALESCE(processed, 0) <> 0") suspend fun getProcessedTileCountForArea(areaId: String): Int @Query("SELECT COUNT(*) FROM downloaded_tiles WHERE areaId = :areaId AND COALESCE(processed, 0) == 0 AND zoom = 14") suspend fun getUnprocessedTileCountForArea(areaId: String): Int @Query("SELECT COUNT(*) FROM downloaded_tiles WHERE areaId = :areaId") suspend fun getDownloadedTileCountForArea(areaId: String): Int Loading
cardinal-android/app/src/main/java/earth/maps/cardinal/tileserver/DownloadProgressReporter.kt +4 −2 Original line number Diff line number Diff line Loading @@ -35,7 +35,7 @@ interface DownloadProgressReporter { fun updateProgress( areaId: String, areaName: String, currentStage: DownloadStage?, currentStage: DownloadStage, stageProgress: Int, stageTotal: Int, isCompleted: Boolean, Loading @@ -49,5 +49,7 @@ interface DownloadProgressReporter { enum class DownloadStage { BASEMAP, VALHALLA, PROCESSING PROCESSING, DONE, ERROR, }
cardinal-android/app/src/main/java/earth/maps/cardinal/tileserver/ServiceProgressReporter.kt +1 −1 Original line number Diff line number Diff line Loading @@ -28,7 +28,7 @@ class ServiceProgressReporter( override fun updateProgress( areaId: String, areaName: String, currentStage: DownloadStage?, currentStage: DownloadStage, stageProgress: Int, stageTotal: Int, isCompleted: Boolean, Loading