X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fdb%2FDB.java;h=cff1d9c14f62452ad80c0af679e81099477a1263;hb=b668c61f3c8968c51033e7d82a08993b57b098e0;hp=c67e1a136f5a5edfb2b7f8594205ea817689dc7b;hpb=8098a8b37a4331b9faf6cf50a51a0d7aa9677421;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/db/DB.java b/app/src/main/java/net/ktnx/mobileledger/db/DB.java index c67e1a13..cff1d9c1 100644 --- a/app/src/main/java/net/ktnx/mobileledger/db/DB.java +++ b/app/src/main/java/net/ktnx/mobileledger/db/DB.java @@ -18,9 +18,11 @@ package net.ktnx.mobileledger.db; import android.content.res.Resources; +import android.database.Cursor; import android.database.SQLException; import androidx.annotation.NonNull; +import androidx.lifecycle.MutableLiveData; import androidx.room.Database; import androidx.room.Room; import androidx.room.RoomDatabase; @@ -31,10 +33,14 @@ import net.ktnx.mobileledger.App; import net.ktnx.mobileledger.dao.AccountDAO; import net.ktnx.mobileledger.dao.AccountValueDAO; import net.ktnx.mobileledger.dao.CurrencyDAO; +import net.ktnx.mobileledger.dao.DescriptionHistoryDAO; import net.ktnx.mobileledger.dao.OptionDAO; +import net.ktnx.mobileledger.dao.ProfileDAO; import net.ktnx.mobileledger.dao.TemplateAccountDAO; import net.ktnx.mobileledger.dao.TemplateHeaderDAO; +import net.ktnx.mobileledger.dao.TransactionAccountDAO; import net.ktnx.mobileledger.dao.TransactionDAO; +import net.ktnx.mobileledger.utils.Logger; import java.io.BufferedReader; import java.io.IOException; @@ -54,6 +60,7 @@ import static net.ktnx.mobileledger.utils.Logger.debug; abstract public class DB extends RoomDatabase { public static final int REVISION = 59; public static final String DB_NAME = "MoLe.db"; + public static final MutableLiveData initComplete = new MutableLiveData<>(false); private static DB instance; public static DB get() { if (instance != null) @@ -95,6 +102,34 @@ abstract public class DB extends RoomDatabase { String fileName = String.format(Locale.US, "db_%d", toVersion); applyRevisionFile(db, fileName); + + // when migrating to version 59, migrate profile/theme options to the + // SharedPreferences + if (toVersion == 59) { + try (Cursor c = db.query( + "SELECT p.id, p.theme_hue FROM profiles p WHERE p.id=(SELECT o.value " + + "FROM options WHERE o.profile_uid IS NULL AND o.name=?", + new Object[]{"profile_id"})) + { + if (c.moveToFirst()) { + long currentProfileId = c.getLong(0); + int currentTheme = c.getInt(1); + + if (currentProfileId >= 0 && currentTheme >= 0) { + App.storeStartupProfileAndTheme(currentProfileId, currentTheme); + } + } + } + } + } + }; + } + private static Migration dummyVersionMigration(int toVersion) { + return new Migration(toVersion - 1, toVersion) { + @Override + public void migrate(@NonNull SupportSQLiteDatabase db) { + Logger.debug("db", + String.format(Locale.ROOT, "Dummy DB migration to version %d", toVersion)); } }; } @@ -174,5 +209,11 @@ abstract public class DB extends RoomDatabase { public abstract TransactionDAO getTransactionDAO(); + public abstract TransactionAccountDAO getTransactionAccountDAO(); + public abstract OptionDAO getOptionDAO(); + + public abstract DescriptionHistoryDAO getDescriptionHistoryDAO(); + + public abstract ProfileDAO getProfileDAO(); }