1 16 package com.blandware.atleap.webapp.action.news; 17 18 import com.blandware.atleap.common.Constants; 19 import com.blandware.atleap.common.NewsModuleConstants; 20 import com.blandware.atleap.model.core.Role; 21 import com.blandware.atleap.model.news.NewsItem; 22 import com.blandware.atleap.search.SearchManager; 23 import com.blandware.atleap.service.core.RoleManager; 24 import com.blandware.atleap.service.news.NewsManager; 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.news.NewsModuleWebConstants; 28 import org.apache.struts.action.ActionForm; 29 import org.apache.struts.action.ActionForward; 30 import org.apache.struts.action.ActionMapping; 31 import org.apache.struts.action.ActionMessage; 32 import org.apache.struts.action.ActionMessages; 33 import org.springframework.orm.ObjectOptimisticLockingFailureException; 34 35 import javax.servlet.http.HttpServletRequest ; 36 import javax.servlet.http.HttpServletResponse ; 37 import java.util.ArrayList ; 38 import java.util.List ; 39 import java.util.Iterator ; 40 41 67 public final class AssignNewsItemRolesAction extends BaseAction { 68 77 public ActionForward execute(ActionMapping mapping, ActionForm form, 78 HttpServletRequest request, HttpServletResponse response) throws Exception { 79 80 if ( !isCancelled(request) ) { 81 RoleManager roleManager = (RoleManager) getBean(Constants.ROLE_MANAGER_BEAN); 83 SelectRolesForm selectRolesForm = (SelectRolesForm) form; 84 String [] selectedRoleNames = selectRolesForm.getSelectedRoles(); 85 86 List roles = new ArrayList (); 87 for ( int i = 0; i < selectedRoleNames.length; i++ ) { 88 String roleName = selectedRoleNames[i]; 89 Role role = roleManager.retrieveRole(roleName); 90 if ( role != null ) { 91 roles.add(role); 92 } 93 } 94 95 Long newsItemId = (Long ) request.getSession().getAttribute(NewsModuleWebConstants.NEWS_ITEM_ID_KEY); 96 NewsManager newsManager = (NewsManager) getBean(NewsModuleConstants.NEWS_MANAGER_BEAN); 97 NewsItem newsItem = newsManager.retrieveNewsItem(newsItemId); 98 99 if ( newsItem == null ) { 100 ActionMessages errors = new ActionMessages(); 102 errors.add("newsItemNotFound", new ActionMessage("news.errors.notFound")); 103 saveErrors(request, errors); 104 return mapping.findForward("listNewsItems"); 105 } 106 107 newsItem.setVersion(Long.valueOf(selectRolesForm.getVersion())); 108 109 List newsItemRoles = new ArrayList (newsItem.getRoles()); 112 for ( int i = 0; i < newsItemRoles.size(); i++ ) { 113 Role role = (Role) newsItemRoles.get(i); 114 if ( !roles.contains(role) ) { 115 newsItem.removeRole(role); 116 } 117 } 118 119 for ( Iterator i = roles.iterator(); i.hasNext(); ) { 121 Role role = (Role) i.next(); 122 newsItem.addRole(role); 123 } 124 125 try { 126 newsManager.updateNewsItem(newsItem); 127 } catch ( ObjectOptimisticLockingFailureException e ) { 128 ActionMessages errors = new ActionMessages(); 130 errors.add("updateFailed", new ActionMessage("news.errors.updateFailed")); 131 saveErrors(request, errors); 132 request.setAttribute(NewsModuleWebConstants.NEWS_ITEM_ID_KEY, newsItem.getId()); 133 return mapping.findForward("callAssignRoles"); 134 } 135 136 if ( newsItem.getActive().booleanValue() ) { 138 SearchManager searchManager = SearchManager.getInstance(request.getSession().getServletContext()); 139 searchManager.reIndexPage(newsItem, request); 140 } 141 142 } 143 return mapping.findForward("listNewsItems"); 144 } 145 } | Popular Tags |