/*
* Copyright (c) 2005-2011 Grameen Foundation USA
* All rights reserved.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or
* implied. See the License for the specific language governing
* permissions and limitations under the License.
*
* See also http://www.apache.org/licenses/LICENSE-2.0.html for an
* explanation of the license and how it is applied.
*/
package org.mifos.framework.components.taggenerator;
import org.mifos.accounts.business.AccountBO;
import org.mifos.accounts.loan.business.LoanBO;
import org.mifos.accounts.savings.business.SavingsBO;
import org.mifos.accounts.util.helpers.AccountTypes;
import org.mifos.framework.business.AbstractBusinessObject;
public class AccountTagGenerator extends TagGenerator {
public AccountTagGenerator() {
setAssociatedGenerator(new CustomerTagGenerator());
}
@Override
protected StringBuilder build(AbstractBusinessObject obj, boolean selfLinkRequired, Object randomNum) {
AccountBO account = (AccountBO) obj;
StringBuilder strBuilder = getAssociatedGenerator().build(account.getCustomer(), randomNum);
strBuilder.append(" / ");
if(account.isGroupLoanAccountMember()){
createAccountLink(strBuilder, ((LoanBO)account).getParentAccount(), randomNum);
strBuilder.append(" / ");
}
if (selfLinkRequired) {
createAccountLink(strBuilder, account, randomNum); // create self
// link
} else {
// TODO internationalize this
strBuilder.append("<b>" + getAccountName(account) + "</b>"); // get
// Self
// Node
// Value
}
return strBuilder;
}
private void createAccountLink(StringBuilder strBuilder, AccountBO account, Object randomNum) {
strBuilder.append("<a href=\"");
strBuilder.append(getAction(account));
strBuilder.append(account.getGlobalAccountNum());
strBuilder.append("&randomNum=");
strBuilder.append(randomNum);
strBuilder.append("\">");
// TODO internationalize this
strBuilder.append(getAccountName(account));
strBuilder.append("</a>");
}
private String getAccountName(AccountBO account) {
if (account.getType() == AccountTypes.SAVINGS_ACCOUNT) {
return ((SavingsBO) account).getSavingsOffering().getPrdOfferingName();
} else if (account.getType() == AccountTypes.LOAN_ACCOUNT) {
return ((LoanBO) account).getLoanOffering().getPrdOfferingName();
} else if (account.getType() == AccountTypes.GROUP_LOAN_ACCOUNT) {
return ((LoanBO) account).getLoanOffering().getPrdOfferingName();
}
return "";
}
private String getAction(AccountBO account) {
if (account.getType() == AccountTypes.SAVINGS_ACCOUNT) {
return "viewSavingsAccountDetails.ftl?globalAccountNum=";
} else if (account.getType() == AccountTypes.LOAN_ACCOUNT) {
return "viewLoanAccountDetails.ftl?globalAccountNum=";
} else if (account.getType() == AccountTypes.GROUP_LOAN_ACCOUNT) {
return "viewLoanAccountDetails.ftl?globalAccountNum=";
}
return "";
}
}