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 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);
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();