001 /*
002 * Copyright 2011 The Kuali Foundation.
003 *
004 * Licensed under the Educational Community License, Version 2.0 (the "License");
005 * you may not use this file except in compliance with the License.
006 * You may obtain a copy of the License at
007 *
008 * http://www.opensource.org/licenses/ecl2.php
009 *
010 * Unless required by applicable law or agreed to in writing, software
011 * distributed under the License is distributed on an "AS IS" BASIS,
012 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
013 * See the License for the specific language governing permissions and
014 * limitations under the License.
015 */
016 package org.kuali.kfs.sys.service.impl;
017
018 import java.util.Map;
019 import java.util.Properties;
020
021 import org.apache.struts.action.ActionForward;
022 import org.apache.struts.action.ActionMapping;
023 import org.kuali.kfs.sys.businessobject.ElectronicPaymentClaim;
024 import org.kuali.kfs.sys.service.ElectronicFundTransferActionHelper;
025 import org.kuali.kfs.sys.service.ElectronicPaymentClaimingService;
026 import org.kuali.kfs.sys.web.struts.ElectronicFundTransferForm;
027 import org.kuali.rice.kns.util.GlobalVariables;
028 import org.kuali.rice.kns.util.KNSConstants;
029 import org.kuali.rice.kns.util.UrlFactory;
030
031 /**
032 * An action for Electronic Fund Transfer that simply redirects to either the claiming or non-claiming lookup.
033 */
034 public class ElectronicFundTransferStartActionHelper implements ElectronicFundTransferActionHelper {
035 private ElectronicPaymentClaimingService electronicPaymentClaimingService;
036
037 /**
038 * @see org.kuali.kfs.sys.service.ElectronicFundTransferActionHelper#performAction(org.kuali.kfs.sys.web.struts.ElectronicFundTransferForm, org.apache.struts.action.ActionMapping, java.util.Map)
039 */
040 public ActionForward performAction(ElectronicFundTransferForm form, ActionMapping mapping, Map parameterMap, String basePath) {
041 return new ActionForward((form.hasAvailableClaimingDocumentStrategies() ? getClaimingLookupUrl(form, basePath) : getNonClaimingLookupUrl(form, basePath) ), true);
042 }
043
044 /**
045 * @return URL for non-claiming EFT search
046 */
047 protected String getNonClaimingLookupUrl(ElectronicFundTransferForm form, String basePath) {
048 Properties props = getCommonLookupProperties(form);
049 props.put(KNSConstants.HIDE_LOOKUP_RETURN_LINK, Boolean.toString(true));
050 props.put(KNSConstants.RETURN_LOCATION_PARAMETER, basePath + "/" + getNonClaimingReturnLocation());
051 props.put(KNSConstants.BACK_LOCATION, basePath + "/" + getNonClaimingReturnLocation());
052 return UrlFactory.parameterizeUrl(basePath + "/kr/" + KNSConstants.LOOKUP_ACTION, props);
053 }
054
055 /**
056 * @return URL for claiming EFT search
057 */
058 protected String getClaimingLookupUrl(ElectronicFundTransferForm form, String basePath) {
059 Properties props = getCommonLookupProperties(form);
060 props.put(KNSConstants.MULTIPLE_VALUE, Boolean.toString(true));
061 props.put(KNSConstants.LOOKUP_ANCHOR, KNSConstants.ANCHOR_TOP_OF_FORM);
062 props.put(KNSConstants.LOOKED_UP_COLLECTION_NAME, "claims");
063 props.put(KNSConstants.RETURN_LOCATION_PARAMETER, basePath + "/" + getClaimingReturnLocation());
064 props.put(KNSConstants.BACK_LOCATION, basePath + "/" + getClaimingReturnLocation());
065 return UrlFactory.parameterizeUrl(basePath + "/kr/" + KNSConstants.MULTIPLE_VALUE_LOOKUP_ACTION, props);
066 }
067
068 /**
069 * @return a set of Properties common to both claiming and non-claiming lookup
070 */
071 protected Properties getCommonLookupProperties(ElectronicFundTransferForm form) {
072 Properties props = new Properties();
073 props.put(KNSConstants.SUPPRESS_ACTIONS, Boolean.toString(true));
074 props.put(KNSConstants.DOC_FORM_KEY, "88888888");
075 props.put(KNSConstants.BUSINESS_OBJECT_CLASS_ATTRIBUTE, ElectronicPaymentClaim.class.getName());
076 props.put(KNSConstants.METHOD_TO_CALL_ATTRIBUTE, "start");
077 return props;
078 }
079
080 /**
081 * @return the location where the search should return to for claiming
082 */
083 protected String getClaimingReturnLocation() {
084 return "electronicFundTransfer.do";
085 }
086
087 /**
088 * @return the location where the search should return to for non-claiming - ie, the portal!
089 */
090 protected String getNonClaimingReturnLocation() {
091 return "portal.do";
092 }
093
094 /**
095 * Sets the electronicPaymentClaimingService attribute value.
096 * @param electronicPaymentClaimingService The electronicPaymentClaimingService to set.
097 */
098 public void setElectronicPaymentClaimingService(ElectronicPaymentClaimingService electronicPaymentClaimingService) {
099 this.electronicPaymentClaimingService = electronicPaymentClaimingService;
100 }
101
102 }
103