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.ar.web.struts;
017    
018    import java.util.ArrayList;
019    import java.util.Collection;
020    import java.util.List;
021    
022    import javax.servlet.http.HttpServletRequest;
023    import javax.servlet.http.HttpServletResponse;
024    
025    import org.apache.struts.action.ActionForm;
026    import org.apache.struts.action.ActionForward;
027    import org.apache.struts.action.ActionMapping;
028    import org.kuali.kfs.module.ar.businessobject.lookup.CustomerOpenItemReportLookupableHelperServiceImpl;
029    import org.kuali.kfs.sys.KFSConstants;
030    import org.kuali.kfs.sys.KFSKeyConstants;
031    import org.kuali.kfs.sys.KFSPropertyConstants;
032    import org.kuali.rice.kns.lookup.CollectionIncomplete;
033    import org.kuali.rice.kns.lookup.Lookupable;
034    import org.kuali.rice.kns.util.GlobalVariables;
035    import org.kuali.rice.kns.web.struts.action.KualiAction;
036    import org.kuali.rice.kns.web.ui.ResultRow;
037    
038    
039    /**
040     * This class handles Actions for lookup flow
041     */
042    
043    public class CustomerOpenItemReportAction extends KualiAction {
044        private static final org.apache.log4j.Logger LOG = org.apache.log4j.Logger.getLogger(CustomerOpenItemReportAction.class);
045        private static final String TOTALS_TABLE_KEY = "totalsTable";
046    
047        /**
048         * Search - sets the values of the data entered on the form on the jsp into a map and then searches for the results.
049         *
050         * @param mapping
051         * @param form
052         * @param request
053         * @param response
054         * @return
055         * @throws Exception
056         */
057        public ActionForward search(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
058            CustomerOpenItemReportForm lookupForm = (CustomerOpenItemReportForm) form;
059    
060            Lookupable lookupable = lookupForm.getLookupable();
061    
062            if (lookupable == null) {
063                LOG.error("Lookupable is null.");
064                throw new RuntimeException("Lookupable is null.");
065            }
066    
067            Collection displayList = new ArrayList();
068            List<ResultRow> resultTable = new ArrayList<ResultRow>();
069    
070            try {
071                displayList = lookupable.performLookup(lookupForm, resultTable, true);
072                Long totalSize = ((CollectionIncomplete) displayList).getActualSizeIfTruncated();
073    
074                request.setAttribute(KFSConstants.REQUEST_SEARCH_RESULTS_SIZE, totalSize);
075                request.setAttribute(KFSConstants.REQUEST_SEARCH_RESULTS, resultTable);
076    
077                if (request.getParameter(KFSConstants.SEARCH_LIST_REQUEST_KEY) != null)
078                    GlobalVariables.getUserSession().removeObject(request.getParameter(KFSConstants.SEARCH_LIST_REQUEST_KEY));
079    
080                request.setAttribute(KFSConstants.SEARCH_LIST_REQUEST_KEY, GlobalVariables.getUserSession().addObject(resultTable));
081            } catch (NumberFormatException e) {
082                GlobalVariables.getMessageMap().putError(KFSPropertyConstants.UNIVERSITY_FISCAL_YEAR, KFSKeyConstants.ERROR_CUSTOM, new String[] { "Fiscal Year must be a four-digit number" });
083            } catch (Exception e) {
084                GlobalVariables.getMessageMap().putError(KFSConstants.DOCUMENT_ERRORS, KFSKeyConstants.ERROR_CUSTOM, new String[] { "Please report the server error." });
085                LOG.error("Application Errors", e);
086            }
087            return mapping.findForward(KFSConstants.MAPPING_BASIC);
088        }
089    
090        /**
091         * View results from balance inquiry action
092         * 
093         * @param mapping
094         * @param form
095         * @param request
096         * @param response
097         * @return
098         * @throws Exception
099         */
100        public ActionForward viewResults(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
101            request.setAttribute(KFSConstants.SEARCH_LIST_REQUEST_KEY, request.getParameter(KFSConstants.SEARCH_LIST_REQUEST_KEY));
102            request.setAttribute(KFSConstants.REQUEST_SEARCH_RESULTS, GlobalVariables.getUserSession().retrieveObject(request.getParameter(KFSConstants.SEARCH_LIST_REQUEST_KEY)));
103            request.setAttribute(KFSConstants.REQUEST_SEARCH_RESULTS_SIZE, request.getParameter(KFSConstants.REQUEST_SEARCH_RESULTS_SIZE));
104    
105            // TODO: use inheritance instead of this if statement
106            if (((CustomerOpenItemReportForm) form).getLookupable().getLookupableHelperService() instanceof CustomerOpenItemReportLookupableHelperServiceImpl) {
107                Object totalsTable = GlobalVariables.getUserSession().retrieveObject(TOTALS_TABLE_KEY);
108                request.setAttribute(TOTALS_TABLE_KEY, totalsTable);
109            }
110            return mapping.findForward(KFSConstants.MAPPING_BASIC);
111        }
112        
113        /**
114         * Handling for screen close. Default action is return to caller.
115         * 
116         * @see org.apache.struts.action.Action#execute(org.apache.struts.action.ActionMapping, org.apache.struts.action.ActionForm,
117         *      javax.servlet.http.HttpServletRequest, javax.servlet.http.HttpServletResponse)
118         */
119        /*
120        public ActionForward close(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
121            return returnToCaller(mapping, form, request, response);
122        }
123        
124        public ActionForward returnToCaller(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception {
125            BudgetExpansionForm budgetExpansionForm = (BudgetExpansionForm) form;
126    
127            Properties parameters = new Properties();
128            parameters.put(KFSConstants.DISPATCH_REQUEST_PARAMETER, BCConstants.BC_SELECTION_REFRESH_METHOD);
129            parameters.put(KFSConstants.DOC_FORM_KEY, budgetExpansionForm.getReturnFormKey());
130    
131            if (StringUtils.isNotEmpty(budgetExpansionForm.getReturnAnchor())) {
132                parameters.put(KFSConstants.ANCHOR, budgetExpansionForm.getReturnAnchor());
133            }
134            parameters.put(KFSConstants.REFRESH_CALLER, this.getClass().getName());
135    
136            this.addCallBackMessagesAsObjectInSession(budgetExpansionForm);
137    
138            String backUrl = UrlFactory.parameterizeUrl(budgetExpansionForm.getBackLocation(), parameters);
139            return new ActionForward(backUrl, true);
140        }*/
141    }