X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fdb%2FDB.java;h=7d3e7809bc8525e80eb32a69a36249c5f1a81e5e;hp=b03faa62fbb1d19b9e75a2c8ce1a2b33a49c54a4;hb=e057b5d14e176767d52d865b6e3f0f081870954e;hpb=4a44ce88b61f00c2710877cf26818db2728b5d91 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 b03faa62..7d3e7809 100644 --- a/app/src/main/java/net/ktnx/mobileledger/db/DB.java +++ b/app/src/main/java/net/ktnx/mobileledger/db/DB.java @@ -41,6 +41,8 @@ import net.ktnx.mobileledger.dao.TransactionAccountDAO; import net.ktnx.mobileledger.dao.TransactionDAO; import net.ktnx.mobileledger.utils.Logger; +import org.jetbrains.annotations.NotNull; + import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; @@ -58,10 +60,22 @@ import static net.ktnx.mobileledger.utils.Logger.debug; TransactionAccount.class }) abstract public class DB extends RoomDatabase { - public static final int REVISION = 63; + public static final int REVISION = 66; public static final String DB_NAME = "MoLe.db"; public static final MutableLiveData initComplete = new MutableLiveData<>(false); private static DB instance; + private static void fixTransactionDescriptionUpper( + @NonNull @NotNull SupportSQLiteDatabase database) { + try (Cursor c = database.query("SELECT id, description FROM transactions")) { + while (c.moveToNext()) { + final long id = c.getLong(0); + final String description = c.getString(1); + database.execSQL("UPDATE transactions SET description_uc=? WHERE id=?", + new Object[]{description.toUpperCase(), id + }); + } + } + } public static DB get() { if (instance != null) return instance; @@ -79,7 +93,23 @@ abstract public class DB extends RoomDatabase { multiVersionMigration(34, 40), singleVersionMigration(41), multiVersionMigration(41, 58), singleVersionMigration(59), singleVersionMigration(60), singleVersionMigration(61), - singleVersionMigration(62), singleVersionMigration(63) + singleVersionMigration(62), singleVersionMigration(63), + singleVersionMigration(64), new Migration(64, 65) { + @Override + public void migrate(@NonNull @NotNull SupportSQLiteDatabase database) { + fixTransactionDescriptionUpper(database); + } + }, new Migration(64, 66) { + @Override + public void migrate(@NonNull @NotNull SupportSQLiteDatabase database) { + fixTransactionDescriptionUpper(database); + } + }, new Migration(65, 66) { + @Override + public void migrate(@NonNull @NotNull SupportSQLiteDatabase database) { + fixTransactionDescriptionUpper(database); + } + } }) .addCallback(new Callback() { @Override @@ -225,4 +255,17 @@ abstract public class DB extends RoomDatabase { public abstract OptionDAO getOptionDAO(); public abstract ProfileDAO getProfileDAO(); + + @androidx.room.Transaction + public void deleteAllSync() { + getTransactionAccountDAO().deleteAllSync(); + getTransactionDAO().deleteAllSync(); + getAccountValueDAO().deleteAllSync(); + getAccountDAO().deleteAllSync(); + getTemplateAccountDAO().deleteAllSync(); + getTemplateDAO().deleteAllSync(); + getCurrencyDAO().deleteAllSync(); + getOptionDAO().deleteAllSync(); + getProfileDAO().deleteAllSync(); + } }