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.module.bc.util;
017
018 import java.util.HashMap;
019 import java.util.Map;
020 import java.util.Properties;
021
022 import org.apache.commons.lang.StringUtils;
023 import org.apache.struts.action.ActionMapping;
024 import org.kuali.kfs.module.bc.BCConstants;
025 import org.kuali.kfs.module.bc.document.web.struts.BudgetExpansionForm;
026 import org.kuali.kfs.sys.KFSConstants;
027 import org.kuali.kfs.sys.KFSPropertyConstants;
028 import org.kuali.kfs.sys.context.SpringContext;
029 import org.kuali.rice.kns.service.KualiConfigurationService;
030 import org.kuali.rice.kns.util.GlobalVariables;
031 import org.kuali.rice.kns.util.KNSConstants;
032 import org.kuali.rice.kns.util.UrlFactory;
033 import org.kuali.rice.kns.web.struts.form.KualiForm;
034
035 /**
036 * Provides helper methods for building URLs to various budget actions.
037 */
038 public class BudgetUrlUtil {
039
040 /**
041 * Builds url for temp list action.
042 *
043 * @param mapping struts action mapping
044 * @param form BudgetExpansionForm
045 * @param tempListMode mode for temp list action
046 * @param tempListLookupClass class name to lookup
047 * @param additionalParameters appended to the url or replace default
048 * @return string url
049 */
050 public static String buildTempListLookupUrl(ActionMapping mapping, BudgetExpansionForm form, Integer tempListMode, String tempListLookupClass, Map<String, String> additionalParameters) {
051 Map<String, String> parameters = new HashMap<String, String>();
052
053 parameters.put(KNSConstants.DOC_FORM_KEY, GlobalVariables.getUserSession().addObject(form, BCConstants.FORMKEY_PREFIX));
054 parameters.put(KFSConstants.BUSINESS_OBJECT_CLASS_ATTRIBUTE, tempListLookupClass);
055 parameters.put(KFSConstants.HIDE_LOOKUP_RETURN_LINK, "true");
056 parameters.put(KFSConstants.SUPPRESS_ACTIONS, "false");
057 parameters.put(BCConstants.SHOW_INITIAL_RESULTS, "true");
058 parameters.put(BCConstants.TempListLookupMode.TEMP_LIST_LOOKUP_MODE, Integer.toString(tempListMode));
059
060 if (additionalParameters != null) {
061 for (String parameterKey : additionalParameters.keySet()) {
062 parameters.put(parameterKey, additionalParameters.get(parameterKey));
063 }
064 }
065
066 return buildBudgetUrl(mapping, form, BCConstants.ORG_TEMP_LIST_LOOKUP, parameters);
067 }
068
069 /**
070 * Builds a budget URL setting default parameters.
071 *
072 * @param mapping struts action mapping
073 * @param form BudgetExpansionForm
074 * @param actionPath url path for requested action
075 * @param additionalParameters appended to the url or replace default
076 * @return string url
077 */
078 public static String buildBudgetUrl(ActionMapping mapping, BudgetExpansionForm form, String actionPath, Map<String, String> additionalParameters) {
079 Properties parameters = new Properties();
080 parameters.put(KFSConstants.DISPATCH_REQUEST_PARAMETER, KFSConstants.START_METHOD);
081 parameters.put(BCConstants.RETURN_FORM_KEY, GlobalVariables.getUserSession().addObject(form, BCConstants.FORMKEY_PREFIX));
082
083 String basePath = SpringContext.getBean(KualiConfigurationService.class).getPropertyString(KFSConstants.APPLICATION_URL_KEY);
084 parameters.put(KFSConstants.BACK_LOCATION, basePath + mapping.getPath() + ".do");
085 parameters.put(KFSPropertyConstants.UNIVERSITY_FISCAL_YEAR, form.getUniversityFiscalYear().toString());
086 parameters.put(KFSPropertyConstants.KUALI_USER_PERSON_UNIVERSAL_IDENTIFIER, GlobalVariables.getUserSession().getPerson().getPrincipalId());
087
088 if (StringUtils.isNotEmpty(((KualiForm) form).getAnchor())) {
089 parameters.put(BCConstants.RETURN_ANCHOR, ((KualiForm) form).getAnchor());
090 }
091
092 if (additionalParameters != null) {
093 for (String parameterKey : additionalParameters.keySet()) {
094 parameters.put(parameterKey, additionalParameters.get(parameterKey));
095 }
096 }
097
098 return UrlFactory.parameterizeUrl(basePath + "/" + actionPath, parameters);
099 }
100 }
101