X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2FLedgerAccount.java;fp=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2FLedgerAccount.java;h=27ab1d82f4d9303f3a205ae48835eff7ac4a1d8c;hp=0000000000000000000000000000000000000000;hb=f6c803b3c43e2601b3c5ed7f6b6a0e630a71cf6b;hpb=0da12809143008ee7116162be26564e6e6a562cc diff --git a/app/src/main/java/net/ktnx/mobileledger/LedgerAccount.java b/app/src/main/java/net/ktnx/mobileledger/LedgerAccount.java new file mode 100644 index 00000000..27ab1d82 --- /dev/null +++ b/app/src/main/java/net/ktnx/mobileledger/LedgerAccount.java @@ -0,0 +1,113 @@ +package net.ktnx.mobileledger; + +import android.support.annotation.NonNull; + +import java.util.ArrayList; +import java.util.List; +import java.util.regex.Matcher; +import java.util.regex.Pattern; + +class LedgerAccount { + private String name; + private String shortName; + private int level; + private String parentName; + private boolean hidden; + private List amounts; + private boolean selected; + static Pattern higher_account = Pattern.compile("^[^:]+:"); + + LedgerAccount(String name) { + this.setName(name); + hidden = false; + selected = false; + } + + public boolean isHidden() { + return hidden; + } + + public void setHidden(boolean hidden) { + this.hidden = hidden; + } + + LedgerAccount(String name, float amount) { + this.setName(name); + this.hidden = false; + this.amounts = new ArrayList(); + this.addAmount(amount); + } + + public void setName(String name) { + this.name = name; + stripName(); + } + + private void stripName() { + level = 0; + shortName = name; + StringBuilder parentBuilder = new StringBuilder(); + while (true) { + Matcher m = higher_account.matcher(shortName); + if (m.find()) { + level++; + parentBuilder.append(m.group(0)); + shortName = m.replaceFirst(""); + } + else break; + } + if (parentBuilder.length() > 0) + parentName = parentBuilder.substring(0, parentBuilder.length() - 1); + else parentName = null; + } + + String getName() { + return name; + } + + void addAmount(float amount, String currency) { + if (amounts == null ) amounts = new ArrayList<>(); + amounts.add(new LedgerAmount(amount, currency)); + } + void addAmount(float amount) { + this.addAmount(amount, null); + } + + String getAmountsString() { + if ((amounts == null) || amounts.isEmpty()) return ""; + + StringBuilder builder = new StringBuilder(); + for( LedgerAmount amount : amounts ) { + String amt = amount.toString(); + if (builder.length() > 0) builder.append('\n'); + builder.append(amt); + } + + return builder.toString(); + } + + public int getLevel() { + return level; + } + + @NonNull + public String getShortName() { + return shortName; + } + + public String getParentName() { + return parentName; + } + + public boolean isSelected() { + return selected; + } + + public void setSelected(boolean selected) { + this.selected = selected; + } + + public void toggleSelected() { + selected = !selected; + } +}