1 25 26 package com.j2biz.blogunity.web.actions.my; 27 28 import java.io.File ; 29 30 import javax.servlet.http.HttpServletRequest ; 31 import javax.servlet.http.HttpServletResponse ; 32 33 import org.apache.commons.lang.StringUtils; 34 import org.apache.commons.logging.Log; 35 import org.apache.commons.logging.LogFactory; 36 37 import com.j2biz.blogunity.BlogunityManager; 38 import com.j2biz.blogunity.dao.UserpicDAO; 39 import com.j2biz.blogunity.exception.BlogunityException; 40 import com.j2biz.blogunity.i18n.I18N; 41 import com.j2biz.blogunity.i18n.I18NStatusFactory; 42 import com.j2biz.blogunity.pojo.SystemConfiguration; 43 import com.j2biz.blogunity.pojo.Userpic; 44 import com.j2biz.blogunity.util.HibernateUtil; 45 import com.j2biz.blogunity.util.ResourceUtils; 46 import com.j2biz.blogunity.web.ActionResultFactory; 47 import com.j2biz.blogunity.web.FormError; 48 import com.j2biz.blogunity.web.FormErrorList; 49 import com.j2biz.blogunity.web.IActionResult; 50 51 58 public class EditUserpicsExecAction extends MyAbstractAction { 59 62 private static final Log log = LogFactory.getLog(EditUserpicsExecAction.class); 63 64 private static final IActionResult USERPICS_FORM_FORWARD = ActionResultFactory 65 .buildForward("/jsp/my/userpicsForm.jsp"); 66 67 70 76 public IActionResult execute(HttpServletRequest request, HttpServletResponse response) 77 throws BlogunityException { 78 79 String name = request.getParameter("name"); 80 String url = request.getParameter("url"); 81 82 FormErrorList errors = new FormErrorList(); 83 if (StringUtils.isEmpty(name)) errors.add(new FormError("name", "Name is empty!")); 84 else if (user.containsUserpicWithName(name)) { 85 errors.add(new FormError("name", "Userpic with name '" + name + "' already exists!")); 86 } 87 88 if (StringUtils.isEmpty(url)) errors.add(new FormError("url", "Url is empty!")); 89 90 String extension = StringUtils.substringAfterLast(url, "."); 91 92 Userpic pic = new Userpic(name, "/users/" + user.getNickname() + "/userpics/" 93 + System.currentTimeMillis() + "." + extension, false, user); 94 95 request.setAttribute("newPic", pic); 96 97 int userpicsPerUser = com.j2biz.blogunity.BlogunityManager.getSystemConfiguration() 98 .getUserpicsPerUser(); 99 int hasAlreadyUserpics = user.getUserpics().size(); 100 if (hasAlreadyUserpics >= userpicsPerUser && userpicsPerUser != -1) { 101 errors.add(new FormError("name", "You have already defined maximal number(" 102 + hasAlreadyUserpics + ") of userpics!")); 103 } 104 105 if (errors.size() > 0) { 106 request.setAttribute("errors", errors); 107 request.setAttribute("avatars", EditUserpicsFormAction.getAvatars(user)); 108 return USERPICS_FORM_FORWARD; 109 } 110 111 if (!user.containsUserpicWithUrl(pic.getUrl())) { 112 (new UserpicDAO()).createUserpic(pic); 113 114 try { 115 copyUserpic(pic, url); 116 } catch (BlogunityException e1) { 117 log.error("Error copying userpic!", e1); 118 HibernateUtil.rollbackTransaction(); 119 throw new BlogunityException(I18NStatusFactory.create(I18N.ERRORS.CREATE_FILE, e1)); 120 } 121 122 } 123 124 return navigationStack.peek(); 126 127 } 128 129 133 private void copyUserpic(Userpic pic, String url) throws BlogunityException { 134 135 SystemConfiguration config = BlogunityManager.getSystemConfiguration(); 136 File userpicDir = new File (config.getUsersDirectory(), user.getNickname() + "/userpics"); 137 if (!userpicDir.exists()) { 138 boolean result = userpicDir.mkdirs(); 139 if (!result) 140 throw new BlogunityException(I18NStatusFactory.create( 141 I18N.ERRORS.CREATE_DIRECTORY, userpicDir.getAbsolutePath())); 142 } 143 144 File source = new File (BlogunityManager.getServletContext().getRealPath(url)); 145 File destination = new File (config.getDataDir(), pic.getUrl()); 146 147 ResourceUtils.copyFile(source, destination); 148 } 149 } | Popular Tags |