]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/model/MobileLedgerProfile.java
profiles: ensure single instance per profile, fix havoc on add/removal of a profile
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / model / MobileLedgerProfile.java
index 8514e71d04816918f009df20c229dc5ddb8f213c..2b587c8ed4ad6d01331577122702e2f8c8ef6eec 100644 (file)
@@ -21,6 +21,7 @@ import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
 import android.util.Log;
 
+import net.ktnx.mobileledger.utils.Globals;
 import net.ktnx.mobileledger.utils.MLDB;
 
 import java.util.ArrayList;
@@ -52,18 +53,25 @@ public final class MobileLedgerProfile {
         this.authUserName = String.valueOf(authUserName);
         this.authPassword = String.valueOf(authPassword);
     }
-    public static List<MobileLedgerProfile> loadAllFromDB() {
-        List<MobileLedgerProfile> result = new ArrayList<>();
+    // loads all profiles into Data.profiles
+    // returns the profile with the given UUID
+    public static MobileLedgerProfile loadAllFromDB(String currentProfileUUID) {
+        MobileLedgerProfile result = null;
+        List<MobileLedgerProfile> list = new ArrayList<>();
         SQLiteDatabase db = MLDB.getReadableDatabase();
         try (Cursor cursor = db.rawQuery("SELECT uuid, name, url, use_authentication, auth_user, " +
                                          "auth_password FROM profiles order by order_no", null))
         {
             while (cursor.moveToNext()) {
-                result.add(new MobileLedgerProfile(cursor.getString(0), cursor.getString(1),
+                MobileLedgerProfile item =
+                        new MobileLedgerProfile(cursor.getString(0), cursor.getString(1),
                         cursor.getString(2), cursor.getInt(3) == 1, cursor.getString(4),
-                        cursor.getString(5)));
+                                cursor.getString(5));
+                list.add(item);
+                if (item.getUuid().equals(currentProfileUUID)) result = item;
             }
         }
+        Data.profiles.setList(list);
         return result;
     }
     public static void storeProfilesOrder() {
@@ -209,7 +217,8 @@ public final class MobileLedgerProfile {
 
         db.execSQL("INSERT INTO transactions(profile, id, date, description, data_hash, keep) " +
                    "values(?,?,?,?,?,1)",
-                new Object[]{uuid, tr.getId(), tr.getDate(), tr.getDescription(), tr.getDataHash()
+                new Object[]{uuid, tr.getId(), Globals.formatLedgerDate(tr.getDate()),
+                             tr.getDescription(), tr.getDataHash()
                 });
 
         for (LedgerTransactionAccount item : tr.getAccounts()) {