KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > contineo > actions > admin > menu > SaveMenuAction


1 /*
2  * SaveMenuAction.java
3  *
4  * Created on 26. August 2003, 22:45
5  */

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

33 public class SaveMenuAction extends Action{
34
35     /**
36      * @uml.property name="logger"
37      * @uml.associationEnd
38      */

39     private Logger logger;
40
41     
42     /** Creates a new instance of SaveMenuAction */
43     public SaveMenuAction() {
44         logger = LoggingManager.getLogger(this.getClass());
45     }
46
47     public ActionForward execute(ActionMapping mapping,
48                     ActionForm form, HttpServletRequest JavaDoc request,
49                     HttpServletResponse JavaDoc response) {
50         ActionForward actionForward = new ActionForward();
51         ActionErrors errors = new ActionErrors();
52         ActionMessages messages = new ActionMessages();
53         HttpSession JavaDoc session = request.getSession();
54         if (SessionManagement.isValid(session)) {
55             MenuForm menuform = (MenuForm)form;
56             MenuDAO dao = new MenuDAO();
57             Menu parent = new Menu();
58             Menu menu = new Menu();
59             try {
60                 String JavaDoc parentname = "";
61                 int menutype = 0;
62                 if (menuform.getMenuText() == null || menuform.getMenuText().equals("") || menuform.getMenuGroup() == null || menuform.getMenuGroup().length == 0) {
63                     errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("errors.required"));
64                 } else {
65                     parent = dao.findByPrimaryKey(Integer.parseInt(menuform.getMenuParent()));
66                     menutype = parent.getMenuType();
67                     parentname = parent.getMenuText();
68                     
69                     menu.setMenuPath(parent.getMenuPath() + "/" + parent.getMenuId());
70                     menuform.setMenuHier(String.valueOf(parent.getMenuHier()));
71                     menu.setMenuText(menuform.getMenuText());
72                     menu.setMenuParent(Integer.parseInt(menuform.getMenuParent()));
73                     menu.setMenuSort(Integer.parseInt(menuform.getMenuSort()));
74                     menu.setMenuIcon(menuform.getMenuIcon());
75                     menu.setMenuType(Integer.parseInt(menuform.getMenuType()));
76                     menu.setMenuRef(menuform.getMenuRef());
77
78                     // by default add read and write privileges to admin group
79
String JavaDoc[] menuGroup = menuform.getMenuGroup();
80                     boolean hasAdmin = false;
81                     for (int i = 0; i < menuGroup.length; i++) {
82                         if (menuGroup[i].equals("admin")) {
83                             hasAdmin = true;
84                             break;
85                         }
86                     }
87                     if (!hasAdmin) {
88                         String JavaDoc[] menuGroupAdmin = new String JavaDoc[menuGroup.length + 1];
89                         menuGroupAdmin[0] = "admin";
90                         for (int i = 0; i < menuGroup.length; i++) {
91                             menuGroupAdmin[i + 1] = menuGroup[i];
92                         }
93                         menu.setMenuGroup(menuGroupAdmin);
94                     } else {
95                         menu.setMenuGroup(menuGroup);
96                     }
97                     
98                     boolean stored = dao.store(menu);
99                     if (!stored)
100                         errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("errors.action.savemenu.notstored"));
101                     else
102                         messages.add(ActionMessages.GLOBAL_MESSAGE, new ActionMessage("msg.action.savemenu"));
103                 }
104                 MenuForm mf = new MenuForm();
105                 mf.setMenuParent(menuform.getMenuParent());
106                 request.setAttribute("menu", mf);
107                 request.setAttribute("parentname", parentname);
108                 request.setAttribute("menutype", String.valueOf(menutype));
109                 GroupDAO gdao = new GroupDAO();
110                 Collection JavaDoc coll = gdao.findAll();
111                 request.setAttribute("groups", coll);
112                 actionForward = mapping.findForward("addmenu");
113             } catch (Exception JavaDoc e) {
114                 if (logger.isEnabledFor(Level.ERROR))
115                     logger.error(e.getMessage());
116                 errors.add(ActionErrors.GLOBAL_ERROR, new ActionError("errors.action.savemenu.notstored"));
117                 actionForward = mapping.findForward("error");
118             }
119             saveErrors(request, errors);
120             saveMessages(request, messages);
121             menuform.reset(mapping, request);
122         } else
123             actionForward = mapping.findForward("invalid");
124         return actionForward;
125     }
126 }
127
Popular Tags