KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > contineo > actions > admin > rules > SaveRulesAction


1 /*
2  * SaveRulesAction.java
3  *
4  * Created on 18. November 2003, 21:46
5  */

6
7 package org.contineo.actions.admin.rules;
8
9 import java.util.Collection JavaDoc;
10 import java.util.Iterator JavaDoc;
11
12 import javax.servlet.http.HttpServletRequest JavaDoc;
13 import javax.servlet.http.HttpServletResponse JavaDoc;
14 import javax.servlet.http.HttpSession JavaDoc;
15
16 import org.apache.log4j.Level;
17 import org.apache.log4j.Logger;
18 import org.apache.struts.action.Action;
19 import org.apache.struts.action.ActionError;
20 import org.apache.struts.action.ActionErrors;
21 import org.apache.struts.action.ActionForm;
22 import org.apache.struts.action.ActionForward;
23 import org.apache.struts.action.ActionMapping;
24 import org.apache.struts.action.ActionMessage;
25 import org.apache.struts.action.ActionMessages;
26 import org.contineo.admin.Group;
27 import org.contineo.admin.MenuGroup;
28 import org.contineo.admin.dao.GroupDAO;
29 import org.contineo.admin.dao.MenuDAO;
30 import org.contineo.admin.dao.MenuGroupDAO;
31 import org.contineo.core.LoggingManager;
32 import org.contineo.core.SessionManagement;
33 /**
34  *
35  * @author Michael Scholz
36  */

37 public class SaveRulesAction extends Action {
38
39     /**
40      * @uml.property name="logger"
41      * @uml.associationEnd
42      */

43     private Logger logger;
44
45     
46     /** Creates a new instance of SaveRulesAction */
47     public SaveRulesAction() {
48         logger = LoggingManager.getLogger(this.getClass());
49     }
50
51     public ActionForward execute(ActionMapping mapping,
52                     ActionForm form, HttpServletRequest JavaDoc request,
53                     HttpServletResponse JavaDoc response) {
54         ActionForward actionForward = new ActionForward();
55         ActionErrors errors = new ActionErrors();
56         ActionMessages messages = new ActionMessages();
57         HttpSession JavaDoc session = request.getSession();
58         if (SessionManagement.isValid(session)) {
59             String JavaDoc menuid = request.getParameter("menuid");
60             
61             // check if we have write access for the document
62
String JavaDoc userName = (String JavaDoc)session.getAttribute("authuser");
63             int id = Integer.parseInt(menuid);
64             MenuDAO mdao = new MenuDAO();
65             if (! mdao.isWriteEnable(id, userName))
66             {
67                 actionForward = mapping.findForward("noaccess");
68                 return actionForward;
69             }
70             MenuGroupDAO mgdao = new MenuGroupDAO();
71             GroupDAO gdao = new GroupDAO();
72             try {
73                 Collection JavaDoc coll = gdao.findAll();
74                 Iterator JavaDoc iter = coll.iterator();
75                 boolean sqlops = true;
76                 while (iter.hasNext()) {
77                     Group g = (Group)iter.next();
78                     String JavaDoc read = request.getParameter("r" + g.getGroupName());
79                     String JavaDoc write = request.getParameter("w" + g.getGroupName());
80                     
81                     // ignore what was set in form for admin group
82
if (g.getGroupName().equals("admin")) {
83                         read = "on";
84                         write = "on";
85                     }
86                     
87                     MenuGroup mg = mgdao.findByMenuIdGroupName(id, g.getGroupName());
88                     if (read != null && read.equals("on")) {
89                         if (mg == null || !mg.getGroupName().equals(g.getGroupName())) {
90                             mg = new MenuGroup();
91                             mg.setGroupName(g.getGroupName());
92                             mg.setMenuId(id);
93                         }
94                         if (write != null && write.equals("on") && read.equals("on"))
95                             mg.setWriteEnable(1);
96                         else
97                             mg.setWriteEnable(0);
98                         boolean stored = mgdao.store(mg);
99                         if (!stored)
100                             sqlops = false;
101                     } else {
102                         if (mg != null && mg.getGroupName().equals(g.getGroupName())) {
103                             boolean deleted = mgdao.delete(id, g.getGroupName());
104                             if (!deleted)
105                                 sqlops = false;
106                         }
107                     }
108                 }
109                 if (!sqlops)
110                     errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("erros.action.saverules"));
111                 else
112                     messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("msg.action.saverules"));
113                 actionForward.setPath("/ShowRules.do?menuid=" + menuid);
114             } catch (Exception JavaDoc e) {
115                 if (logger.isEnabledFor(Level.ERROR))
116                     logger.error(e.getMessage());
117                 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("erros.action.saverules"));
118                 actionForward = mapping.findForward("error");
119             }
120             saveErrors(request, errors);
121             saveMessages(request, messages);
122         } else
123             actionForward = mapping.findForward("invalid");
124         return actionForward;
125     }
126 }
127
Popular Tags