1 16 package com.blandware.atleap.webapp.action.news; 17 18 import com.blandware.atleap.common.NewsModuleConstants; 19 import com.blandware.atleap.model.news.NewsItem; 20 import com.blandware.atleap.search.SearchManager; 21 import com.blandware.atleap.service.exception.BeanAlreadyExistsException; 22 import com.blandware.atleap.service.news.NewsManager; 23 import com.blandware.atleap.webapp.action.core.BaseAction; 24 import com.blandware.atleap.webapp.form.NewsItemForm; 25 import com.blandware.atleap.webapp.util.core.CacheUtil; 26 import org.apache.commons.validator.GenericValidator; 27 import org.apache.struts.action.ActionForm; 28 import org.apache.struts.action.ActionForward; 29 import org.apache.struts.action.ActionMapping; 30 import org.apache.struts.action.ActionMessage; 31 import org.apache.struts.action.ActionMessages; 32 import org.springframework.orm.ObjectOptimisticLockingFailureException; 33 34 import javax.servlet.http.HttpServletRequest ; 35 import javax.servlet.http.HttpServletResponse ; 36 37 57 public final class ChangeNewsItemActivityAction extends BaseAction { 58 67 public ActionForward execute(ActionMapping mapping, ActionForm form, 68 HttpServletRequest request, HttpServletResponse response) throws Exception { 69 70 NewsItemForm newsItemForm = (NewsItemForm) form; 71 72 Long newsItemId = null; 73 if ( !GenericValidator.isBlankOrNull(newsItemForm.getId()) ) { 74 newsItemId = Long.valueOf(newsItemForm.getId()); 75 } else { 76 if ( log.isWarnEnabled() ) { 77 log.warn("Missing news item ID. Returning to list."); 78 } 79 return mapping.findForward("listNewsItems"); 80 } 81 82 NewsManager newsManager = (NewsManager) getBean(NewsModuleConstants.NEWS_MANAGER_BEAN); 83 NewsItem newsItem = newsManager.retrieveNewsItem(newsItemId); 84 85 if ( newsItem == null ) { 86 ActionMessages errors = new ActionMessages(); 88 errors.add("newsItemNotFound", new ActionMessage("news.errors.notFound")); 89 saveErrors(request, errors); 90 return mapping.findForward("listNewsItems"); 91 } 92 93 String mode = request.getParameter("mode"); 94 boolean alreadyActive = newsItem.getActive() != null && newsItem.getActive().booleanValue(); 95 boolean active = true; 96 if ( !"active".equalsIgnoreCase(mode) ) { 97 active = false; 98 } 99 100 try { 101 102 if ( (alreadyActive && !active) || (!alreadyActive && active) ) { 103 newsItem.setActive(Boolean.valueOf(active)); 104 newsManager.updateNewsItem(newsItem); 105 106 SearchManager searchManager = SearchManager.getInstance(request.getSession().getServletContext()); 107 searchManager.unIndexPage(newsItem.getUri(), request); 108 109 if ( active ) { 110 searchManager.indexPage(newsItem, request); 111 } 112 113 CacheUtil cacheUtil = CacheUtil.getInstance(request); 114 cacheUtil.flushLocalizableFieldValueCache(newsItemId); 115 } 116 } catch ( BeanAlreadyExistsException e ) { 117 ActionMessages errors = new ActionMessages(); 119 errors.add("newsItemAlreadyExists", new ActionMessage("errors.newsItemAlreadyExists")); 120 saveErrors(request, errors); 121 return mapping.findForward("listNewsItems"); 122 } catch ( ObjectOptimisticLockingFailureException e ) { 123 ActionMessages errors = new ActionMessages(); 125 errors.add("updateFailed", new ActionMessage("news.errors.updateFailed")); 126 saveErrors(request, errors); 127 return mapping.findForward("listNewsItems"); 128 } 129 return mapping.findForward("listNewsItems"); 130 } 131 } | Popular Tags |