KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > nemesis > forum > webapp > admin > action > EditMessageAction


1 package org.nemesis.forum.webapp.admin.action;
2
3 import javax.servlet.http.HttpServletRequest JavaDoc;
4 import javax.servlet.http.HttpServletResponse JavaDoc;
5
6 import org.apache.commons.beanutils.PropertyUtils;
7 import org.apache.commons.logging.Log;
8 import org.apache.commons.logging.LogFactory;
9 import org.apache.struts.action.ActionError;
10 import org.apache.struts.action.ActionErrors;
11 import org.apache.struts.action.ActionForm;
12 import org.apache.struts.action.ActionForward;
13 import org.apache.struts.action.ActionMapping;
14 import org.nemesis.forum.Forum;
15 import org.nemesis.forum.ForumFactory;
16 import org.nemesis.forum.Message;
17 import org.nemesis.forum.exception.UnauthorizedException;
18 import org.nemesis.forum.webapp.admin.bean.MessageBean;
19
20 /**
21  * @author dlaurent
22  *
23  * :TODO: need big clean
24  */

25 public class EditMessageAction extends BaseAction {
26
27     static protected Log log = LogFactory.getLog(EditMessageAction.class);
28
29     public ActionForward execute(ActionMapping mapping, ActionForm form, HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response) throws Exception JavaDoc {
30
31         //check logon
32
checkUser(request);
33         
34
35         ActionErrors errors = new ActionErrors();
36
37         //user need cancel
38
if (isCancelled(request)) {
39             return (mapping.findForward("cancel"));
40         }
41
42         try {
43
44             ForumFactory forumFactory = ForumFactory.getInstance(getAuthToken(request));
45             Forum forum = forumFactory.getForum(Integer.parseInt(request.getParameter("id")));
46             //check permission
47
checkPermission(request, OperationConstants.EDIT_MESSAGE,forum);
48
49             
50             //first, populate
51
if (request.getParameter("messageBean.subject") == null) {
52                 MessageBean mb = new MessageBean();
53                 Message m =forum.getThread(Integer.parseInt(request.getParameter("threadID"))).getMessage(Integer.parseInt(request.getParameter("messageID")));
54
55                 
56                 mb.setForumID( Integer.parseInt(request.getParameter("id")));
57                 mb.setThreadID( Integer.parseInt(request.getParameter("threadID")));
58                 mb.setMessageID( m.getID());
59                 mb.setSubject( m.getSubject());
60                 mb.setContent( m.getBody());
61                 
62                 PropertyUtils.setProperty(form, "messageBean", mb);
63                 return mapping.findForward("view");
64             }
65             
66             //save
67
MessageBean mb = (MessageBean) PropertyUtils.getSimpleProperty(form, "messageBean");
68             Message m =forum.getThread(mb.getThreadID()).getMessage(mb.getMessageID());
69             m.setSubject(mb.getSubject());
70             m.setBody(mb.getContent());
71             
72
73         } catch (NumberFormatException JavaDoc aee) {
74             errors.add("general", new ActionError("editMessage.unauthorized"));
75             
76         } catch (UnauthorizedException aee) {
77             errors.add("general", new ActionError("editMessage.unauthorized"));
78             return mapping.findForward("view");
79
80         } catch (Exception JavaDoc e) {
81             String JavaDoc eid = this.getClass().getName() + "_" + System.currentTimeMillis();
82             log.error("eid:" + eid + "\nsessionID" + request.getSession().getId(), e);
83             errors.add("general", new ActionError("error.general", "erreur id:" + eid));
84         }
85
86         if (!errors.isEmpty()) {
87             saveErrors(request, errors);
88             return mapping.findForward("cancel");
89         }
90
91         return mapping.findForward("success");
92     }
93
94 }
Popular Tags