]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/model/LedgerTransaction.java
rework account list management to be fully asynchronous
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / model / LedgerTransaction.java
index 9b73d2ce9d1c9d477c77fe70f83bcdb0ee126aeb..638a692cff56d21417e15786183c2bb0a14109a2 100644 (file)
@@ -20,6 +20,10 @@ package net.ktnx.mobileledger.model;
 import android.database.Cursor;
 import android.database.sqlite.SQLiteDatabase;
 
+import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import net.ktnx.mobileledger.App;
 import net.ktnx.mobileledger.utils.Digest;
 import net.ktnx.mobileledger.utils.Globals;
 import net.ktnx.mobileledger.utils.SimpleDate;
@@ -98,7 +102,15 @@ public class LedgerTransaction {
         accounts.add(item);
         dataHash = null;
     }
+    @Nullable
+    public SimpleDate getDateIfAny() {
+        return date;
+    }
+    @NonNull
     public SimpleDate getDate() {
+        loadData(App.getDatabase());
+        if (date == null)
+            throw new IllegalStateException("Transaction has no date");
         return date;
     }
     public void setDate(SimpleDate date) {
@@ -207,4 +219,27 @@ public class LedgerTransaction {
     public void finishLoading() {
         dataLoaded = true;
     }
+    @Override
+    public boolean equals(@Nullable Object obj) {
+        if (obj == null)
+            return false;
+        if (!obj.getClass()
+                .equals(this.getClass()))
+            return false;
+
+        return ((LedgerTransaction) obj).getDataHash()
+                                        .equals(getDataHash());
+    }
+
+    public boolean hasAccountNamedLike(String name) {
+        name = name.toUpperCase();
+        for (LedgerTransactionAccount acc : accounts) {
+            if (acc.getAccountName()
+                   .toUpperCase()
+                   .contains(name))
+                return true;
+        }
+
+        return false;
+    }
 }