package org.appfuse.webapp.action;
import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.apache.struts.Globals;
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.Template;
import org.appfuse.service.LookupManager;
import org.appfuse.service.TemplateManager;
import org.appfuse.webapp.form.TemplateForm;
public final class TemplateAction extends BaseAction {
private Log log = LogFactory.getLog(TemplateAction.class);
public ActionForward cancel(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
if (log.isDebugEnabled()) {
log.debug("Entering 'cancel' method");
}
if ("contact".equalsIgnoreCase(request.getParameter("from"))) {
ActionForward edit = mapping.findForward("editContact");
ActionForward next =
new ActionForward(edit.getPath() + "?id=" +
request.getParameter("contactId"), true);
if (log.isDebugEnabled()) {
log.debug("next: " + next.getPath());
}
return next;
}
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();
TemplateForm templateForm = (TemplateForm) form;
TemplateManager mgr = (TemplateManager) getBean("templateManager");
mgr.removeTemplate(convert(templateForm));
messages.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("template.deleted",
templateForm.getName()));
request.getSession(false).setAttribute(Globals.MESSAGE_KEY, 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");
}
TemplateForm templateForm = (TemplateForm) form;
if (templateForm.getId() == null) {
return mapping.findForward("edit");
}
if (log.isDebugEnabled()) {
log.debug("getting templateId: " + templateForm.getId());
}
TemplateManager mgr = (TemplateManager) getBean("templateManager");
Template template = (Template) mgr.getTemplate(templateForm.getId());
templateForm = (TemplateForm) convert(template);
request.setAttribute(Constants.TEMPLATE_KEY, templateForm);
return mapping.findForward("edit");
}
public ActionForward preview(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
if (log.isDebugEnabled()) {
log.debug("Entering 'preview' method");
}
return new ActionForward("/previewTemplate?name=" +
request.getParameter("name"));
}
public ActionForward save(ActionMapping mapping, ActionForm form,
HttpServletRequest request,
HttpServletResponse response)
throws Exception {
if (log.isDebugEnabled()) {
log.debug("Entering 'save' method");
}
ActionMessages messages = new ActionMessages();
TemplateForm templateForm = (TemplateForm) form;
boolean isNew = ("".equals(templateForm.getId()));
TemplateManager mgr = (TemplateManager) getBean("templateManager");
mgr.saveTemplate(convert(templateForm));
if (isNew) {
messages.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("template.added",
templateForm.getName()));
request.getSession().setAttribute(Globals.MESSAGE_KEY, messages);
return mapping.findForward("search");
} else {
messages.add(ActionMessages.GLOBAL_MESSAGE,
new ActionMessage("template.updated",
templateForm.getName()));
request.getSession().setAttribute(Globals.MESSAGE_KEY, messages);
request.setAttribute(Constants.TEMPLATE_KEY, templateForm);
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");
}
LookupManager mgr = (LookupManager) getBean("lookupManager");
List templates = mgr.getTemplates();
if (log.isDebugEnabled()) {
log.debug("updating templateList in servlet context");
}
servlet.getServletContext().setAttribute(Constants.TEMPLATE_LIST,
templates);
request.setAttribute(Constants.TEMPLATE_LIST, templates);
return mapping.findForward("list");
}
}