package org.mifos.application.importexport.xls; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.mifos.accounts.util.helpers.AccountState; import org.mifos.accounts.util.helpers.AccountTypes; /** * Contais statuses of loan and savings accounts. Each status is a pair of two values: name is string used in xls template, * and state is of type AccountState, used as mifos' states representation * @author lgadomski */ public enum XlsLoanSavingsAccountStatesConstants { LOAN_CANCELLED("Cancelled",AccountState.LOAN_CANCELLED), LOAN_ACTIVE_GOOD_STANDING("Active in good standing",AccountState.LOAN_ACTIVE_IN_GOOD_STANDING), LOAN_ACTIVE_BAD_STANDING("Active in bad standing",AccountState.LOAN_ACTIVE_IN_BAD_STANDING), LOAN_APPROVED("Approved",AccountState.LOAN_APPROVED), LOAN_CLOSED_OBLIGATIONS_MET("Closed Obligation Met",AccountState.LOAN_CLOSED_OBLIGATIONS_MET), LOAN_CLOSED_RESCHEDULED("Closed Rescheduled",AccountState.LOAN_CLOSED_RESCHEDULED), LOAN_CLOSED_WRITTEN_OFF("Closed Written OFF",AccountState.LOAN_CLOSED_WRITTEN_OFF), LOAN_PARTIAL_APPLICATION("Partial Application",AccountState.LOAN_PARTIAL_APPLICATION), LOAN_PENDING_APPROVAL("Pending Approval",AccountState.LOAN_PENDING_APPROVAL), SAVINGS_ACTIVE("Active",AccountState.SAVINGS_ACTIVE), SAVINGS_CANCELLED("Cancelled",AccountState.SAVINGS_CANCELLED), SAVINGS_CLOSED("Closed",AccountState.SAVINGS_CLOSED), SAVINGS_INACTIVE("Inactive",AccountState.SAVINGS_INACTIVE), SAVINGS_PARTIAL_APPLICATION("Partial Application",AccountState.SAVINGS_PARTIAL_APPLICATION), SAVINGS_PENDING_APPROVAL("Pending Approval",AccountState.SAVINGS_PENDING_APPROVAL); private XlsLoanSavingsAccountStatesConstants(String name, AccountState state){ this.name=name; this.state=state; } private String name; private AccountState state; /** * Returns list of states for savings or loan accounts. * @param typeOfAccount works only for savings accounts and loans accounts. For other types returns empty list. * @return list of states for account, where account is savings or loan, or empty list */ public static List<XlsLoanSavingsAccountStatesConstants> getAccountStatesForAccountType(AccountTypes typeOfAccount){ List<XlsLoanSavingsAccountStatesConstants> accountStates=new ArrayList<XlsLoanSavingsAccountStatesConstants>(); if(typeOfAccount.equals(AccountTypes.LOAN_ACCOUNT)){ XlsLoanSavingsAccountStatesConstants[] states={LOAN_PARTIAL_APPLICATION, LOAN_PENDING_APPROVAL, LOAN_APPROVED, LOAN_ACTIVE_GOOD_STANDING, LOAN_CLOSED_OBLIGATIONS_MET, LOAN_CLOSED_WRITTEN_OFF, LOAN_CLOSED_RESCHEDULED, LOAN_ACTIVE_BAD_STANDING, LOAN_CANCELLED}; accountStates=Arrays.asList(states); }else if(typeOfAccount.equals(AccountTypes.SAVINGS_ACCOUNT)){ XlsLoanSavingsAccountStatesConstants[] states={SAVINGS_PARTIAL_APPLICATION,SAVINGS_PENDING_APPROVAL,SAVINGS_CANCELLED, SAVINGS_ACTIVE,SAVINGS_CLOSED, SAVINGS_INACTIVE}; accountStates=Arrays.asList(states); } return accountStates; } /** * Account status representation in xls template * @return */ public String getName() { return name; } /** * Account status representation in mifos' code. * @return */ public AccountState getState() { return state; } }