KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > j2biz > blogunity > web > actions > my > EditUserpicsExecAction


1 /*
2  * $Id: EditUserpicsExecAction.java,v 1.5 2005/01/17 21:35:45 michelson Exp $
3  *
4  * Copyright (c) 2004 j2biz Group, http://www.j2biz.com
5  * Koeln / Duesseldorf , Germany
6  *
7  * @author Max Kalina
8  *
9  *
10  * This program is free software; you can redistribute it and/or modify
11  * it under the terms of the GNU General Public License as published by
12  * the Free Software Foundation; either version 2 of the License, or
13  * (at your option) any later version.
14  *
15  * This program is distributed in the hope that it will be useful,
16  * but WITHOUT ANY WARRANTY; without even the implied warranty of
17  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
18  * GNU General Public License for more details.
19  *
20  * You should have received a copy of the GNU General Public License
21  * along with this program; if not, write to the Free Software
22  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
23  *
24  */

25
26 package com.j2biz.blogunity.web.actions.my;
27
28 import java.io.File JavaDoc;
29
30 import javax.servlet.http.HttpServletRequest JavaDoc;
31 import javax.servlet.http.HttpServletResponse JavaDoc;
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 /**
52  * @author michelson
53  * @version $$
54  * @since 0.1
55  *
56  *
57  */

58 public class EditUserpicsExecAction extends MyAbstractAction {
59     /**
60      * Logger for this class
61      */

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     // private static final IActionResult USERPICS_FORM_REDIRECT =
68
// ActionResultFactory.buildRedirect("/my/editUserpicsForm");
69

70     /*
71      * (non-Javadoc)
72      *
73      * @see com.j2biz.blogunity.web.actions.AbstractAction#execute(javax.servlet.http.HttpServletRequest,
74      * javax.servlet.http.HttpServletResponse)
75      */

76     public IActionResult execute(HttpServletRequest JavaDoc request, HttpServletResponse JavaDoc response)
77             throws BlogunityException {
78
79         String JavaDoc name = request.getParameter("name");
80         String JavaDoc 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 JavaDoc 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 USERPICS_FORM_REDIRECT;
125
return navigationStack.peek();
126
127     }
128
129     /**
130      * @param pic
131      * @param url
132      */

133     private void copyUserpic(Userpic pic, String JavaDoc url) throws BlogunityException {
134
135         SystemConfiguration config = BlogunityManager.getSystemConfiguration();
136         File JavaDoc userpicDir = new File JavaDoc(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 JavaDoc source = new File JavaDoc(BlogunityManager.getServletContext().getRealPath(url));
145         File JavaDoc destination = new File JavaDoc(config.getDataDir(), pic.getUrl());
146
147         ResourceUtils.copyFile(source, destination);
148     }
149 }
Popular Tags