KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > jaspersoft > jasperserver > war > action > RoleAction


1 /*
2  * Copyright (C) 2006 JasperSoft http://www.jaspersoft.com
3  *
4  * This program is free software; you can redistribute it and/or modify
5  * it under the terms of the GNU General Public License as published by
6  * the Free Software Foundation; either version 2 of the License, or
7  * (at your option) any later version.
8  *
9  * This program is distributed WITHOUT ANY WARRANTY; and without the
10  * implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
11  * See the GNU General Public License for more details.
12  *
13  * You should have received a copy of the GNU General Public License
14  * along with this program; if not, see http://www.gnu.org/licenses/gpl.txt
15  * or write to:
16  *
17  * Free Software Foundation, Inc.,
18  * 59 Temple Place - Suite 330,
19  * Boston, MA USA 02111-1307
20  */

21 package com.jaspersoft.jasperserver.war.action;
22
23 import java.util.List JavaDoc;
24 import java.util.ArrayList JavaDoc;
25
26 import org.springframework.webflow.action.FormAction;
27 import org.springframework.webflow.Event;
28 import org.springframework.webflow.RequestContext;
29 import org.springframework.webflow.ScopeType;
30 import org.springframework.validation.DataBinder;
31 import org.springframework.web.multipart.support.ByteArrayMultipartFileEditor;
32 import org.apache.commons.logging.Log;
33 import org.apache.commons.logging.LogFactory;
34 import com.jaspersoft.jasperserver.api.metadata.user.service.UserAuthorityService;
35 import com.jaspersoft.jasperserver.api.metadata.user.domain.Role;
36 import com.jaspersoft.jasperserver.api.metadata.user.domain.User;
37 import com.jaspersoft.jasperserver.war.dto.FolderWrapper;
38 import com.jaspersoft.jasperserver.war.dto.RoleWrapper;
39 import com.jaspersoft.jasperserver.war.dto.BaseDTO;
40 import com.jaspersoft.jasperserver.war.validation.FolderValidator;
41 import com.jaspersoft.jasperserver.war.validation.RoleValidator;
42
43 /**
44  * FIXME: spring:bind doesn't work properly, should take a closer look at this
45  * @author Ionut Nedelcu (ionutned@users.sourceforge.net)
46  * @version $Id
47  */

48 public class RoleAction extends FormAction
49 {
50     protected final Log log = LogFactory.getLog(this.getClass());
51     private static final String JavaDoc FORM_OBJECT_KEY = "role";
52
53     UserAuthorityService userService;
54
55     public UserAuthorityService getUserService()
56     {
57         return userService;
58     }
59
60     public void setUserService(UserAuthorityService userService)
61     {
62         this.userService = userService;
63     }
64
65
66     protected void initBinder(RequestContext context, DataBinder binder) {
67         binder.registerCustomEditor(byte[].class, new ByteArrayMultipartFileEditor());
68     }
69
70     public RoleAction()
71     {
72         setFormObjectClass(RoleWrapper.class); //custom form backing object class
73
setFormObjectName(FORM_OBJECT_KEY);
74         setFormObjectScope(ScopeType.FLOW); //this is a multi-page wizard!
75
setValidator(new RoleValidator());
76
77     }
78
79     public Event roleList(RequestContext context)
80     {
81         List JavaDoc roles = userService.getRoles(null, null);
82         context.getFlowScope().put("roles", roles);
83
84         return success();
85     }
86
87     public Event removeRoles(RequestContext context)
88     {
89         String JavaDoc[] selectedRoles = null;
90
91         if (context.getRequestParameters().contains("selectedRoles"))
92         {
93             Object JavaDoc parameter = context.getRequestParameters().getMap().get("selectedRoles");
94             if (parameter instanceof String JavaDoc)
95                 selectedRoles = new String JavaDoc[]{(String JavaDoc)parameter};
96             else
97                 selectedRoles = (String JavaDoc[])parameter;
98
99             for (int i = 0; i < selectedRoles.length; i++)
100                 userService.deleteRole(null, selectedRoles[i]);
101         }
102
103
104         return success();
105     }
106
107     public Event editRole(RequestContext context) throws Exception JavaDoc
108     {
109
110         RoleWrapper wrapper = (RoleWrapper) getRole(context);
111         String JavaDoc roleName = wrapper.getRole().getRoleName();
112
113         if (roleName != null) {
114             wrapper.setUsersNotInRole(userService.getUsersNotInRole(null, roleName));
115             wrapper.setUsersInRole(userService.getUsersInRole(null, roleName));
116         }
117         else {
118             wrapper.setUsersNotInRole(userService.getUsers(null, null));
119             wrapper.setUsersInRole(new ArrayList JavaDoc());
120         }
121         context.getFlowScope().put(FORM_OBJECT_KEY, wrapper);
122         return success();
123     }
124
125     public Event saveRole(RequestContext context) throws Exception JavaDoc
126     {
127         RoleWrapper wrapper = (RoleWrapper) getFormObject(context);
128         Role role = wrapper.getRole();
129         String JavaDoc roleName = context.getRequestParameters().get("role.roleName");
130         role.setRoleName(roleName);
131
132         List JavaDoc usersInRole = wrapper.getUsersInRole();
133         if (usersInRole != null)
134             for (int i = 0; i < usersInRole.size(); i++)
135                 role.addUser((User) usersInRole.get(i));
136
137         userService.putRole(null, role);
138
139         return success();
140     }
141
142     public Event addUser(RequestContext context) throws Exception JavaDoc
143     {
144         RoleWrapper wrapper = (RoleWrapper) getFormObject(context);
145         String JavaDoc roleName = context.getRequestParameters().get("role.roleName");
146         if (roleName != null)
147             wrapper.getRole().setRoleName(roleName);
148
149         List JavaDoc usersNotInRole = wrapper.getUsersNotInRole();
150         List JavaDoc usersInRole = wrapper.getUsersInRole();
151
152         String JavaDoc[] selectedUsersNotInRole = getComboBoxValues(context, "selectedUsersNotInRole");
153         if (selectedUsersNotInRole == null)
154             return success();
155
156         for (int i = 0; i < selectedUsersNotInRole.length; i++) {
157             for (int j = 0; j < usersNotInRole.size(); j++) {
158                 User user = (User) usersNotInRole.get(j);
159                 if (user.getUsername() != null && user.getUsername().equals(selectedUsersNotInRole[i])) {
160                     usersNotInRole.remove(user);
161                     usersInRole.add(user);
162                     break;
163                 }
164             }
165         }
166
167         return success();
168     }
169
170     public Event removeUser(RequestContext context) throws Exception JavaDoc
171     {
172         RoleWrapper wrapper = (RoleWrapper) getFormObject(context);
173         String JavaDoc roleName = context.getRequestParameters().get("role.roleName");
174         if (roleName != null)
175             wrapper.getRole().setRoleName(roleName);
176
177         List JavaDoc usersNotInRole = wrapper.getUsersNotInRole();
178         List JavaDoc usersInRole = wrapper.getUsersInRole();
179         String JavaDoc[] selectedUsersInRole = getComboBoxValues(context, "selectedUsersInRole");
180         if (selectedUsersInRole == null)
181             return success();
182
183         for (int i = 0; i < selectedUsersInRole.length; i++) {
184             for (int j = 0; j < usersInRole.size(); j++) {
185                 User user = (User) usersInRole.get(j);
186                 if (user.getUsername() != null && user.getUsername().equals(selectedUsersInRole[i])) {
187                     usersInRole.remove(user);
188                     usersNotInRole.add(user);
189                     break;
190                 }
191             }
192         }
193         return success();
194     }
195
196     public Object JavaDoc getRole(org.springframework.webflow.RequestContext context) throws java.lang.Exception JavaDoc
197     {
198         String JavaDoc roleName = context.getRequestParameters().get("roleName");
199         Role role;
200         RoleWrapper wrapper = new RoleWrapper();
201         if (roleName != null && roleName.length() > 0) {
202             role = userService.getRole(null, roleName);
203             wrapper.setMode(BaseDTO.MODE_STAND_ALONE_EDIT);
204         }
205         else {
206             role = userService.newRole(null);
207             wrapper.setMode(BaseDTO.MODE_STAND_ALONE_NEW);
208         }
209
210         wrapper.setRole(role);
211
212         return wrapper;
213     }
214
215     private String JavaDoc[] getComboBoxValues(RequestContext context, String JavaDoc comboBoxName) {
216         String JavaDoc[] values;
217         if (context.getRequestParameters().contains(comboBoxName))
218         {
219             Object JavaDoc parameter = context.getRequestParameters().getMap().get(comboBoxName);
220             if (parameter instanceof String JavaDoc)
221                 values = new String JavaDoc[]{(String JavaDoc)parameter};
222             else
223                 values = (String JavaDoc[])parameter;
224
225             return values;
226         }
227         return null;
228     }
229 }
230
Popular Tags