From 318a7422f42f4a7dae27a20de8b7c2a5bd203ed2 Mon Sep 17 00:00:00 2001 From: Julian Raufelder Date: Tue, 11 May 2021 17:32:22 +0200 Subject: [PATCH] Drop S3 clouds and vaults from the database This is necessary because the path/region handling has changed with the new dependency in the s3 cloud --- data/build.gradle | 2 +- .../cryptomator/data/db/DatabaseUpgrades.java | 6 ++-- .../java/org/cryptomator/data/db/Sql.java | 25 +++++++-------- .../org/cryptomator/data/db/Upgrade7To8.kt | 32 +++++++++++++++++++ 4 files changed, 49 insertions(+), 16 deletions(-) create mode 100644 data/src/main/java/org/cryptomator/data/db/Upgrade7To8.kt diff --git a/data/build.gradle b/data/build.gradle index 2d423315..4d884510 100644 --- a/data/build.gradle +++ b/data/build.gradle @@ -78,7 +78,7 @@ android { } greendao { - schemaVersion 7 + schemaVersion 8 } configurations.all { 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 59fef0f2..dc1c1d70 100644 --- a/data/src/main/java/org/cryptomator/data/db/DatabaseUpgrades.java +++ b/data/src/main/java/org/cryptomator/data/db/DatabaseUpgrades.java @@ -25,7 +25,8 @@ class DatabaseUpgrades { Upgrade3To4 upgrade3To4, // Upgrade4To5 upgrade4To5, // Upgrade5To6 upgrade5To6, // - Upgrade6To7 upgrade6To7) { + Upgrade6To7 upgrade6To7, // + Upgrade7To8 upgrade7To8) { availableUpgrades = defineUpgrades( // upgrade0To1, // @@ -34,7 +35,8 @@ class DatabaseUpgrades { upgrade3To4, // upgrade4To5, // upgrade5To6, // - upgrade6To7); + upgrade6To7, // + upgrade7To8); } private static Comparator reverseOrder() { diff --git a/data/src/main/java/org/cryptomator/data/db/Sql.java b/data/src/main/java/org/cryptomator/data/db/Sql.java index 1fc488a4..e5d71208 100644 --- a/data/src/main/java/org/cryptomator/data/db/Sql.java +++ b/data/src/main/java/org/cryptomator/data/db/Sql.java @@ -498,27 +498,26 @@ class Sql { public static class SqlDeleteBuilder { - private final String table; - private String whereClause; - private String[] whereArgs; + private final String tableName; - public SqlDeleteBuilder(String table) { - this.table = table; + private final StringBuilder whereClause = new StringBuilder(); + private final List whereArgs = new ArrayList<>(); + + public SqlDeleteBuilder(String tableName) { + this.tableName = tableName; } - public SqlDeleteBuilder whereClause(String whereClause) { - this.whereClause = whereClause; - return this; - } - - public SqlDeleteBuilder whereArgs(String[] whereArgs) { - this.whereArgs = whereArgs; + public SqlDeleteBuilder where(String column, Criterion criterion) { + if (whereClause.length() > 0) { + whereClause.append(" AND "); + } + criterion.appendTo(column, whereClause, whereArgs); return this; } public void executeOn(Database wrapped) { SQLiteDatabase db = unwrap(wrapped); - db.delete(table, whereClause, whereArgs); + db.delete(tableName, whereClause.toString(), whereArgs.toArray(new String[whereArgs.size()])); } } diff --git a/data/src/main/java/org/cryptomator/data/db/Upgrade7To8.kt b/data/src/main/java/org/cryptomator/data/db/Upgrade7To8.kt new file mode 100644 index 00000000..5f1a65cc --- /dev/null +++ b/data/src/main/java/org/cryptomator/data/db/Upgrade7To8.kt @@ -0,0 +1,32 @@ +package org.cryptomator.data.db + +import org.greenrobot.greendao.database.Database +import javax.inject.Inject +import javax.inject.Singleton + +@Singleton +internal class Upgrade7To8 @Inject constructor() : DatabaseUpgrade(7, 8) { + + override fun internalApplyTo(db: Database, origin: Int) { + db.beginTransaction() + try { + dropS3Vaults(db) + dropS3Clouds(db) + db.setTransactionSuccessful() + } finally { + db.endTransaction() + } + } + + private fun dropS3Vaults(db: Database) { + Sql.deleteFrom("VAULT_ENTITY") // + .where("CLOUD_TYPE", Sql.eq("S3")) + .executeOn(db) + } + + private fun dropS3Clouds(db: Database) { + Sql.deleteFrom("CLOUD_ENTITY") // + .where("TYPE", Sql.eq("S3")) + .executeOn(db) + } +}