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 }