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 }