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.ContentResource; 20 import com.blandware.atleap.service.core.ContentResourceManager; 21 import com.blandware.atleap.webapp.action.core.BaseAction; 22 import com.blandware.atleap.webapp.form.core.UploadContentResourceForm; 23 import com.blandware.atleap.webapp.util.core.ResourceTypesManager; 24 import com.blandware.atleap.webapp.util.core.WebappConstants; 25 import org.apache.commons.validator.GenericValidator; 26 import org.apache.struts.action.ActionForm; 27 import org.apache.struts.action.ActionForward; 28 import org.apache.struts.action.ActionMapping; 29 import org.apache.struts.action.ActionMessage; 30 import org.apache.struts.action.ActionMessages; 31 import org.apache.struts.upload.FormFile; 32 33 import javax.servlet.http.HttpServletRequest ; 34 import javax.servlet.http.HttpServletResponse ; 35 import java.util.List ; 36 37 65 public final class UpdateContentResourceAction extends BaseAction { 66 67 76 public ActionForward execute(ActionMapping mapping, ActionForm form, 77 HttpServletRequest request, HttpServletResponse response) throws Exception { 78 if ( isCancelled(request) ) { 79 resetToken(request); 80 request.getSession().removeAttribute(WebappConstants.CONTENT_RESOURCE_ID_KEY); 81 return mapping.findForward("listContentResources"); 82 } 83 84 Long contentResourceId = null; 85 if ( !GenericValidator.isBlankOrNull(request.getParameter("contentResourceId")) ) { 86 contentResourceId = Long.valueOf(request.getParameter("contentResourceId")); 87 } else if ( request.getAttribute(WebappConstants.CONTENT_RESOURCE_ID_KEY) != null ) { 88 contentResourceId = (Long ) request.getAttribute(WebappConstants.CONTENT_RESOURCE_ID_KEY); 89 } else if ( request.getSession().getAttribute(WebappConstants.CONTENT_RESOURCE_ID_KEY) != null ) { 90 contentResourceId = (Long ) request.getSession().getAttribute(WebappConstants.CONTENT_RESOURCE_ID_KEY); 91 } else { 92 return mapping.findForward("listContentResources"); 93 } 94 request.setAttribute(WebappConstants.CONTENT_RESOURCE_ID_KEY, contentResourceId); 95 96 if ( log.isDebugEnabled() ) { 97 log.debug("Updating content resource with ID=" + contentResourceId); 98 } 99 100 UploadContentResourceForm uploadContentResourceForm = (UploadContentResourceForm) form; 101 102 ContentResourceManager contentResourceManager = (ContentResourceManager) getBean(Constants.CONTENT_RESOURCE_MANAGER_BEAN); 103 ContentResource contentResource = contentResourceManager.retrieveContentResource(contentResourceId); 104 105 if ( contentResource == null ) { 106 ActionMessages errors = new ActionMessages(); 108 errors.add("contentResourceNotFound", new ActionMessage("core.contentResource.errors.notFound")); 109 saveErrors(request, errors); 110 return mapping.findForward("listContentResources"); 111 } 112 113 FormFile file = uploadContentResourceForm.getFile(); 114 String resourceType = contentResource.getType(); 115 116 if ( file != null && file.getFileName() != null && file.getFileName().trim().length() > 0 && file.getFileSize() > 0 ) { 118 String fileName = file.getFileName(); 119 ResourceTypesManager resourceTypesManager = ResourceTypesManager.getInstance(request.getSession().getServletContext()); 120 String newResourceType = resourceTypesManager.getResourceTypeByFileName(fileName); 121 if (newResourceType == null) { 122 newResourceType = Constants.RESOURCE_TYPE_FILE; 123 } 124 if ( !resourceType.equalsIgnoreCase(newResourceType) ) { 125 file.destroy(); 126 request.getSession().removeAttribute(WebappConstants.CONTENT_RESOURCE_ID_KEY); 127 List supportedExtensions = resourceTypesManager.getResourceTypeExtensions(resourceType); 128 ActionMessages errors = new ActionMessages(); 129 errors.add("contentResourceDifferentType", new ActionMessage("core.contentResource.errors.differentType", supportedExtensions.toString())); 130 request.getSession().setAttribute(WebappConstants.CONTENT_RESOURCE_ID_KEY, contentResourceId); 131 saveErrors(request, errors); 132 saveToken(request); 133 return mapping.getInputForward(); 134 } 135 136 request.getSession().setAttribute(WebappConstants.UPLOAD_CONTENT_RESOURCE_FORM_KEY, uploadContentResourceForm); 137 } else { 138 request.getSession().removeAttribute(WebappConstants.UPLOAD_CONTENT_RESOURCE_FORM_KEY); 139 } 140 141 if ( resourceType.equalsIgnoreCase(Constants.RESOURCE_TYPE_IMAGE) ) { 142 return mapping.findForward("callUpdateImage"); 143 } else if ( resourceType.equalsIgnoreCase(Constants.RESOURCE_TYPE_FILE) ) { 144 return mapping.findForward("callUpdateFile"); 145 } else if ( resourceType.equalsIgnoreCase(Constants.RESOURCE_TYPE_DOCUMENT) ) { 146 return mapping.findForward("callUpdateDocument"); 147 } else { 148 if ( file != null ) { 149 file.destroy(); 150 } 151 throw new Exception ("Unexpected error"); 152 } 153 154 } 155 } | Popular Tags |