]> git.ktnx.net Git - mobile-ledger.git/blobdiff - app/src/main/java/net/ktnx/mobileledger/model/LedgerTransactionAccount.java
more pronounced day/month delimiters in the transaction list
[mobile-ledger.git] / app / src / main / java / net / ktnx / mobileledger / model / LedgerTransactionAccount.java
index 4a83b185a00ac7da9046244fc1efd7b26762753b..9706dbb5633e0d8428c98444156a942ee4cd9bd5 100644 (file)
@@ -1,5 +1,5 @@
 /*
- * Copyright © 2019 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
 package net.ktnx.mobileledger.model;
 
 import androidx.annotation.NonNull;
+import androidx.annotation.Nullable;
+
+import net.ktnx.mobileledger.db.TransactionAccount;
+import net.ktnx.mobileledger.utils.Misc;
+
+import java.util.Locale;
 
 public class LedgerTransactionAccount {
     private String accountName;
     private String shortAccountName;
     private float amount;
     private boolean amountSet = false;
+    @Nullable
     private String currency;
     private String comment;
-    public LedgerTransactionAccount(String accountName, float amount) {
-        this(accountName, amount, null);
-    }
-    public LedgerTransactionAccount(String accountName, float amount, String currency) {
+    private boolean amountValid = true;
+    private long dbId;
+    public LedgerTransactionAccount(String accountName, float amount, String currency,
+                                    String comment) {
         this.setAccountName(accountName);
         this.amount = amount;
         this.amountSet = true;
-        this.currency = currency;
+        this.amountValid = true;
+        this.currency = Misc.emptyIsNull(currency);
+        this.comment = Misc.emptyIsNull(comment);
     }
     public LedgerTransactionAccount(String accountName) {
         this.accountName = accountName;
     }
+    public LedgerTransactionAccount(String accountName, String currency) {
+        this.accountName = accountName;
+        this.currency = Misc.emptyIsNull(currency);
+    }
     public LedgerTransactionAccount(LedgerTransactionAccount origin) {
         // copy constructor
         setAccountName(origin.getAccountName());
         setComment(origin.getComment());
         if (origin.isAmountSet())
             setAmount(origin.getAmount());
+        amountValid = origin.amountValid;
         currency = origin.getCurrency();
     }
+    public LedgerTransactionAccount(TransactionAccount dbo) {
+        this(dbo.getAccountName(), dbo.getAmount(), Misc.emptyIsNull(dbo.getCurrency()),
+                Misc.emptyIsNull(dbo.getComment()));
+        amountSet = true;
+        amountValid = true;
+        dbId = dbo.getId();
+    }
     public String getComment() {
         return comment;
     }
@@ -68,22 +89,29 @@ public class LedgerTransactionAccount {
 
         return amount;
     }
-
     public void setAmount(float account_amount) {
         this.amount = account_amount;
         this.amountSet = true;
+        this.amountValid = true;
     }
-
     public void resetAmount() {
         this.amountSet = false;
+        this.amountValid = true;
+    }
+    public void invalidateAmount() {
+        this.amountValid = false;
     }
-
     public boolean isAmountSet() {
         return amountSet;
     }
+    public boolean isAmountValid() { return amountValid; }
+    @Nullable
     public String getCurrency() {
         return currency;
     }
+    public void setCurrency(String currency) {
+        this.currency = Misc.emptyIsNull(currency);
+    }
     @NonNull
     public String toString() {
         if (!amountSet)
@@ -94,8 +122,19 @@ public class LedgerTransactionAccount {
             sb.append(currency);
             sb.append(' ');
         }
-        sb.append(String.format("%,1.2f", amount));
+        sb.append(String.format(Locale.US, "%,1.2f", amount));
 
         return sb.toString();
     }
-}
+    public TransactionAccount toDBO() {
+        TransactionAccount dbo = new TransactionAccount();
+        dbo.setAccountName(accountName);
+        if (amountSet)
+            dbo.setAmount(amount);
+        dbo.setComment(comment);
+        dbo.setCurrency(Misc.nullIsEmpty(currency));
+        dbo.setId(dbId);
+
+        return dbo;
+    }
+}
\ No newline at end of file