X-Git-Url: https://git.ktnx.net/?p=mobile-ledger.git;a=blobdiff_plain;f=app%2Fsrc%2Fmain%2Fjava%2Fnet%2Fktnx%2Fmobileledger%2Fmodel%2FAccountListItem.java;h=a96a9a3e2f75c4e9da6bc300e760e47879a860a9;hp=5fd951715eeaf609cf46358f909b18c9f1a052f9;hb=acdedb28266ec0bde0a3b6775837a70455c339fe;hpb=af71ed7ba87644a3274d9ee4176dbdb31aca55f1 diff --git a/app/src/main/java/net/ktnx/mobileledger/model/AccountListItem.java b/app/src/main/java/net/ktnx/mobileledger/model/AccountListItem.java index 5fd95171..a96a9a3e 100644 --- a/app/src/main/java/net/ktnx/mobileledger/model/AccountListItem.java +++ b/app/src/main/java/net/ktnx/mobileledger/model/AccountListItem.java @@ -1,5 +1,5 @@ /* - * Copyright © 2020 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 @@ -22,25 +22,34 @@ import androidx.annotation.NonNull; import org.jetbrains.annotations.NotNull; public class AccountListItem { - private final Type type; - private LedgerAccount account; - public AccountListItem(@NotNull LedgerAccount account) { - this.type = Type.ACCOUNT; - this.account = account; - } - public AccountListItem() { - this.type = Type.HEADER; - } + private AccountListItem() {} @NonNull public Type getType() { - return type; + if (this instanceof Account) + return Type.ACCOUNT; + else if (this instanceof Header) + return Type.HEADER; + else + throw new RuntimeException("Unsupported sub-class " + this); } @NotNull public LedgerAccount getAccount() { - if (type != Type.ACCOUNT) - throw new IllegalStateException( - String.format("Item type is not %s, but %s", Type.ACCOUNT, type)); - return account; + if (this instanceof Account) + return ((Account) this).account; + + throw new IllegalStateException(String.format("Item type is not Account, but %s", this)); } public enum Type {ACCOUNT, HEADER} + + public static class Account extends AccountListItem { + private final LedgerAccount account; + public Account(@NotNull LedgerAccount account) { + this.account = account; + } + } + + public static class Header extends AccountListItem { + public Header() { + } + } }