1 16 package com.blandware.atleap.webapp.action.core.role; 17 18 import com.blandware.atleap.common.Constants; 19 import com.blandware.atleap.common.util.PartialCollection; 20 import com.blandware.atleap.model.core.*; 21 import com.blandware.atleap.service.core.RoleManager; 22 import com.blandware.atleap.service.core.UserManager; 23 import com.blandware.atleap.webapp.action.core.BaseAction; 24 import com.blandware.atleap.webapp.form.RoleForm; 25 import com.blandware.atleap.webapp.util.core.CacheUtil; 26 import com.blandware.atleap.webapp.util.core.WebappUtil; 27 import com.blandware.atleap.webapp.acegi.UserManagerDaoImpl; 28 import com.blandware.atleap.search.SearchManager; 29 import org.apache.commons.validator.GenericValidator; 30 import org.apache.struts.action.ActionForm; 31 import org.apache.struts.action.ActionForward; 32 import org.apache.struts.action.ActionMapping; 33 import org.apache.struts.action.ActionMessage; 34 import org.apache.struts.action.ActionMessages; 35 36 import javax.servlet.http.HttpServletRequest ; 37 import javax.servlet.http.HttpServletResponse ; 38 import java.util.List ; 39 import java.util.ArrayList ; 40 import java.util.Iterator ; 41 42 61 public final class DeleteRoleAction extends BaseAction { 62 71 public ActionForward execute(ActionMapping mapping, ActionForm form, 72 HttpServletRequest request, HttpServletResponse response) throws Exception { 73 74 RoleForm roleForm = (RoleForm) form; 75 String roleName = null; 76 if ( !GenericValidator.isBlankOrNull(roleForm.getName()) ) { 77 roleName = roleForm.getName(); 78 } else { 79 if ( log.isWarnEnabled() ) { 80 log.warn("Missing role name. Returning to list..."); 81 } 82 return mapping.findForward("listRoles"); 83 } 84 85 RoleManager roleManager = (RoleManager) getBean(Constants.ROLE_MANAGER_BEAN); 86 Role role = roleManager.retrieveRole(roleName); 87 88 if ( role == null ) { 89 ActionMessages errors = new ActionMessages(); 91 errors.add("roleNotFound", new ActionMessage("core.role.errors.notFound")); 92 saveErrors(request, errors); 93 return mapping.findForward("listRoles"); 94 } 95 96 if ( role.getFixed().booleanValue() ) { 97 ActionMessages errors = new ActionMessages(); 98 errors.add("roleIsFixed", new ActionMessage("core.role.errors.isFixed")); 99 saveErrors(request, errors); 100 return mapping.findForward("listRoles"); 101 } 102 103 List resources = new ArrayList (role.getResources()); 104 List pages = new ArrayList (role.getPages()); 105 106 UserManager userManager = (UserManager) getBean(Constants.USER_MANAGER_BEAN); 107 PartialCollection users = userManager.listUsers(null); 108 UserManagerDaoImpl userManagerDaoImpl = (UserManagerDaoImpl) getBean(Constants.USER_DETAILS_SERVICE_BEAN); 109 110 roleManager.deleteRole(roleName); 111 112 for (Iterator i = users.iterator(); i.hasNext();) { 113 User user = (User) i.next(); 114 if (user.getName().equals(request.getRemoteUser())) { 115 userManagerDaoImpl.updateUser(user); 116 } 117 } 118 119 CacheUtil cacheUtil = CacheUtil.getInstance(request); 120 SearchManager searchManager = SearchManager.getInstance(request.getSession().getServletContext()); 121 122 for (int i = 0; i < resources.size(); i++) { 123 ContentResource resource = (ContentResource) resources.get(i); 124 cacheUtil.updateResourceRolesInCache(resource.getUri(), WebappUtil.rolesToString(resource.getRoles())); 125 if (resource instanceof ContentDocument) { 126 ContentDocument document = (ContentDocument) resource; 127 searchManager.reIndexDocument(document, request); 128 } 129 } 130 131 for (int i = 0; i < pages.size(); i++) { 132 Page page = (Page) pages.get(i); 133 searchManager.reIndexPage(page, request); 134 140 } 141 142 cacheUtil.flushContentPageCache(); 146 147 return mapping.findForward("listRoles"); 148 } 149 } 150 | Popular Tags |