package mx.edu.um.miembros.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.miembros.model.Miembro; import mx.edu.um.miembros.service.MiembroManager; import mx.edu.um.miembros.webapp.form.MiembroForm; /** * Action class to handle CRUD on a Miembro object * * @struts.action name="miembroForm" path="/miembros" scope="request" * validate="false" parameter="method" input="mainMenu" * @struts.action name="miembroForm" path="/editMiembro" scope="request" * validate="false" parameter="method" input="list" * @struts.action name="miembroForm" path="/saveMiembro" 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/miembros/miembroForm.jsp" * @struts.action-forward name="list" path="/WEB-INF/pages/miembros/miembroList.jsp" * @struts.action-forward name="search" path="/miembros.html" redirect="true" */ public final class MiembroAction 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(); MiembroForm miembroForm = (MiembroForm) form; // Exceptions are caught by ActionExceptionHandler MiembroManager mgr = (MiembroManager) getBean("miembroManager"); mgr.removeMiembro(miembroForm.getId()); messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("miembro.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"); } MiembroForm miembroForm = (MiembroForm) form; // if an id is passed in, look up the user - otherwise // don't do anything - user is doing an add if (miembroForm.getId() != null) { MiembroManager mgr = (MiembroManager) getBean("miembroManager"); Miembro miembro = mgr.getMiembro(miembroForm.getId()); miembroForm = (MiembroForm) convert(miembro); updateFormBean(mapping, request, miembroForm); } 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(); MiembroForm miembroForm = (MiembroForm) form; boolean isNew = ("".equals(miembroForm.getId()) || miembroForm.getId() == null); MiembroManager mgr = (MiembroManager) getBean("miembroManager"); Miembro miembro = (Miembro) convert(miembroForm); mgr.saveMiembro(miembro); // add success messages if (isNew) { messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("miembro.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("miembro.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"); } MiembroForm miembroForm = (MiembroForm) form; Miembro miembro = (Miembro) convert(miembroForm); MiembroManager mgr = (MiembroManager) getBean("miembroManager"); request.setAttribute(Constants.MIEMBRO_LIST, mgr.getMiembros(miembro)); return mapping.findForward("list"); } public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { return search(mapping, form, request, response); } }