From 7add3e5bed596f7d4a4a73709f5fe2f7f519aebf Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Fri, 22 Oct 2021 17:40:08 +0200 Subject: [PATCH] Delete local storage cloud and set its vault connection to null (#251) --- data/build.gradle | 2 +- .../data/db/UpgradeDatabaseTest.kt | 57 +++++++++++++++++++ .../cryptomator/data/db/DatabaseUpgrades.java | 6 +- .../org/cryptomator/data/db/Upgrade9To10.kt | 30 ++++++++++ 4 files changed, 92 insertions(+), 3 deletions(-) create mode 100644 data/src/main/java/org/cryptomator/data/db/Upgrade9To10.kt diff --git a/data/build.gradle b/data/build.gradle index 211a64e4..4d2111a2 100644 --- a/data/build.gradle +++ b/data/build.gradle @@ -82,7 +82,7 @@ android { } greendao { - schemaVersion 9 + schemaVersion 10 } configurations.all { diff --git a/data/src/androidTest/java/org/cryptomator/data/db/UpgradeDatabaseTest.kt b/data/src/androidTest/java/org/cryptomator/data/db/UpgradeDatabaseTest.kt index 6e637898..c494bc2a 100644 --- a/data/src/androidTest/java/org/cryptomator/data/db/UpgradeDatabaseTest.kt +++ b/data/src/androidTest/java/org/cryptomator/data/db/UpgradeDatabaseTest.kt @@ -50,6 +50,7 @@ class UpgradeDatabaseTest { Upgrade6To7().applyTo(db, 6) Upgrade7To8().applyTo(db, 7) Upgrade8To9(sharedPreferencesHandler).applyTo(db, 8) + Upgrade9To10().applyTo(db, 9) CloudEntityDao(DaoConfig(db, CloudEntityDao::class.java)).loadAll() VaultEntityDao(DaoConfig(db, VaultEntityDao::class.java)).loadAll() @@ -407,4 +408,60 @@ class UpgradeDatabaseTest { Assert.assertThat(sharedPreferencesHandler.isBetaModeAlreadyShown(), CoreMatchers.`is`(false)) } + + @Test + fun upgrade9To10() { + Upgrade0To1().applyTo(db, 0) + Upgrade1To2().applyTo(db, 1) + Upgrade2To3(context).applyTo(db, 2) + Upgrade3To4().applyTo(db, 3) + Upgrade4To5().applyTo(db, 4) + Upgrade5To6().applyTo(db, 5) + Upgrade6To7().applyTo(db, 6) + Upgrade7To8().applyTo(db, 7) + Upgrade8To9(sharedPreferencesHandler).applyTo(db, 8) + + Sql.insertInto("CLOUD_ENTITY") // + .integer("_id", 15) // + .text("TYPE", CloudType.LOCAL.name) // + .text("URL", "url") // + .text("USERNAME", "username") // + .text("WEBDAV_CERTIFICATE", "certificate") // + .text("ACCESS_TOKEN", "accessToken") + .text("S3_BUCKET", "s3Bucket") // + .text("S3_REGION", "s3Region") // + .text("S3_SECRET_KEY", "s3SecretKey") // + .executeOn(db) + + Sql.insertInto("VAULT_ENTITY") // + .integer("_id", 25) // + .integer("FOLDER_CLOUD_ID", 15) // + .text("FOLDER_PATH", "path") // + .text("FOLDER_NAME", "name") // + .text("CLOUD_TYPE", CloudType.LOCAL.name) // + .text("PASSWORD", "password") // + .integer("POSITION", 10) // + .executeOn(db) + + Sql.insertInto("VAULT_ENTITY") // + .integer("_id", 26) // + .integer("FOLDER_CLOUD_ID", 4) // + .text("FOLDER_PATH", "path") // + .text("FOLDER_NAME", "name") // + .text("CLOUD_TYPE", CloudType.LOCAL.name) // + .text("PASSWORD", "password") // + .integer("POSITION", 11) // + .executeOn(db) + + Upgrade9To10().applyTo(db, 9) + + Sql.query("VAULT_ENTITY").executeOn(db).use { + it.moveToFirst() + Assert.assertThat(it.getString(it.getColumnIndex("FOLDER_CLOUD_ID")), CoreMatchers.`is`("15")) + it.moveToNext() + Assert.assertThat(it.getString(it.getColumnIndex("FOLDER_CLOUD_ID")), CoreMatchers.nullValue()) + } + + } + } diff --git a/data/src/main/java/org/cryptomator/data/db/DatabaseUpgrades.java b/data/src/main/java/org/cryptomator/data/db/DatabaseUpgrades.java index 3b6ef827..638c5c76 100644 --- a/data/src/main/java/org/cryptomator/data/db/DatabaseUpgrades.java +++ b/data/src/main/java/org/cryptomator/data/db/DatabaseUpgrades.java @@ -27,7 +27,8 @@ class DatabaseUpgrades { Upgrade5To6 upgrade5To6, // Upgrade6To7 upgrade6To7, // Upgrade7To8 upgrade7To8, // - Upgrade8To9 upgrade8To9) { + Upgrade8To9 upgrade8To9, // + Upgrade9To10 upgrade9To10) { availableUpgrades = defineUpgrades( // upgrade0To1, // @@ -38,7 +39,8 @@ class DatabaseUpgrades { upgrade5To6, // upgrade6To7, // upgrade7To8, // - upgrade8To9); + upgrade8To9, // + upgrade9To10); } private static Comparator reverseOrder() { diff --git a/data/src/main/java/org/cryptomator/data/db/Upgrade9To10.kt b/data/src/main/java/org/cryptomator/data/db/Upgrade9To10.kt new file mode 100644 index 00000000..7446aaa1 --- /dev/null +++ b/data/src/main/java/org/cryptomator/data/db/Upgrade9To10.kt @@ -0,0 +1,30 @@ +package org.cryptomator.data.db + +import org.cryptomator.domain.CloudType +import org.greenrobot.greendao.database.Database +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +internal class Upgrade9To10 @Inject constructor() : DatabaseUpgrade(9, 10) { + + override fun internalApplyTo(db: Database, origin: Int) { + db.beginTransaction() + + try { + Sql.update("VAULT_ENTITY") + .set("FOLDER_CLOUD_ID", Sql.toString(null)) + .where("FOLDER_CLOUD_ID", Sql.eq(4)) + .executeOn(db) + + Sql.deleteFrom("CLOUD_ENTITY") + .where("FOLDER_CLOUD_ID", Sql.eq(4)) + .where("TYPE", Sql.eq(CloudType.LOCAL.name)) + .executeOn(db) + + db.setTransactionSuccessful() + } finally { + db.endTransaction() + } + } +}