package org.appfuse.webapp.action; import java.util.Date; 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 org.appfuse.Constants; import org.appfuse.model.Role; import org.appfuse.model.User; import org.appfuse.model.Weblog; import org.appfuse.service.Manager; import org.appfuse.webapp.form.WeblogForm; /** * Action class to handle CRUD on a Weblog object * * @struts.action name="weblogForm" path="/weblogs" scope="request" * validate="false" parameter="method" input="mainMenu" * @struts.action name="weblogForm" path="/editWeblog" scope="request" * validate="false" parameter="method" input="list" * @struts.action name="weblogForm" path="/saveWeblog" scope="request" * validate="true" parameter="method" input="edit" * * @struts.action-forward name="edit" path="/WEB-INF/pages/weblogForm.jsp" * @struts.action-forward name="list" path="/WEB-INF/pages/weblogList.jsp" * @struts.action-forward name="search" path="/weblogs.html" redirect="true" */ public final class WeblogAction 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(); WeblogForm weblogForm = (WeblogForm) form; // Exceptions are caught by ActionExceptionHandler Manager mgr = (Manager) getBean("manager"); mgr.removeObject(Weblog.class, Long.valueOf(weblogForm.getWeblogId())); messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("weblog.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"); } WeblogForm weblogForm = (WeblogForm) form; // if an id is passed in, look up the user - otherwise // don't do anything - user is doing an add if (weblogForm.getWeblogId() != null) { Manager mgr = (Manager) getBean("manager"); Weblog weblog = (Weblog) mgr.getObject(Weblog.class, Long.valueOf(weblogForm.getWeblogId())); weblogForm = (WeblogForm) convert(weblog); convertLists(weblogForm); updateFormBean(mapping, request, weblogForm); } 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(); WeblogForm weblogForm = (WeblogForm) form; boolean isNew = ("".equals(weblogForm.getWeblogId()) || weblogForm.getWeblogId() == null); Manager mgr = (Manager) getBean("manager"); Weblog weblog = (Weblog) convert(weblogForm); convertLists(weblog); mgr.saveObject(weblog); // add success messages if (isNew) { messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("weblog.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("weblog.updated")); saveMessages(request.getSession(), messages); convertLists(weblogForm); updateFormBean(mapping, request, weblogForm); 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"); } Manager mgr = (Manager) getBean("manager"); request.setAttribute(Constants.WEBLOG_LIST, mgr.getObjects(Weblog.class)); return mapping.findForward("list"); } public ActionForward unspecified(ActionMapping mapping, ActionForm form, HttpServletRequest request, HttpServletResponse response) throws Exception { return search(mapping, form, request, response); } }