1 16 package com.blandware.atleap.webapp.action.core.contentResource; 17 18 import com.blandware.atleap.common.Constants; 19 import com.blandware.atleap.model.core.ContentDocument; 20 import com.blandware.atleap.model.core.ContentResource; 21 import com.blandware.atleap.model.core.Role; 22 import com.blandware.atleap.search.SearchManager; 23 import com.blandware.atleap.service.core.ContentResourceManager; 24 import com.blandware.atleap.service.core.RoleManager; 25 import com.blandware.atleap.webapp.action.core.BaseAction; 26 import com.blandware.atleap.webapp.form.core.SelectRolesForm; 27 import com.blandware.atleap.webapp.util.core.CacheUtil; 28 import com.blandware.atleap.webapp.util.core.WebappConstants; 29 import com.blandware.atleap.webapp.util.core.WebappUtil; 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 import org.springframework.orm.ObjectOptimisticLockingFailureException; 36 37 import javax.servlet.http.HttpServletRequest ; 38 import javax.servlet.http.HttpServletResponse ; 39 import java.util.ArrayList ; 40 import java.util.List ; 41 import java.util.Iterator ; 42 43 69 public final class AssignContentResourceRolesAction extends BaseAction { 70 79 public ActionForward execute(ActionMapping mapping, ActionForm form, 80 HttpServletRequest request, HttpServletResponse response) throws Exception { 81 82 if ( !isCancelled(request) ) { 83 RoleManager roleManager = (RoleManager) getBean(Constants.ROLE_MANAGER_BEAN); 85 SelectRolesForm selectRolesForm = (SelectRolesForm) form; 86 String [] selectedRoleNames = selectRolesForm.getSelectedRoles(); 87 88 List roles = new ArrayList (); 89 for ( int i = 0; i < selectedRoleNames.length; i++ ) { 90 String roleName = selectedRoleNames[i]; 91 Role role = roleManager.retrieveRole(roleName); 92 if ( role != null ) { 93 roles.add(role); 94 } 95 } 96 97 Long contentResourceId = null; 98 if ( request.getSession().getAttribute(WebappConstants.CONTENT_RESOURCE_ID_KEY) != null ) { 99 contentResourceId = (Long ) request.getSession().getAttribute(WebappConstants.CONTENT_RESOURCE_ID_KEY); 100 } else { 101 if ( log.isWarnEnabled() ) { 102 log.warn("Missing content resource ID. Returning to list..."); 103 } 104 return mapping.findForward("listContentResources"); 105 } 106 107 ContentResourceManager resourceManager = (ContentResourceManager) getBean(Constants.CONTENT_RESOURCE_MANAGER_BEAN); 108 ContentResource contentResource = resourceManager.retrieveContentResource(contentResourceId); 109 110 if ( contentResource == null ) { 111 ActionMessages errors = new ActionMessages(); 113 errors.add("contentResourceNotFound", new ActionMessage("core.contentResource.errors.notFound")); 114 saveErrors(request, errors); 115 return mapping.findForward("listContentResources"); 116 } 117 118 contentResource.setVersion(Long.valueOf(selectRolesForm.getVersion())); 119 120 List contentResourceRoles = new ArrayList (contentResource.getRoles()); 123 for ( int i = 0; i < contentResourceRoles.size(); i++ ) { 124 Role role = (Role) contentResourceRoles.get(i); 125 if ( !roles.contains(role) ) { 126 contentResource.removeRole(role); 127 } 128 } 129 130 for ( Iterator i = roles.iterator(); i.hasNext(); ) { 132 Role role = (Role) i.next(); 133 contentResource.addRole(role); 134 } 135 136 try { 137 resourceManager.updateContentResource(contentResource, contentResource.getResourceData()); 138 } catch ( ObjectOptimisticLockingFailureException e ) { 139 ActionMessages errors = new ActionMessages(); 141 errors.add("updateFailed", new ActionMessage("core.contentResource.errors.updateFailed")); 142 saveErrors(request, errors); 143 request.setAttribute(WebappConstants.CONTENT_RESOURCE_ID_KEY, contentResource.getId()); 144 return mapping.findForward("callAssignRoles"); 145 } 146 147 String charset = null; 148 if ( contentResource instanceof ContentDocument ) { 149 ContentDocument contentDocument = (ContentDocument) contentResource; 150 charset = contentDocument.getCharset(); 151 152 SearchManager searchManager = SearchManager.getInstance(request.getSession().getServletContext()); 154 searchManager.reIndexDocument(contentDocument, request); 155 } 156 157 CacheUtil cacheUtil = CacheUtil.getInstance(request); 158 CacheUtil.ResourceData rd = new CacheUtil.ResourceData(contentResource.getResourceData().getData(), 159 contentResource.getMimeType(), 160 charset, 161 WebappUtil.rolesToString(contentResource.getRoles()), 162 contentResource.getLastUpdatedDatetime().getTime()); 163 cacheUtil.putResourceInCache(rd, contentResource.getUri()); 164 165 } 166 return mapping.findForward("listContentResources"); 167 } 168 } | Popular Tags |