1 21 package com.jaspersoft.jasperserver.war.action; 22 23 import java.util.List ; 24 import java.util.ArrayList ; 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 48 public class RoleAction extends FormAction 49 { 50 protected final Log log = LogFactory.getLog(this.getClass()); 51 private static final String 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); setFormObjectName(FORM_OBJECT_KEY); 74 setFormObjectScope(ScopeType.FLOW); setValidator(new RoleValidator()); 76 77 } 78 79 public Event roleList(RequestContext context) 80 { 81 List 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 [] selectedRoles = null; 90 91 if (context.getRequestParameters().contains("selectedRoles")) 92 { 93 Object parameter = context.getRequestParameters().getMap().get("selectedRoles"); 94 if (parameter instanceof String ) 95 selectedRoles = new String []{(String )parameter}; 96 else 97 selectedRoles = (String [])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 108 { 109 110 RoleWrapper wrapper = (RoleWrapper) getRole(context); 111 String 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 ()); 120 } 121 context.getFlowScope().put(FORM_OBJECT_KEY, wrapper); 122 return success(); 123 } 124 125 public Event saveRole(RequestContext context) throws Exception 126 { 127 RoleWrapper wrapper = (RoleWrapper) getFormObject(context); 128 Role role = wrapper.getRole(); 129 String roleName = context.getRequestParameters().get("role.roleName"); 130 role.setRoleName(roleName); 131 132 List 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 143 { 144 RoleWrapper wrapper = (RoleWrapper) getFormObject(context); 145 String roleName = context.getRequestParameters().get("role.roleName"); 146 if (roleName != null) 147 wrapper.getRole().setRoleName(roleName); 148 149 List usersNotInRole = wrapper.getUsersNotInRole(); 150 List usersInRole = wrapper.getUsersInRole(); 151 152 String [] 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 171 { 172 RoleWrapper wrapper = (RoleWrapper) getFormObject(context); 173 String roleName = context.getRequestParameters().get("role.roleName"); 174 if (roleName != null) 175 wrapper.getRole().setRoleName(roleName); 176 177 List usersNotInRole = wrapper.getUsersNotInRole(); 178 List usersInRole = wrapper.getUsersInRole(); 179 String [] 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 getRole(org.springframework.webflow.RequestContext context) throws java.lang.Exception 197 { 198 String 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 [] getComboBoxValues(RequestContext context, String comboBoxName) { 216 String [] values; 217 if (context.getRequestParameters().contains(comboBoxName)) 218 { 219 Object parameter = context.getRequestParameters().getMap().get(comboBoxName); 220 if (parameter instanceof String ) 221 values = new String []{(String )parameter}; 222 else 223 values = (String [])parameter; 224 225 return values; 226 } 227 return null; 228 } 229 } 230 | Popular Tags |