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;
}
@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 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();
return dbo;
}
+ @NonNull
+ public AccountWithAmounts toDBOWithAmounts() {
+ AccountWithAmounts dbo = new AccountWithAmounts();
+ dbo.account = toDBO();
+
+ dbo.amounts = new ArrayList<>();
+ for (LedgerAmount amt : getAmounts()) {
+ AccountValue val = new AccountValue();
+ val.setCurrency(amt.getCurrency());
+ val.setValue(amt.getAmount());
+ dbo.amounts.add(val);
+ }
+
+ return dbo;
+ }
public long getId() {
return dbId;
}