package fi.arcusys.koku.web; import static fi.arcusys.koku.util.Constants.ATTR_CURRENT_PAGE; import static fi.arcusys.koku.util.Constants.ATTR_KEYWORD; import static fi.arcusys.koku.util.Constants.ATTR_ORDER_TYPE; import static fi.arcusys.koku.util.Constants.ATTR_TASK_TYPE; import static fi.arcusys.koku.util.Constants.VIEW_SHOW_REQUEST; import javax.portlet.PortletSession; import javax.portlet.RenderRequest; import javax.portlet.RenderResponse; import org.slf4j.Logger; import org.slf4j.LoggerFactory; import org.springframework.stereotype.Controller; import org.springframework.web.bind.annotation.ModelAttribute; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RequestParam; import org.springframework.web.portlet.bind.annotation.RenderMapping; import fi.arcusys.koku.exceptions.KokuServiceException; import fi.arcusys.koku.kv.model.KokuRequest; import fi.arcusys.koku.kv.request.employee.EmployeeRequestHandle; import fi.arcusys.koku.util.Constants; import fi.arcusys.koku.web.util.ModelWrapper; import fi.arcusys.koku.web.util.ResponseStatus; import fi.arcusys.koku.web.util.impl.ModelWrapperImpl; /** * Shows request details page and store the current query information on the jsp page * * @author Jinhua Chen * Jul 29, 2011 */ @Controller("singleRequestController") @RequestMapping(value = "VIEW") public class ShowRequestController { private static final Logger LOG = LoggerFactory.getLogger(ShowRequestController.class); /** * Shows request page * @param response RenderResponse * @return request page */ @RenderMapping(params = "myaction=showRequest") public String showPageView(RenderResponse response) { return VIEW_SHOW_REQUEST; } /** * Creates data model integrated into the page and stores the page * @param requestId request id * @param currentPage current page id * @param taskType task type requested * @param keyword page parameter keyword * @param orderType page parameter order type * @param request RenderRequest * @return request data model */ @ModelAttribute(value = "request") public ModelWrapper<KokuRequest> model(@RequestParam String requestId, @RequestParam String currentPage,@RequestParam String taskType, @RequestParam String keyword, @RequestParam String orderType, RenderRequest request) { // store parameters in session for returning page from form page request.getPortletSession().setAttribute(ATTR_CURRENT_PAGE, currentPage, PortletSession.APPLICATION_SCOPE); request.getPortletSession().setAttribute(ATTR_TASK_TYPE, taskType, PortletSession.APPLICATION_SCOPE); request.getPortletSession().setAttribute(ATTR_KEYWORD, keyword, PortletSession.APPLICATION_SCOPE); request.getPortletSession().setAttribute(ATTR_ORDER_TYPE, orderType, PortletSession.APPLICATION_SCOPE); ModelWrapper<KokuRequest> model = null; KokuRequest kokuRequest = null; try { if (taskType.equals(Constants.TASK_TYPE_REQUEST_VALID_EMPLOYEE) || taskType.equals(Constants.TASK_TYPE_REQUEST_DONE_EMPLOYEE)) { EmployeeRequestHandle reqhandle = new EmployeeRequestHandle(); kokuRequest = reqhandle.getKokuRequestById(requestId); } else { throw new KokuServiceException("No operation for taskType: '"+taskType+"' username: '" + request.getUserPrincipal().getName() + "'"); } model = new ModelWrapperImpl<KokuRequest>(kokuRequest); } catch (KokuServiceException kse) { LOG.error("Failed to show request details. requestId: '"+requestId + "' username: '"+request.getUserPrincipal().getName()+" taskType: '"+taskType + "' keyword: '" + keyword + "'", kse); model = new ModelWrapperImpl<KokuRequest>(null, ResponseStatus.FAIL, kse.getErrorcode()); } return model; } }