/* * The Kuali Financial System, a comprehensive financial management system for higher education. * * Copyright 2005-2014 The Kuali Foundation * * This program is free software: you can redistribute it and/or modify * it under the terms of the GNU Affero General Public License as * published by the Free Software Foundation, either version 3 of the * License, or (at your option) any later version. * * This program is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the * GNU Affero General Public License for more details. * * You should have received a copy of the GNU Affero General Public License * along with this program. If not, see <http://www.gnu.org/licenses/>. */ package org.kuali.kfs.pdp.web.struts; import java.text.MessageFormat; import java.util.HashMap; import java.util.List; import java.util.Map; import java.util.Properties; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.commons.lang.StringUtils; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.kuali.kfs.pdp.PdpKeyConstants; import org.kuali.kfs.pdp.PdpParameterConstants; import org.kuali.kfs.pdp.PdpPropertyConstants; import org.kuali.kfs.pdp.businessobject.PaymentDetail; import org.kuali.kfs.pdp.businessobject.PaymentGroup; import org.kuali.kfs.pdp.businessobject.lookup.PaymentDetailLookupableHelperService; import org.kuali.kfs.pdp.service.PaymentMaintenanceService; import org.kuali.kfs.pdp.util.PdpPaymentDetailQuestionCallback; import org.kuali.kfs.sys.KFSConstants; import org.kuali.kfs.sys.context.SpringContext; import org.kuali.rice.core.api.config.property.ConfigurationService; import org.kuali.rice.kim.api.identity.Person; import org.kuali.rice.kns.question.ConfirmationQuestion; import org.kuali.rice.kns.web.struts.action.KualiAction; import org.kuali.rice.krad.service.BusinessObjectService; import org.kuali.rice.krad.util.ErrorMessage; import org.kuali.rice.krad.util.GlobalVariables; import org.kuali.rice.krad.util.KRADConstants; import org.kuali.rice.krad.util.MessageMap; import org.kuali.rice.krad.util.ObjectUtils; import org.kuali.rice.krad.util.UrlFactory; /** * This class defines actions for Payment */ public class PaymentDetailAction extends KualiAction { private PaymentMaintenanceService paymentMaintenanceService; private BusinessObjectService businessObjectService; /** * Constructs a PaymentDetailAction.java. */ public PaymentDetailAction() { setPaymentMaintenanceService(SpringContext.getBean(PaymentMaintenanceService.class)); setBusinessObjectService(SpringContext.getBean(BusinessObjectService.class)); } /** * This method confirms and cancels a payment. * @param mapping * @param form * @param request * @param response * @return * @throws Exception */ public ActionForward confirmAndCancel(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { PdpPaymentDetailQuestionCallback callback = new PdpPaymentDetailQuestionCallback() { public boolean doPostQuestion(int paymentDetailId, String changeText, Person user) { return performCancel(paymentDetailId, changeText, user); } }; return askQuestionWithInput(mapping, form, request, response, PdpKeyConstants.PaymentDetail.Confirmation.CANCEL_PAYMENT_QUESTION, PdpKeyConstants.PaymentDetail.Confirmation.CANCEL_PAYMENT_MESSAGE, PdpKeyConstants.PaymentDetail.Messages.PAYMENT_SUCCESSFULLY_CANCELED, "confirmAndCancel", callback); } /** * This method cancels a payment. * @param paymentDetailId the payment detail id. * @param changeText the text of the change * @param user the user that perfomed the change * @return true if payment successfully canceled, false otherwise */ private boolean performCancel(int paymentDetailId, String changeText, Person user) { Map keyMap = new HashMap(); keyMap.put(PdpPropertyConstants.PaymentDetail.PAYMENT_ID, paymentDetailId); PaymentDetail paymentDetail = (PaymentDetail) businessObjectService.findByPrimaryKey(PaymentDetail.class, keyMap); if (ObjectUtils.isNotNull(paymentDetail)) { int paymentGroupId = paymentDetail.getPaymentGroupId().intValue(); return paymentMaintenanceService.cancelPendingPayment(paymentGroupId, paymentDetailId, changeText, user); } else { GlobalVariables.getMessageMap().putError(PdpPropertyConstants.PaymentDetail.PAYMENT_ID, PdpKeyConstants.PaymentDetail.ErrorMessages.ERROR_PAYMENT_NOT_FOUND); return false; } } /** * This method confirms and holds a payment * * @param mapping * @param form * @param request * @param response * @return * @throws Exception */ public ActionForward confirmAndHold(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { PdpPaymentDetailQuestionCallback callback = new PdpPaymentDetailQuestionCallback() { public boolean doPostQuestion(int paymentDetailId, String changeText, Person user) { return performHold(paymentDetailId, changeText, user); } }; return askQuestionWithInput(mapping, form, request, response, PdpKeyConstants.PaymentDetail.Confirmation.HOLD_PAYMENT_QUESTION, PdpKeyConstants.PaymentDetail.Confirmation.HOLD_PAYMENT_MESSAGE, PdpKeyConstants.PaymentDetail.Messages.PAYMENT_SUCCESSFULLY_HOLD, "confirmAndHold", callback); } /** */ /** * This method performs a hold on a payment. * @param paymentDetailId the payment detail id * @param changeText the text of the user change * @param user the user that performed the change * @return true if payment successfully held, false otherwise */ private boolean performHold(int paymentDetailId, String changeText, Person user) { Map keyMap = new HashMap(); keyMap.put(PdpPropertyConstants.PaymentDetail.PAYMENT_ID, paymentDetailId); PaymentDetail paymentDetail = (PaymentDetail) businessObjectService.findByPrimaryKey(PaymentDetail.class, keyMap); if (ObjectUtils.isNotNull(paymentDetail)) { int paymentGroupId = paymentDetail.getPaymentGroupId().intValue(); return paymentMaintenanceService.holdPendingPayment(paymentGroupId, changeText, user); } else { GlobalVariables.getMessageMap().putError(PdpPropertyConstants.PaymentDetail.PAYMENT_ID, PdpKeyConstants.PaymentDetail.ErrorMessages.ERROR_PAYMENT_NOT_FOUND); return false; } } /** * This method confirms and removes a hold on a payment. * * @param mapping * @param form * @param request * @param response * @return an ActionForward * @throws Exception */ public ActionForward confirmAndRemoveHold(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { PdpPaymentDetailQuestionCallback callback = new PdpPaymentDetailQuestionCallback() { public boolean doPostQuestion(int paymentDetailId, String changeText, Person user) { return performRemoveHold(paymentDetailId, changeText, user); } }; return askQuestionWithInput(mapping, form, request, response, PdpKeyConstants.PaymentDetail.Confirmation.REMOVE_HOLD_PAYMENT_QUESTION, PdpKeyConstants.PaymentDetail.Confirmation.REMOVE_HOLD_PAYMENT_MESSAGE, PdpKeyConstants.PaymentDetail.Messages.HOLD_SUCCESSFULLY_REMOVED_ON_PAYMENT, "confirmAndRemoveHold", callback); } /** * This method removes a hold on payment. * @param paymentDetailId the payment detail id * @param changeText the text of the user change * @param user the user that performs the change * @return true if hold successfully removed from payment, false otherwise */ private boolean performRemoveHold(int paymentDetailId, String changeText, Person user) { Map keyMap = new HashMap(); keyMap.put(PdpPropertyConstants.PaymentDetail.PAYMENT_ID, paymentDetailId); PaymentDetail paymentDetail = (PaymentDetail) businessObjectService.findByPrimaryKey(PaymentDetail.class, keyMap); if (ObjectUtils.isNotNull(paymentDetail)) { int paymentGroupId = paymentDetail.getPaymentGroupId().intValue(); return paymentMaintenanceService.removeHoldPendingPayment(paymentGroupId, changeText, user); } else { GlobalVariables.getMessageMap().putError(PdpPropertyConstants.PaymentDetail.PAYMENT_ID, PdpKeyConstants.PaymentDetail.ErrorMessages.ERROR_PAYMENT_NOT_FOUND); return false; } } /** * This method confirms and sets the immediate flag. * @param mapping * @param form * @param request * @param response * @return an ActionForward * @throws Exception */ public ActionForward confirmAndSetImmediate(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { PdpPaymentDetailQuestionCallback callback = new PdpPaymentDetailQuestionCallback() { public boolean doPostQuestion(int paymentDetailId, String changeText, Person user) { return performSetImmediate(paymentDetailId, changeText, user); } }; return askQuestionWithInput(mapping, form, request, response, PdpKeyConstants.PaymentDetail.Confirmation.CHANGE_IMMEDIATE_PAYMENT_QUESTION, PdpKeyConstants.PaymentDetail.Confirmation.CHANGE_IMMEDIATE_PAYMENT_MESSAGE, PdpKeyConstants.PaymentDetail.Messages.PAYMENT_SUCCESSFULLY_SET_AS_IMMEDIATE, "confirmAndSetImmediate", callback); } /** * This method sets the immediate flag * @param paymentDetailId the payment detail id * @param changeText the text of the change * @param user the user that performed the change * @return true if flag successfully set on payment, false otherwise */ private boolean performSetImmediate(int paymentDetailId, String changeText, Person user) { Map keyMap = new HashMap(); keyMap.put(PdpPropertyConstants.PaymentDetail.PAYMENT_ID, paymentDetailId); PaymentDetail paymentDetail = (PaymentDetail) businessObjectService.findByPrimaryKey(PaymentDetail.class, keyMap); if (ObjectUtils.isNotNull(paymentDetail)) { int paymentGroupId = paymentDetail.getPaymentGroupId().intValue(); paymentMaintenanceService.changeImmediateFlag(paymentGroupId, changeText, user); return true; } else { GlobalVariables.getMessageMap().putError(PdpPropertyConstants.PaymentDetail.PAYMENT_ID, PdpKeyConstants.PaymentDetail.ErrorMessages.ERROR_PAYMENT_NOT_FOUND); return false; } } /** * This method confirms and removes the immediate flag. * @param mapping * @param form * @param request * @param response * @return * @throws Exception */ public ActionForward confirmAndRemoveImmediate(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { PdpPaymentDetailQuestionCallback callback = new PdpPaymentDetailQuestionCallback() { public boolean doPostQuestion(int paymentDetailId, String changeText, Person user) { return performSetImmediate(paymentDetailId, changeText, user); } }; return askQuestionWithInput(mapping, form, request, response, PdpKeyConstants.PaymentDetail.Confirmation.CHANGE_IMMEDIATE_PAYMENT_QUESTION, PdpKeyConstants.PaymentDetail.Confirmation.CHANGE_IMMEDIATE_PAYMENT_MESSAGE, PdpKeyConstants.PaymentDetail.Messages.IMMEDIATE_SUCCESSFULLY_REMOVED_ON_PAYMENT, "confirmAndRemoveImmediate", callback); } /** * This method confirms and cancels a disbursement. * * @param mapping * @param form * @param request * @param response * @return an ActionForward * @throws Exception */ public ActionForward confirmAndCancelDisbursement(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { PdpPaymentDetailQuestionCallback callback = new PdpPaymentDetailQuestionCallback() { public boolean doPostQuestion(int paymentDetailId, String changeText, Person user) { return performCancelDisbursement(paymentDetailId, changeText, user); } }; return askQuestionWithInput(mapping, form, request, response, PdpKeyConstants.PaymentDetail.Confirmation.CANCEL_DISBURSEMENT_QUESTION, PdpKeyConstants.PaymentDetail.Confirmation.CANCEL_DISBURSEMENT_MESSAGE, PdpKeyConstants.PaymentDetail.Messages.DISBURSEMENT_SUCCESSFULLY_CANCELED, "confirmAndRemoveHold", callback); } /** * This method cancels a disbursement * @param paymentDetailId the payment detail id * @param changeText the text entered by user * @param user the user that canceled the disbursement * @return true if disbursement successfully canceled, false otherwise */ private boolean performCancelDisbursement(int paymentDetailId, String changeText, Person user) { Map keyMap = new HashMap(); keyMap.put(PdpPropertyConstants.PaymentDetail.PAYMENT_ID, paymentDetailId); PaymentDetail paymentDetail = (PaymentDetail) businessObjectService.findByPrimaryKey(PaymentDetail.class, keyMap); if (ObjectUtils.isNotNull(paymentDetail)) { int paymentGroupId = paymentDetail.getPaymentGroupId().intValue(); return paymentMaintenanceService.cancelDisbursement(paymentGroupId, paymentDetailId, changeText, user); } else { GlobalVariables.getMessageMap().putError(PdpPropertyConstants.PaymentDetail.PAYMENT_ID, PdpKeyConstants.PaymentDetail.ErrorMessages.ERROR_PAYMENT_NOT_FOUND); return false; } } /** * This method confirms an reissues/cancels a disbursement. * @param mapping * @param form * @param request * @param response * @return * @throws Exception */ public ActionForward confirmAndReIssue(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { PdpPaymentDetailQuestionCallback callback = new PdpPaymentDetailQuestionCallback() { public boolean doPostQuestion(int paymentDetailId, String changeText, Person user) { return performReIssueWithoutCancelDisbursement(paymentDetailId, changeText, user); } }; return askQuestionWithInput(mapping, form, request, response, PdpKeyConstants.PaymentDetail.Confirmation.CANCEL_REISSUE_DISBURSEMENT_QUESTION, PdpKeyConstants.PaymentDetail.Confirmation.REISSUE_DISBURSEMENT_MESSAGE, PdpKeyConstants.PaymentDetail.Messages.DISBURSEMENT_SUCCESSFULLY_REISSUED, "confirmAndReissue", callback); } /** * This method reissue a disbursement * @param paymentDetailId the payment detail id * @param changeText the text entered by the user * @param user the user that canceled the disbursement * @return true if disbursement successfully reissued/canceled, false otherwise */ private boolean performReIssueWithoutCancelDisbursement(int paymentDetailId, String changeText, Person user) { Map keyMap = new HashMap(); keyMap.put(PdpPropertyConstants.PaymentDetail.PAYMENT_ID, paymentDetailId); PaymentDetail paymentDetail = (PaymentDetail) businessObjectService.findByPrimaryKey(PaymentDetail.class, keyMap); if (ObjectUtils.isNotNull(paymentDetail)) { int paymentGroupId = paymentDetail.getPaymentGroupId().intValue(); return paymentMaintenanceService.reissueDisbursement(paymentGroupId, changeText, user); } else { GlobalVariables.getMessageMap().putError(PdpPropertyConstants.PaymentDetail.PAYMENT_ID, PdpKeyConstants.PaymentDetail.ErrorMessages.ERROR_PAYMENT_NOT_FOUND); return false; } } /** * This method confirms an reissues/cancels a disbursement. * @param mapping * @param form * @param request * @param response * @return * @throws Exception */ public ActionForward confirmAndReIssueCancel(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { PdpPaymentDetailQuestionCallback callback = new PdpPaymentDetailQuestionCallback() { public boolean doPostQuestion(int paymentDetailId, String changeText, Person user) { return performReIssueDisbursement(paymentDetailId, changeText, user); } }; return askQuestionWithInput(mapping, form, request, response, PdpKeyConstants.PaymentDetail.Confirmation.CANCEL_REISSUE_DISBURSEMENT_QUESTION, PdpKeyConstants.PaymentDetail.Confirmation.CANCEL_REISSUE_DISBURSEMENT_MESSAGE, PdpKeyConstants.PaymentDetail.Messages.DISBURSEMENT_SUCCESSFULLY_CANCELED, "confirmAndReissueCancel", callback); } /** * This method reissue/cancels a disbursement * @param paymentDetailId the payment detail id * @param changeText the text entered by the user * @param user the user that canceled the disbursement * @return true if disbursement successfully reissued/canceled, false otherwise */ private boolean performReIssueDisbursement(int paymentDetailId, String changeText, Person user) { Map keyMap = new HashMap(); keyMap.put(PdpPropertyConstants.PaymentDetail.PAYMENT_ID, paymentDetailId); PaymentDetail paymentDetail = (PaymentDetail) businessObjectService.findByPrimaryKey(PaymentDetail.class, keyMap); if (ObjectUtils.isNotNull(paymentDetail)) { int paymentGroupId = paymentDetail.getPaymentGroupId().intValue(); return paymentMaintenanceService.cancelReissueDisbursement(paymentGroupId, changeText, user); } else { GlobalVariables.getMessageMap().putError(PdpPropertyConstants.PaymentDetail.PAYMENT_ID, PdpKeyConstants.PaymentDetail.ErrorMessages.ERROR_PAYMENT_NOT_FOUND); return false; } } /** * This method prompts for a reason to perform an action on a payment detail. * * @param mapping * @param form * @param request * @param response * @param confirmationQuestion * @param confirmationText * @param caller * @param callback * @return * @throws Exception */ private ActionForward askQuestionWithInput(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response, String confirmationQuestion, String confirmationText, String successMessage, String caller, PdpPaymentDetailQuestionCallback callback) throws Exception { Object question = request.getParameter(KRADConstants.QUESTION_INST_ATTRIBUTE_NAME); String reason = request.getParameter(KRADConstants.QUESTION_REASON_ATTRIBUTE_NAME); String noteText = KFSConstants.EMPTY_STRING; Person person = GlobalVariables.getUserSession().getPerson(); boolean actionStatus; String message = KFSConstants.EMPTY_STRING; String paymentDetailId = request.getParameter(PdpParameterConstants.PaymentDetail.DETAIL_ID_PARAM); if (paymentDetailId == null) { paymentDetailId = request.getParameter(KRADConstants.QUESTION_CONTEXT); } PaymentDetail paymentDetail = (PaymentDetail) businessObjectService.findBySinglePrimaryKey(PaymentDetail.class, paymentDetailId); PaymentGroup paymentGroup = paymentDetail.getPaymentGroup(); int paymentsInGroup = paymentGroup.getPaymentDetails().size() - 1; int paymentsInDisbursement = paymentDetail.getNbrOfPaymentsInDisbursement() - 1; ConfigurationService kualiConfiguration = SpringContext.getBean(ConfigurationService.class); String confirmationTextValue = kualiConfiguration.getPropertyValueAsString(confirmationText); if (confirmationText.equals(PdpKeyConstants.PaymentDetail.Confirmation.CANCEL_PAYMENT_MESSAGE)) { confirmationText = MessageFormat.format(confirmationTextValue, paymentsInGroup, paymentGroup.getId().toString()); if (paymentsInGroup == 0) { int start = confirmationText.indexOf(".") + 2; confirmationText = confirmationText.substring(start); } } else if (confirmationText.equals(PdpKeyConstants.PaymentDetail.Confirmation.CANCEL_DISBURSEMENT_MESSAGE)) { confirmationText = MessageFormat.format(confirmationTextValue, paymentsInDisbursement, paymentGroup.getDisbursementNbr().toString()); if (paymentsInDisbursement == 0) { int start = confirmationText.indexOf(".") + 2; confirmationText = confirmationText.substring(start); } } else { confirmationText = MessageFormat.format(confirmationTextValue, paymentDetailId); } if (question == null) { // ask question if not already asked return this.performQuestionWithInput(mapping, form, request, response, confirmationQuestion, confirmationText, KRADConstants.CONFIRMATION_QUESTION, caller, paymentDetailId); } else { Object buttonClicked = request.getParameter(KRADConstants.QUESTION_CLICKED_BUTTON); if ((confirmationQuestion.equals(question)) && ConfirmationQuestion.NO.equals(buttonClicked)) { actionStatus = false; } else { noteText = reason; int noteTextLength = (reason == null) ? 0 : noteText.length(); int noteTextMaxLength = PdpKeyConstants.BatchConstants.Confirmation.NOTE_TEXT_MAX_LENGTH; if (StringUtils.isBlank(reason)) { if (reason == null) { // prevent a NPE by setting the reason to a blank string reason = KFSConstants.EMPTY_STRING; } return this.performQuestionWithInputAgainBecauseOfErrors(mapping, form, request, response, confirmationQuestion, confirmationText, KRADConstants.CONFIRMATION_QUESTION, KFSConstants.MAPPING_BASIC, paymentDetailId, reason, PdpKeyConstants.BatchConstants.ErrorMessages.ERROR_NOTE_EMPTY, KRADConstants.QUESTION_REASON_ATTRIBUTE_NAME, ""); } else if (noteTextLength > noteTextMaxLength) { return this.performQuestionWithInputAgainBecauseOfErrors(mapping, form, request, response, confirmationQuestion, confirmationText, KRADConstants.CONFIRMATION_QUESTION, KFSConstants.MAPPING_BASIC, paymentDetailId, reason, PdpKeyConstants.BatchConstants.ErrorMessages.ERROR_NOTE_TOO_LONG, KRADConstants.QUESTION_REASON_ATTRIBUTE_NAME, ""); } actionStatus = callback.doPostQuestion(Integer.parseInt(paymentDetailId), noteText, person); if (actionStatus) { message = successMessage; } } } String returnUrl = buildUrl(paymentDetailId, actionStatus, message, buildErrorMesageKeyList()); return new ActionForward(returnUrl, true); } /** * This method builds the forward url. * * @param paymentDetailId the payment detail id * @param success action status: true if success, false otherwise * @param message the message for the user * @return the build url */ private String buildUrl(String paymentDetailId, boolean success, String message, String errorList) { // build url to return user back to PaymentDetail Search with fields filled in as user inputted String lookupUrl = (String) GlobalVariables.getUserSession().retrieveObject(PaymentDetailLookupableHelperService.PDP_PAYMENTDETAIL_KEY); if (lookupUrl != null) { GlobalVariables.getUserSession().removeObject(PaymentDetailLookupableHelperService.PDP_PAYMENTDETAIL_KEY); Properties parameters = new Properties(); parameters.put(PdpParameterConstants.ACTION_SUCCESSFUL_PARAM, String.valueOf(success)); if (message != null && !message.equalsIgnoreCase(KFSConstants.EMPTY_STRING)) { parameters.put(PdpParameterConstants.MESSAGE_PARAM, message); } if (StringUtils.isNotEmpty(errorList)) { parameters.put(PdpParameterConstants.ERROR_KEY_LIST_PARAM, errorList); } lookupUrl = lookupUrl + UrlFactory.parameterizeUrl("&", parameters); } else { // session expired - resort to alternative plan String basePath = SpringContext.getBean(ConfigurationService.class).getPropertyValueAsString(KFSConstants.APPLICATION_URL_KEY); Properties parameters = new Properties(); parameters.put(KFSConstants.DISPATCH_REQUEST_PARAMETER, KFSConstants.SEARCH_METHOD); parameters.put(KFSConstants.BACK_LOCATION, basePath + "/" + KFSConstants.MAPPING_PORTAL + ".do"); parameters.put(KRADConstants.DOC_FORM_KEY, "88888888"); parameters.put(KFSConstants.BUSINESS_OBJECT_CLASS_ATTRIBUTE, PaymentDetail.class.getName()); parameters.put(KFSConstants.HIDE_LOOKUP_RETURN_LINK, "true"); parameters.put(KFSConstants.SUPPRESS_ACTIONS, "false"); parameters.put(PdpPropertyConstants.PaymentDetail.PAYMENT_ID, paymentDetailId); parameters.put(PdpParameterConstants.ACTION_SUCCESSFUL_PARAM, String.valueOf(success)); if (message != null && !message.equalsIgnoreCase(KFSConstants.EMPTY_STRING)) { parameters.put(PdpParameterConstants.MESSAGE_PARAM, message); } if (StringUtils.isNotEmpty(errorList)) { parameters.put(PdpParameterConstants.ERROR_KEY_LIST_PARAM, errorList); } lookupUrl = UrlFactory.parameterizeUrl(basePath + "/" + KFSConstants.LOOKUP_ACTION, parameters); } return lookupUrl; } /** * This method build a string list of error message keys out of the error map in GlobalVariables * * @return a String representing the list of error message keys */ private String buildErrorMesageKeyList() { MessageMap errorMap = GlobalVariables.getMessageMap(); StringBuffer errorList = new StringBuffer(); for (String errorKey : (List<String>) errorMap.getPropertiesWithErrors()) { for (ErrorMessage errorMessage : (List<ErrorMessage>) errorMap.getMessages(errorKey)) { errorList.append(errorMessage.getErrorKey()); errorList.append(PdpParameterConstants.ERROR_KEY_LIST_SEPARATOR); } } if (errorList.length() > 0) { errorList.replace(errorList.lastIndexOf(PdpParameterConstants.ERROR_KEY_LIST_SEPARATOR), errorList.lastIndexOf(PdpParameterConstants.ERROR_KEY_LIST_SEPARATOR) + PdpParameterConstants.ERROR_KEY_LIST_SEPARATOR.length(), ""); } return errorList.toString(); } /** * This method gets the payment maintenance service * @return the paymentMaintenanceService */ public PaymentMaintenanceService getPaymentMaintenanceService() { return paymentMaintenanceService; } /** * This method sets the payment maintenance service * @param paymentMaintenanceService */ public void setPaymentMaintenanceService(PaymentMaintenanceService paymentMaintenanceService) { this.paymentMaintenanceService = paymentMaintenanceService; } /** * This method gets the business object service * @return the businessObjectService */ public BusinessObjectService getBusinessObjectService() { return businessObjectService; } /** * This method sets the business object service. * @param businessObjectService */ public void setBusinessObjectService(BusinessObjectService businessObjectService) { this.businessObjectService = businessObjectService; } }