001    /**
002     * Copyright 2004-2013 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.kpme.pm.position.web;
017    
018    import java.util.List;
019    import java.util.Map;
020    import java.util.Properties;
021    
022    import org.apache.commons.lang.StringUtils;
023    import org.kuali.kpme.core.lookup.KPMELookupableImpl;
024    import org.kuali.kpme.core.util.TKUtils;
025    import org.kuali.kpme.pm.position.Position;
026    import org.kuali.kpme.pm.service.base.PmServiceLocator;
027    import org.kuali.rice.core.api.config.property.ConfigContext;
028    import org.kuali.rice.krad.uif.UifConstants;
029    import org.kuali.rice.krad.uif.UifParameters;
030    import org.kuali.rice.krad.uif.element.Action;
031    import org.kuali.rice.krad.uif.util.LookupInquiryUtils;
032    import org.kuali.rice.krad.uif.view.LookupView;
033    import org.kuali.rice.krad.util.KRADConstants;
034    import org.kuali.rice.krad.util.KRADUtils;
035    import org.kuali.rice.krad.util.UrlFactory;
036    import org.kuali.rice.krad.web.form.LookupForm;
037    
038    public class PositionLookupableImpl extends KPMELookupableImpl {
039    
040            private static final long serialVersionUID = 8658536323175048980L;
041    
042            @Override
043        protected List<?> getSearchResults(LookupForm form, Map<String, String> searchCriteria, boolean unbounded) {
044            String positionNum = searchCriteria.get("positionNumber");
045            String description = searchCriteria.get("description");
046            String workingPositionTitle = searchCriteria.get("workingPositionTitle");
047            String campus = searchCriteria.get("campus");
048            String institution = searchCriteria.get("institution");
049            String classificationTitle = searchCriteria.get("classificationTitle");
050            String positionType = searchCriteria.get("positionType");
051            String poolEligible = searchCriteria.get("poolEligible");
052            String fromEffdt = TKUtils.getFromDateString(searchCriteria.get("effectiveDate"));
053            String toEffdt = TKUtils.getToDateString(searchCriteria.get("effectiveDate"));
054            String active = searchCriteria.get("active");
055            String showHist = searchCriteria.get("history");
056    
057            if (StringUtils.equals(positionNum, "%")) {
058                positionNum = "";
059            }
060            
061            return PmServiceLocator.getPositionService().getPositions(positionNum, description, workingPositionTitle, campus,
062                    institution, classificationTitle, positionType, poolEligible, TKUtils.formatDateString(fromEffdt),
063                    TKUtils.formatDateString(toEffdt), active, showHist);   
064        }  
065            
066            @Override
067        protected String getActionUrlHref(LookupForm lookupForm, Object dataObject, String methodToCall, List<String> pkNames) {
068                    if (!StringUtils.equals(methodToCall, "maintenanceEdit")) {
069                            return super.getActionUrlHref(lookupForm, dataObject, methodToCall, pkNames);
070                    } else {
071                            Properties urlParameters = new Properties();
072    
073                    urlParameters.setProperty(UifParameters.DATA_OBJECT_CLASS_NAME, dataObject.getClass().getName());
074                    urlParameters.setProperty(UifParameters.METHOD_TO_CALL, UifConstants.MethodToCallNames.START);
075                    
076                    Map<String, String> primaryKeyValues = KRADUtils.getPropertyKeyValuesFromDataObject(pkNames, dataObject);
077                    for (String primaryKey : primaryKeyValues.keySet()) {
078                        String primaryKeyValue = primaryKeyValues.get(primaryKey);
079    
080                        urlParameters.put(primaryKey, primaryKeyValue);
081                    }
082                            
083                    String path = ConfigContext.getCurrentContextConfig().getProperty("application.url");
084                    String hrefPrefix = path + "/portal.do?channelTitle=ProcessMaint&channelUrl=" + path + "/ProcessMaint.do";
085                    Position aPosition = (Position) dataObject;
086                    String paramString = "?positionId=" + aPosition.getHrPositionId();
087                    return (hrefPrefix + paramString);
088                    }
089        }
090    
091        @Override
092        public void initSuppressAction(LookupForm lookupForm) {
093        /*
094         * lookupAuthorizer.canInitiateDocument(lookupForm, user) returns false in this instance, because no
095         * documentTypeName can be obtained within LookupViewAuthorizeBase.canInitiateDocument(LookupForm, Person).
096         */
097            ((LookupView) lookupForm.getView()).setSuppressActions(false);
098        }
099    }