X-Git-Url: https://git.ktnx.net/?a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fmodel%2FLedgerAccount.java;h=7fb38649a1e46571515917e59fcbabf4a2811950;hb=HEAD;hp=1e2a1a4f6834ed306d1ffb948715f26379c5df7f;hpb=5df10dc0b58df4d4be4e9ab34f1e0f477ca46766;p=mobile-ledger.git diff --git a/app/src/main/java/net/ktnx/mobileledger/model/LedgerAccount.java b/app/src/main/java/net/ktnx/mobileledger/model/LedgerAccount.java index 1e2a1a4f..c2e62772 100644 --- a/app/src/main/java/net/ktnx/mobileledger/model/LedgerAccount.java +++ b/app/src/main/java/net/ktnx/mobileledger/model/LedgerAccount.java @@ -1,5 +1,5 @@ /* - * Copyright © 2021 Damyan Ivanov. + * Copyright © 2024 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 @@ -29,6 +29,7 @@ import java.util.List; import java.util.regex.Pattern; public class LedgerAccount { + private static final char ACCOUNT_DELIMITER = ':'; static Pattern reHigherAccount = Pattern.compile("^[^:]+:"); private final LedgerAccount parent; private long dbId; @@ -51,12 +52,15 @@ public class LedgerAccount { } @Nullable public static String extractParentName(@NonNull String accName) { - int colonPos = accName.lastIndexOf(':'); + int colonPos = accName.lastIndexOf(ACCOUNT_DELIMITER); if (colonPos < 0) return null; // no parent account -- this is a top-level account else return accName.substring(0, colonPos); } + public static boolean isParentOf(@NonNull String possibleParent, @NonNull String accountName) { + return accountName.startsWith(possibleParent + ':'); + } @NonNull static public LedgerAccount fromDBO(AccountWithAmounts in, LedgerAccount parent) { LedgerAccount res = new LedgerAccount(in.account.getName(), parent); @@ -73,6 +77,15 @@ public class LedgerAccount { return res; } + public static int determineLevel(String accName) { + int level = 0; + int delimiterPosition = accName.indexOf(ACCOUNT_DELIMITER); + while (delimiterPosition >= 0) { + level++; + delimiterPosition = accName.indexOf(ACCOUNT_DELIMITER, delimiterPosition + 1); + } + return level; + } @Override public int hashCode() { return name.hashCode(); @@ -188,13 +201,21 @@ public class LedgerAccount { if (amounts != null) amounts.clear(); } - public boolean amountsExpanded() { return amountsExpanded; } - public void setAmountsExpanded(boolean flag) { amountsExpanded = flag; } - public void toggleAmountsExpanded() { amountsExpanded = !amountsExpanded; } + public boolean amountsExpanded() {return amountsExpanded;} + public void setAmountsExpanded(boolean flag) {amountsExpanded = flag;} + public void toggleAmountsExpanded() {amountsExpanded = !amountsExpanded;} public void propagateAmountsTo(LedgerAccount acc) { for (LedgerAmount a : amounts) a.propagateToAccount(acc); } + public boolean allAmountsAreZero() { + for (LedgerAmount a : amounts) { + if (a.getAmount() != 0) + return false; + } + + return true; + } public List getAmounts() { return amounts; }