From d0851be5285b30cda24cb97ef352333f04c326a8 Mon Sep 17 00:00:00 2001 From: Johan von Forstner Date: Fri, 15 May 2020 18:30:56 +0200 Subject: [PATCH] make all address fields nullable --- .../evmap/api/goingelectric/GoingElectricModel.kt | 12 ++++-------- .../java/net/vonforst/evmap/storage/Database.kt | 15 +++++++++++++-- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/app/src/main/java/net/vonforst/evmap/api/goingelectric/GoingElectricModel.kt b/app/src/main/java/net/vonforst/evmap/api/goingelectric/GoingElectricModel.kt index 26580550..8dee7bb1 100644 --- a/app/src/main/java/net/vonforst/evmap/api/goingelectric/GoingElectricModel.kt +++ b/app/src/main/java/net/vonforst/evmap/api/goingelectric/GoingElectricModel.kt @@ -210,17 +210,13 @@ data class Coordinate(val lat: Double, val lng: Double) { @JsonClass(generateAdapter = true) data class Address( - val city: String, - val country: String, + @JsonObjectOrFalse val city: String?, + @JsonObjectOrFalse val country: String?, @JsonObjectOrFalse val postcode: String?, - val street: String + @JsonObjectOrFalse val street: String? ) { override fun toString(): String { - if (postcode != null) { - return "$street, $postcode $city" - } else { - return "$street $city" - } + return "${street ?: ""}, ${postcode ?: ""} ${city ?: ""}" } } diff --git a/app/src/main/java/net/vonforst/evmap/storage/Database.kt b/app/src/main/java/net/vonforst/evmap/storage/Database.kt index b179311c..092f4470 100644 --- a/app/src/main/java/net/vonforst/evmap/storage/Database.kt +++ b/app/src/main/java/net/vonforst/evmap/storage/Database.kt @@ -19,7 +19,7 @@ import net.vonforst.evmap.viewmodel.SliderFilterValue MultipleChoiceFilterValue::class, SliderFilterValue::class, Plug::class - ], version = 4 + ], version = 5 ) @TypeConverters(Converters::class) abstract class AppDatabase : RoomDatabase() { @@ -31,7 +31,7 @@ abstract class AppDatabase : RoomDatabase() { private lateinit var context: Context private val database: AppDatabase by lazy(LazyThreadSafetyMode.SYNCHRONIZED) { Room.databaseBuilder(context, AppDatabase::class.java, "evmap.db") - .addMigrations(MIGRATION_2, MIGRATION_3, MIGRATION_4) + .addMigrations(MIGRATION_2, MIGRATION_3, MIGRATION_4, MIGRATION_5) .build() } @@ -65,7 +65,18 @@ abstract class AppDatabase : RoomDatabase() { override fun migrate(db: SupportSQLiteDatabase) { db.execSQL("CREATE TABLE IF NOT EXISTS `Plug` (`name` TEXT NOT NULL, PRIMARY KEY(`name`))") } + } + private val MIGRATION_5 = object : Migration(4, 5) { + override fun migrate(db: SupportSQLiteDatabase) { + // recreate ChargeLocation table to make other address fields nullable + db.beginTransaction() + db.execSQL("CREATE TABLE `ChargeLocationNew` (`id` INTEGER NOT NULL, `name` TEXT NOT NULL, `chargepoints` TEXT NOT NULL, `network` TEXT, `url` TEXT NOT NULL, `verified` INTEGER NOT NULL, `operator` TEXT, `generalInformation` TEXT, `amenities` TEXT, `locationDescription` TEXT, `photos` TEXT, `lat` REAL NOT NULL, `lng` REAL NOT NULL, `city` TEXT, `country` TEXT, `postcode` TEXT, `street` TEXT, `twentyfourSeven` INTEGER, `description` TEXT, `mostart` TEXT, `moend` TEXT, `tustart` TEXT, `tuend` TEXT, `westart` TEXT, `weend` TEXT, `thstart` TEXT, `thend` TEXT, `frstart` TEXT, `frend` TEXT, `sastart` TEXT, `saend` TEXT, `sustart` TEXT, `suend` TEXT, `hostart` TEXT, `hoend` TEXT, `freecharging` INTEGER, `freeparking` INTEGER, `descriptionShort` TEXT, `descriptionLong` TEXT, PRIMARY KEY(`id`))"); + db.execSQL("INSERT INTO `ChargeLocationNew` SELECT * FROM `ChargeLocation`"); + db.execSQL("DROP TABLE `ChargeLocation`") + db.execSQL("ALTER TABLE `ChargeLocationNew` RENAME TO `ChargeLocation`") + db.endTransaction() + } } } } \ No newline at end of file