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.service.news.NewsManager; 21 import com.blandware.atleap.webapp.action.core.BaseAction; 22 import com.blandware.atleap.webapp.form.NewsItemForm; 23 import com.blandware.atleap.webapp.util.core.LocaleUtil; 24 import com.blandware.atleap.webapp.util.core.WebappConstants; 25 import com.blandware.atleap.webapp.util.news.NewsModuleWebConstants; 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 33 import javax.servlet.http.HttpServletRequest ; 34 import javax.servlet.http.HttpServletResponse ; 35 import java.util.List ; 36 import java.util.Map ; 37 38 60 public final class CallUpdateNewsItemBodyAction extends BaseAction { 61 70 public ActionForward execute(ActionMapping mapping, ActionForm form, 71 HttpServletRequest request, HttpServletResponse response) throws Exception { 72 73 request.getSession().removeAttribute(NewsModuleWebConstants.NEWS_ITEM_SUBMITTED_ACTION_KEY); 74 NewsItemForm newsItemForm = (NewsItemForm) form; 75 String localesMode = newsItemForm.getLocalesMode(); 76 77 if ( isBackPressed(request) ) { 78 if (request.getSession().getAttribute(WebappConstants.CONTENT_LOCALES_COLLECTION_KEY) == null) { 81 List contentLocales = LocaleUtil.getInstance(servlet.getServletContext()).getAvailableLocales(); 82 request.getSession().setAttribute(WebappConstants.CONTENT_LOCALES_COLLECTION_KEY, contentLocales); 83 } 84 85 newsItemForm.setAllCheckedFlagForAnnotationCheckboxes(request, localesMode); 87 88 return mapping.findForward("inputForward"); 89 } 90 91 if (isCancelled(request)) { 92 if ( request.getSession().getAttribute(WebappConstants.REDIRECT_URL_KEY) != null ) { 93 String redirectUrl = (String ) request.getSession().getAttribute(WebappConstants.REDIRECT_URL_KEY); 94 ActionForward redirect = new ActionForward(redirectUrl, true); 95 return redirect; 96 } 97 return mapping.findForward("listNewsItems"); 98 } 99 100 if ( request.getSession().getAttribute(WebappConstants.CONTENT_LOCALES_COLLECTION_KEY) == null ) { 101 List contentLocales = LocaleUtil.getInstance(servlet.getServletContext()).getAvailableLocales(); 102 request.getSession().setAttribute(WebappConstants.CONTENT_LOCALES_COLLECTION_KEY, contentLocales); 103 } 104 105 if ( !"current".equalsIgnoreCase(localesMode) && !"all".equalsIgnoreCase(localesMode) && newsItemForm.getBodyCheckedBoxes().size() == 0 ) { 108 request.setAttribute("beginPage", mapping.findForward("listNewsItems").getPath()); 109 return mapping.findForward("unsatisfiablePage"); 110 } 111 112 Long newsItemId = null; 114 if ( !GenericValidator.isBlankOrNull(newsItemForm.getId()) ) { 115 newsItemId = Long.valueOf(newsItemForm.getId()); 116 } else { 117 if ( log.isWarnEnabled() ) { 118 log.warn("Missing news item ID. Returning to list"); 119 } 120 return mapping.findForward("listNewsItems"); 121 } 122 123 NewsManager newsManager = (NewsManager) getBean(NewsModuleConstants.NEWS_MANAGER_BEAN); 124 NewsItem newsItem = newsManager.retrieveNewsItem(newsItemId); 125 if ( newsItem == null ) { 126 ActionMessages errors = new ActionMessages(); 127 errors.add("newsItemNotFound", new ActionMessage("news.errors.notFound")); 128 saveErrors(request, errors); 129 return mapping.findForward("listNewsItems"); 130 } 131 132 if ( request.getSession().getAttribute(NewsModuleWebConstants.NEWS_ITEM_MERGED_BODY_KEY) != null ) { 133 Map mergedBody = (Map ) request.getSession().getAttribute(NewsModuleWebConstants.NEWS_ITEM_MERGED_BODY_KEY); 134 newsItemForm.setBodyMap(mergedBody); 135 request.getSession().removeAttribute(NewsModuleWebConstants.NEWS_ITEM_MERGED_BODY_KEY); 136 } 137 138 saveToken(request); 139 return mapping.findForward("updateNewsItemBody"); 140 } 141 } | Popular Tags |