001    package org.kuali.ole.deliver.circulationdesk.controller;
002    
003    import org.apache.log4j.Logger;
004    import org.kuali.ole.deliver.circulationdesk.form.OleCirculationDeskDetailForm;
005    import org.kuali.ole.deliver.circulationdesk.service.OleCirculationDeskDetailServiceImpl;
006    import org.kuali.rice.core.api.resourceloader.GlobalResourceLoader;
007    import org.kuali.rice.kim.api.permission.PermissionService;
008    import org.kuali.rice.kim.api.services.KimApiServiceLocator;
009    import org.kuali.rice.krad.exception.DocumentAuthorizationException;
010    import org.kuali.rice.krad.util.GlobalVariables;
011    import org.kuali.rice.krad.web.controller.UifControllerBase;
012    import org.kuali.rice.krad.web.form.UifFormBase;
013    import org.springframework.stereotype.Controller;
014    import org.springframework.validation.BindingResult;
015    import org.springframework.web.bind.annotation.ModelAttribute;
016    import org.springframework.web.bind.annotation.RequestMapping;
017    import org.springframework.web.servlet.ModelAndView;
018    
019    import javax.servlet.http.HttpServletRequest;
020    import javax.servlet.http.HttpServletResponse;
021    
022    
023    /**
024     * The OleCirculationDeskDetailController is the controller class for processing all the actions that corresponds to the Circulation Desk functionality in OLE.
025     * The request mapping tag takes care of mapping the individual action to the corresponding functions.
026     */
027    @Controller
028    @RequestMapping(value = "/circulationDeskDetailController")
029    public class OleCirculationDeskDetailController extends UifControllerBase {
030    
031        private static final Logger LOG = Logger.getLogger(OleCirculationDeskDetailController.class);
032        private OleCirculationDeskDetailServiceImpl oleCirculationDeskDetailService;
033    
034        private OleCirculationDeskDetailServiceImpl getCirculationDeskDetailService() {
035            if (null == oleCirculationDeskDetailService) {
036                oleCirculationDeskDetailService = GlobalResourceLoader.getService("oleCirculationDeskDetailService");
037            }
038            return oleCirculationDeskDetailService;
039        }
040    
041        /**
042         *  This method creates new OleCirculationDeskDetailForm
043         * @param request
044         * @return OleCirculationDeskDetailForm
045         */
046        @Override
047        protected OleCirculationDeskDetailForm createInitialForm(HttpServletRequest request) {
048            return new OleCirculationDeskDetailForm();
049        }
050    
051        /**
052         *  This method is for setting the form to the screen
053         * @param form
054         * @param result
055         * @param request
056         * @param response
057         * @return ModelAndView
058         */
059        @Override
060        @RequestMapping(params = "methodToCall=start")
061        public ModelAndView start(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
062                                  HttpServletRequest request, HttpServletResponse response) {
063            OleCirculationDeskDetailForm oleCirculationDeskDetailForm = (OleCirculationDeskDetailForm) form;
064    
065            PermissionService service= KimApiServiceLocator.getPermissionService();
066           boolean isAuthorized = service.hasPermission(GlobalVariables.getUserSession().getPrincipalId(),"KR-PTRN","Mapping Circulation Desk");
067            if(!isAuthorized){
068               throw new DocumentAuthorizationException(GlobalVariables.getUserSession().getPrincipalId(),"not Authorized to map ","CirculationDesk");
069            }
070            oleCirculationDeskDetailForm.setMessage(null);
071            oleCirculationDeskDetailForm.setOperatorId(null);
072    
073            oleCirculationDeskDetailForm.setOleCirculationDetailsCreateList(getCirculationDeskDetailService().populateCreateList());
074            return getUIFModelAndView(oleCirculationDeskDetailForm, "OleCirculationDeskDetailViewPage");
075        }
076    
077        /**
078         * This method is for searching the circulation details
079         * @param form
080         * @param result
081         * @param request
082         * @param response
083         * @return ModelAndView
084         */
085        @RequestMapping(params = "methodToCall=search")
086        public ModelAndView search(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
087                                   HttpServletRequest request, HttpServletResponse response) {
088            OleCirculationDeskDetailForm oleCirculationDeskDetailForm = (OleCirculationDeskDetailForm) form;
089            OleCirculationDeskDetailForm deskDetailForm =      getCirculationDeskDetailService().performSearch(oleCirculationDeskDetailForm);
090            return getUIFModelAndView(deskDetailForm, "OleCirculationDeskDetailViewPage");
091        }
092    
093        /**
094         * This method is for saving the circulation desk details for the operator
095         * @param form
096         * @param result
097         * @param request
098         * @param response
099         * @return ModelAndView
100         */
101        @RequestMapping(params = "methodToCall=save")
102        public ModelAndView save(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
103                                 HttpServletRequest request, HttpServletResponse response)  throws Exception{
104    
105    
106            OleCirculationDeskDetailForm oleCirculationDeskDetailForm = (OleCirculationDeskDetailForm) form;
107            OleCirculationDeskDetailForm deskDetailForm =      getCirculationDeskDetailService().performSave(oleCirculationDeskDetailForm);
108            return getUIFModelAndView(deskDetailForm, "OleCirculationDeskDetailViewPage");
109        }
110    
111        /**
112         * This method is overridden for performing the search when the operator value is populated
113         * @param form
114         * @param result
115         * @param request
116         * @param response
117         * @return ModelAndView
118         * @throws Exception
119         */
120        @Override
121        @RequestMapping(params = "methodToCall=refresh")
122        public ModelAndView refresh(@ModelAttribute("KualiForm") UifFormBase form, BindingResult result,
123                                    HttpServletRequest request, HttpServletResponse response) throws Exception {
124    
125            super.refresh(form, result, request, response);
126            return search(form, result, request, response);
127        }
128    }