]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/model/MobileLedgerProfile.java
make Currency loadable by id
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / model / MobileLedgerProfile.java
index 21d15d162ebb1743586bdb71c5f1b210e905d16f..b8085765eb069048f78cfe5621e93ef8e5887268 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2020 Damyan Ivanov.
+ * Copyright © 2021 Damyan Ivanov.
  * This file is part of MoLe.
  * MoLe is free software: you can distribute it and/or modify it
  * under the term of the GNU General Public License as published by
@@ -32,7 +32,7 @@ import net.ktnx.mobileledger.App;
 import net.ktnx.mobileledger.R;
 import net.ktnx.mobileledger.async.DbOpQueue;
 import net.ktnx.mobileledger.json.API;
-import net.ktnx.mobileledger.ui.activity.ProfileDetailActivity;
+import net.ktnx.mobileledger.ui.profiles.ProfileDetailActivity;
 import net.ktnx.mobileledger.ui.profiles.ProfileDetailFragment;
 import net.ktnx.mobileledger.utils.Logger;
 import net.ktnx.mobileledger.utils.Misc;
@@ -629,6 +629,25 @@ public final class MobileLedgerProfile {
                 new AccountAndTransactionListSaver(this, accounts, transactions);
         accountAndTransactionListSaver.start();
     }
+    private Currency tryLoadCurrencyById(SQLiteDatabase db, int id) {
+        try (Cursor cursor = db.rawQuery(
+                "SELECT c.id, c.name, c.position, c.has_gap FROM currencies c WHERE c.id=?",
+                new String[]{String.valueOf(id)}))
+        {
+            if (cursor.moveToFirst()) {
+                return new Currency(cursor.getInt(0), cursor.getString(1),
+                        Currency.Position.valueOf(cursor.getString(2)), cursor.getInt(3) == 1);
+            }
+            return null;
+        }
+    }
+    public Currency loadCurrencyById(int id) {
+        SQLiteDatabase db = App.getDatabase();
+        Currency result = tryLoadCurrencyById(db, id);
+        if (result == null)
+            throw new RuntimeException(String.format("Unable to load currency with id '%d'", id));
+        return result;
+    }
 
     public enum FutureDates {
         None(0), OneWeek(7), TwoWeeks(14), OneMonth(30), TwoMonths(60), ThreeMonths(90),