package mx.edu.um.cargos.webapp.action; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import org.apache.struts.action.ActionForm; import org.apache.struts.action.ActionForward; import org.apache.struts.action.ActionMapping; import org.apache.struts.action.ActionMessage; import org.apache.struts.action.ActionMessages; import mx.edu.um.webapp.action.BaseAction; import mx.edu.um.Constants; import mx.edu.um.cargos.model.Cargo; import mx.edu.um.cargos.service.CargoManager; import mx.edu.um.cargos.webapp.form.CargoForm; /** * Action class to handle CRUD on a Cargo object * * @struts.action name="cargoForm" path="/cargos" scope="request" * validate="false" parameter="method" input="mainMenu" * @struts.action name="cargoForm" path="/editCargo" scope="request" * validate="false" parameter="method" input="list" * @struts.action name="cargoForm" path="/saveCargo" scope="request" * validate="true" parameter="method" input="edit" * @struts.action-set-property property="cancellable" value="true" * @struts.action-forward name="edit" path="/WEB-INF/pages/cargos/cargoForm.jsp" * @struts.action-forward name="list" path="/WEB-INF/pages/cargos/cargoList.jsp" * @struts.action-forward name="search" path="/cargos.html" redirect="true" */ public final class CargoAction extends BaseAction { public ActionForward cancel(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { return mapping.findForward("search"); } public ActionForward delete(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { if (log.isDebugEnabled()) { log.debug("Entering 'delete' method"); } ActionMessages messages = new ActionMessages(); CargoForm cargoForm = (CargoForm) form; // Exceptions are caught by ActionExceptionHandler CargoManager mgr = (CargoManager) getBean("cargoManager"); mgr.removeCargo(cargoForm.getId()); messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("cargo.deleted")); // save messages in session, so they'll survive the redirect saveMessages(request.getSession(), messages); return mapping.findForward("search"); } public ActionForward edit(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { if (log.isDebugEnabled()) { log.debug("Entering 'edit' method"); } CargoForm cargoForm = (CargoForm) form; // if an id is passed in, look up the user - otherwise // don't do anything - user is doing an add if (cargoForm.getId() != null) { CargoManager mgr = (CargoManager) getBean("cargoManager"); Cargo cargo = mgr.getCargo(cargoForm.getId()); cargoForm = (CargoForm) convert(cargo); updateFormBean(mapping, request, cargoForm); } return mapping.findForward("edit"); } public ActionForward save(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { if (log.isDebugEnabled()) { log.debug("Entering 'save' method"); } // Extract attributes and parameters we will need ActionMessages messages = new ActionMessages(); CargoForm cargoForm = (CargoForm) form; boolean isNew = ("".equals(cargoForm.getId()) || cargoForm.getId() == null); CargoManager mgr = (CargoManager) getBean("cargoManager"); Cargo cargo = (Cargo) convert(cargoForm); mgr.saveCargo(cargo); // add success messages if (isNew) { messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("cargo.added")); // save messages in session to survive a redirect saveMessages(request.getSession(), messages); return mapping.findForward("search"); } else { messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("cargo.updated")); saveMessages(request, messages); return mapping.findForward("edit"); } } public ActionForward search(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { if (log.isDebugEnabled()) { log.debug("Entering 'search' method"); } CargoForm cargoForm = (CargoForm) form; Cargo cargo = (Cargo) convert(cargoForm); CargoManager mgr = (CargoManager) getBean("cargoManager"); request.setAttribute(Constants.CARGO_LIST, mgr.getCargos(cargo)); return mapping.findForward("list"); } public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { return search(mapping, form, request, response); } }