Java tutorial
package com.etcc.csc.presentation.action.payment; import com.etcc.csc.common.Constants; import com.etcc.csc.common.DelegateEnum; import com.etcc.csc.common.DelegateFactory; import com.etcc.csc.common.Logger; import com.etcc.csc.datatype.Invoice; import com.etcc.csc.datatype.Violation; import com.etcc.csc.dto.AccountLoginDTO; import com.etcc.csc.dto.LicensePlateDTO; import com.etcc.csc.dto.TagDTO; import com.etcc.csc.presentation.datatype.PaymentContext; import com.etcc.csc.service.AccountInterface; import com.etcc.csc.service.AppInterface; import com.etcc.csc.service.PaymentInterface; import com.etcc.csc.util.SessionUtil; import java.math.BigDecimal; import java.util.ArrayList; import java.util.Collection; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import javax.servlet.http.HttpSession; import org.apache.commons.lang.ArrayUtils; import org.apache.struts.action.Action; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.DynaActionForm; /* * * DisplayPaymentDetailAction:: Action to get All Open Invoices :: No Monthly Statement * */ public class DisplayPaymentDetailAction extends Action { private static Logger logger = Logger.getLogger(DisplayPaymentDetailAction.class); public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { DynaActionForm dynaForm = (DynaActionForm) form; HttpSession session = request.getSession(); AccountLoginDTO accountLoginDTO = SessionUtil.getSessionAccountLogin(session); PaymentContext paymentContext = SessionUtil.getPaymentContext(session); if (!ArrayUtils.isEmpty(paymentContext.getAuthorizedStatementInvoices())) { dynaForm.set("licensePlate", accountLoginDTO.getLicPlate() + "~" + accountLoginDTO.getLicState()); dynaForm.set("tagAmount", paymentContext.getTagAmount().toPlainString()); return mapping.findForward("monthlyStatement.success"); } BigDecimal minGoodBalance = getGoodBalanceMinPayment(); if (paymentContext.getOriginalTagAmount() != null && paymentContext.getTagAmount() != null && paymentContext.getOriginalTagAmount().compareTo(minGoodBalance) == 0 && paymentContext.getTagAmount().compareTo(minGoodBalance) >= 0) { if (SessionUtil.getRetailTransId(session) == 0) { request.setAttribute("SuggestedPaymentMessage", true); } } //rtalreja 02/02/2015 boolean hasViolInvoices = processPopulate(paymentContext, form, session); logger.info("Has viol Invoices ::" + hasViolInvoices); PaymentInterface payment = (PaymentInterface) DelegateFactory.create(DelegateEnum.PAYMENT_DELEGATE); AccountInterface account = (AccountInterface) DelegateFactory.create(DelegateEnum.ACCOUNT); Collection<TagDTO> dtos = account.getAccountTags(accountLoginDTO); boolean hasVbInvoice = false; long invoice_id = 0; if (dtos != null && Constants.LOGIN_TYPE_ACCOUNT.equals(accountLoginDTO.getLoginType())) { for (TagDTO dto : dtos) { invoice_id = payment.hasVBInvoices(dto.getLicPlate(), dto.getLicState(), null, null); if (invoice_id > 0) { hasVbInvoice = true; break; } } } else { BigDecimal invoiceId = null; if (Constants.LOGIN_TYPE_ZIPCASH_INVOICE.equals(accountLoginDTO.getLoginType()) || Constants.LOGIN_TYPE_INVOICE.equals(accountLoginDTO.getLoginType())) { invoiceId = new BigDecimal(accountLoginDTO.getInvoiceId()); } BigDecimal violatorId = null; if (accountLoginDTO.getViolatorId() != 0) { violatorId = new BigDecimal(accountLoginDTO.getViolatorId()); } else if (accountLoginDTO.getAcctId() != 0 && Constants.LOGIN_TYPE_ZIPCASH_ACCOUNT.equals(accountLoginDTO.getLoginType())) { violatorId = new BigDecimal(accountLoginDTO.getAcctId()); } invoice_id = payment.hasVBInvoices(accountLoginDTO.getLicPlate(), accountLoginDTO.getLicState(), invoiceId, violatorId); hasVbInvoice = (invoice_id > 0); } if (hasVbInvoice) { request.setAttribute("hasVbViolation", "Y"); request.setAttribute("vBviolationInvoiceId", invoice_id); //rtalreja :: Added logger info :: Issue ZipCash invoices not displayed on Success Forwards logger.error("Account has ZipCash Invoices :: These can be paid through ZipCash Links"); } //rtalreja - 02/02/2015 to handle cases where no invoices are there //In such Scenarios with accounts we have to move to receipt without making payments if ((!hasViolInvoices) && (paymentContext.getOriginalTagAmount() == null || paymentContext.getOriginalTagAmount().compareTo(new BigDecimal(0)) == 0)) { return mapping.findForward("successTag"); } return mapping.findForward("success"); } /* * processPopulate :: Get All Open Viol-invoices:: No Monthly Statement */ private boolean processPopulate(PaymentContext paymentContext, ActionForm form, HttpSession session) { DynaActionForm dynaForm = (DynaActionForm) form; Invoice[] invoices = paymentContext.getInvoices(); ArrayList invoicesSelected = new ArrayList(); //rtalreja 02/02/2015 boolean hasViolInvoices = false; if (invoices != null) { if (invoices.length > 0) { hasViolInvoices = true; } } //rtalreja 02/02/2015 for (int i = 0; invoices != null && i < invoices.length; i++) { if ((invoices[i]).isAuthorized()) { invoicesSelected.add((invoices[i]).getId()); } } dynaForm.set("payInvoice", (String[]) invoicesSelected.toArray(new String[0])); Violation[] violations = paymentContext.getViolations(); ArrayList violationsSelected = new ArrayList(); for (int i = 0; violations != null && i < violations.length; i++) { if (violations[i].isAuthorized()) { violationsSelected.add(violations[i].getId()); } } dynaForm.set("payViolation", (String[]) violationsSelected.toArray(new String[0])); dynaForm.set("acceptVea", paymentContext.isVeaAccepted() ? "Y" : ""); dynaForm.set("tagAmount", paymentContext.getTagAmount().toPlainString()); return hasViolInvoices; } /* * getGoodBalanceMinPayment:: Get Minimum TS Payment Amount for Good Balance Account */ private BigDecimal getGoodBalanceMinPayment() { try { AppInterface ai = (AppInterface) DelegateFactory.create(DelegateEnum.APP_DELEGATE); String value = ai.getSysParam("OLC_TS_MIN_PMT_AMT_GOOD_BAL"); return new BigDecimal(value); } catch (Exception e) { System.out.println(e); } return new BigDecimal(10.0); } }