1 16 package com.blandware.atleap.webapp.action.core.contentPage; 17 18 import com.blandware.atleap.common.Constants; 19 import com.blandware.atleap.model.core.ContentPage; 20 import com.blandware.atleap.model.core.Layout; 21 import com.blandware.atleap.search.SearchManager; 22 import com.blandware.atleap.service.core.PageManager; 23 import com.blandware.atleap.service.exception.BeanAlreadyExistsException; 24 import com.blandware.atleap.webapp.action.core.BaseAction; 25 import com.blandware.atleap.webapp.form.ContentPageForm; 26 import com.blandware.atleap.webapp.util.core.CacheUtil; 27 import com.blandware.atleap.webapp.util.core.WebappUtil; 28 import org.apache.commons.validator.GenericValidator; 29 import org.apache.struts.action.ActionForm; 30 import org.apache.struts.action.ActionForward; 31 import org.apache.struts.action.ActionMapping; 32 import org.apache.struts.action.ActionMessage; 33 import org.apache.struts.action.ActionMessages; 34 import org.springframework.orm.ObjectOptimisticLockingFailureException; 35 36 import javax.servlet.http.HttpServletRequest ; 37 import javax.servlet.http.HttpServletResponse ; 38 39 59 public final class ChangeContentPageActivityAction extends BaseAction { 60 69 public ActionForward execute(ActionMapping mapping, ActionForm form, 70 HttpServletRequest request, HttpServletResponse response) throws Exception { 71 72 ContentPageForm contentPageForm = (ContentPageForm) form; 73 74 Long contentPageId = null; 75 if ( !GenericValidator.isBlankOrNull(contentPageForm.getId()) ) { 76 contentPageId = Long.valueOf(contentPageForm.getId()); 77 } else { 78 if ( log.isWarnEnabled() ) { 79 log.warn("Missing content page ID. Returning to list."); 80 } 81 return mapping.findForward("listContentPages"); 82 } 83 84 PageManager pageManager = (PageManager) getBean(Constants.PAGE_MANAGER_BEAN); 85 ContentPage contentPage = pageManager.retrieveContentPage(contentPageId); 86 87 if ( contentPage == null ) { 88 ActionMessages errors = new ActionMessages(); 90 errors.add("contentPageNotFound", new ActionMessage("core.contentPage.errors.notFound")); 91 saveErrors(request, errors); 92 return mapping.findForward("listContentPages"); 93 } 94 95 Layout layout = contentPage.getLayout(); 96 97 String mode = request.getParameter("mode"); 98 boolean alreadyActive = contentPage.getActive() != null && contentPage.getActive().booleanValue(); 99 boolean active = true; 100 if ( !"active".equalsIgnoreCase(mode) ) { 101 active = false; 102 } 103 104 try { 105 106 if ( (alreadyActive && !active) || (!alreadyActive && active) ) { 107 contentPage.setActive(Boolean.valueOf(active)); 108 pageManager.updateContentPage(contentPage, layout.getId()); 109 110 SearchManager searchManager = SearchManager.getInstance(request.getSession().getServletContext()); 111 searchManager.unIndexPage(contentPage.getUri(), request); 112 113 CacheUtil cacheUtil = CacheUtil.getInstance(request); 114 115 if ( active ) { 116 searchManager.indexPage(contentPage, request); 117 118 CacheUtil.ContentPageData cpd = new CacheUtil.ContentPageData(layout.getCpDefinition(), WebappUtil.rolesToString(contentPage.getRoles()), contentPage.getCacheMaxAge()); 119 cacheUtil.putContentPageInCache(cpd, contentPage.getUri()); 120 121 } else { 122 cacheUtil.flushContentPageCache(contentPage.getUri()); 123 } 124 } 125 126 127 } catch ( BeanAlreadyExistsException e ) { 128 ActionMessages errors = new ActionMessages(); 130 errors.add("contentPageAlreadyExists", new ActionMessage("core.contentPage.errors.alreadyExists")); 131 saveErrors(request, errors); 132 saveToken(request); 133 return mapping.getInputForward(); 134 } catch ( ObjectOptimisticLockingFailureException e ) { 135 ActionMessages errors = new ActionMessages(); 137 errors.add("updateFailed", new ActionMessage("core.contentPage.errors.updateFailed")); 138 saveErrors(request, errors); 139 return mapping.findForward("listContentPages"); 140 } 141 return mapping.findForward("listContentPages"); 142 } 143 } | Popular Tags |