KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > mvnforum > user > MessageFolderWebHandler


1 /*
2  * $Header: /cvsroot/mvnforum/mvnforum/src/com/mvnforum/user/MessageFolderWebHandler.java,v 1.24 2006/04/14 17:05:27 minhnn Exp $
3  * $Author: minhnn $
4  * $Revision: 1.24 $
5  * $Date: 2006/04/14 17:05:27 $
6  *
7  * ====================================================================
8  *
9  * Copyright (C) 2002-2006 by MyVietnam.net
10  *
11  * All copyright notices regarding mvnForum MUST remain
12  * intact in the scripts and in the outputted HTML.
13  * The "powered by" text/logo with a link back to
14  * http://www.mvnForum.com and http://www.MyVietnam.net in
15  * the footer of the pages MUST remain visible when the pages
16  * are viewed on the internet or intranet.
17  *
18  * This program is free software; you can redistribute it and/or modify
19  * it under the terms of the GNU General Public License as published by
20  * the Free Software Foundation; either version 2 of the License, or
21  * any later version.
22  *
23  * This program is distributed in the hope that it will be useful,
24  * but WITHOUT ANY WARRANTY; without even the implied warranty of
25  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
26  * GNU General Public License for more details.
27  *
28  * You should have received a copy of the GNU General Public License
29  * along with this program; if not, write to the Free Software
30  * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
31  *
32  * Support can be obtained from support forums at:
33  * http://www.mvnForum.com/mvnforum/index
34  *
35  * Correspondence and Marketing Questions can be sent to:
36  * info at MyVietnam net
37  *
38  * @author: Minh Nguyen
39  * @author: Mai Nguyen
40  */

41 package com.mvnforum.user;
42
43 import java.sql.Timestamp JavaDoc;
44 import java.util.*;
45
46 import com.mvnforum.*;
47 import com.mvnforum.auth.*;
48 import com.mvnforum.common.PrivateMessageUtil;
49 import com.mvnforum.db.DAOFactory;
50 import com.mvnforum.db.MessageFolderBean;
51 import net.myvietnam.mvncore.exception.*;
52 import net.myvietnam.mvncore.util.*;
53 import net.myvietnam.mvncore.web.GenericRequest;
54 import org.apache.commons.logging.Log;
55 import org.apache.commons.logging.LogFactory;
56
57 public class MessageFolderWebHandler {
58
59     private static Log log = LogFactory.getLog(MessageFolderWebHandler.class);
60
61     private OnlineUserManager onlineUserManager = OnlineUserManager.getInstance();
62
63     public MessageFolderWebHandler() {
64     }
65
66     public void prepareAdd(GenericRequest request)
67         throws AssertionException, DatabaseException, AuthenticationException {
68
69         Locale locale = I18nUtil.getLocaleInRequest(request);
70
71         if (MVNForumConfig.getEnablePrivateMessage() == false) {
72             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.AssertionException.private_message_disabled");
73             throw new AssertionException(localizedMessage);
74             //throw new AssertionException("Cannot operate with private messages. Because the private message feature is disabled");
75
}
76
77         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
78         MVNForumPermission permission = onlineUser.getPermission();
79         permission.ensureIsAuthenticated();
80         permission.ensureCanUseMessage();
81     }
82
83     public void processAdd(GenericRequest request)
84         throws CreateException, DuplicateKeyException, DatabaseException, BadInputException,
85         AssertionException, AuthenticationException, ForeignKeyNotFoundException {
86
87         Locale locale = I18nUtil.getLocaleInRequest(request);
88
89         if (MVNForumConfig.getEnablePrivateMessage() == false) {
90             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.AssertionException.private_message_disabled");
91             throw new AssertionException(localizedMessage);
92             //throw new AssertionException("Cannot operate with private messages. Because the private message feature is disabled");
93
}
94
95         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
96         MVNForumPermission permission = onlineUser.getPermission();
97         permission.ensureIsAuthenticated();
98         permission.ensureCanUseMessage();
99
100         int folderStatus = 0;
101         int folderOption = 0;
102         int folderType = 0;
103         Timestamp JavaDoc now = DateUtil.getCurrentGMTTimestamp();
104         String JavaDoc folderName = GenericParamUtil.getParameterSafe(request, "FolderName", true);
105         StringUtil.checkGoodName(folderName);
106
107         int folderOrder = DAOFactory.getMessageFolderDAO().getMaxFolderOrder(onlineUser.getMemberID());
108         folderOrder++;// One value more than the current max value
109
if (folderOrder < 10) folderOrder = 10;
110
111         DAOFactory.getMessageFolderDAO().create(folderName, onlineUser.getMemberID(),
112                                                 folderOrder, folderStatus, folderOption, folderType, now, now);
113     }
114
115     public void prepareList(GenericRequest request)
116         throws AssertionException, DatabaseException, AuthenticationException {
117
118         Locale locale = I18nUtil.getLocaleInRequest(request);
119
120         if (MVNForumConfig.getEnablePrivateMessage() == false) {
121             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.AssertionException.private_message_disabled");
122             throw new AssertionException(localizedMessage);
123             //throw new AssertionException("Cannot operate with private messages. Because the private message feature is disabled");
124
}
125
126         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
127         MVNForumPermission permission = onlineUser.getPermission();
128         permission.ensureIsAuthenticated();
129         permission.ensureCanUseMessage();
130
131         int memberID = onlineUser.getMemberID();
132
133         Collection messageFolderBeans = DAOFactory.getMessageFolderDAO().getMessageFolders_inMember(memberID);
134         for (Iterator iter = messageFolderBeans.iterator(); iter.hasNext(); ) {
135             MessageFolderBean messageFolder = (MessageFolderBean) iter.next();
136             int messageCount;
137             int unreadMessageCount;
138             if (messageFolder.getFolderName().equalsIgnoreCase(MVNForumConstant.MESSAGE_FOLDER_DRAFT)) {
139                 // also get the draft public messages
140
messageCount = DAOFactory.getMessageDAO().getNumberOfAllMessages_inMember_inFolder(memberID, messageFolder.getFolderName());
141                 unreadMessageCount = DAOFactory.getMessageDAO().getNumberOfUnreadAllMessages_inMember_inFolder(memberID, messageFolder.getFolderName());
142             } else {
143                 messageCount = DAOFactory.getMessageDAO().getNumberOfNonPublicMessages_inMember_inFolder(memberID, messageFolder.getFolderName());
144                 unreadMessageCount = DAOFactory.getMessageDAO().getNumberOfUnreadNonPublicMessages_inMember_inFolder(memberID, messageFolder.getFolderName());
145             }
146             messageFolder.setMessageCount(messageCount);
147             messageFolder.setUnreadMessageCount(unreadMessageCount);
148         }
149         request.setAttribute("FolderMessageBeans", messageFolderBeans);
150     }
151
152     public void prepareDelete(GenericRequest request)
153         throws AssertionException, DatabaseException, AuthenticationException, BadInputException, ObjectNotFoundException {
154
155         Locale locale = I18nUtil.getLocaleInRequest(request);
156
157         if (MVNForumConfig.getEnablePrivateMessage() == false) {
158             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.AssertionException.private_message_disabled");
159             throw new AssertionException(localizedMessage);
160             //throw new AssertionException("Cannot operate with private messages. Because the private message feature is disabled");
161
}
162
163         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
164         MVNForumPermission permission = onlineUser.getPermission();
165         permission.ensureIsAuthenticated();
166         permission.ensureCanUseMessage();
167
168         String JavaDoc folderName = GenericParamUtil.getParameterSafe(request, "folder", true);
169         StringUtil.checkGoodName(folderName);
170
171         if ((folderName.equalsIgnoreCase(MVNForumConstant.MESSAGE_FOLDER_INBOX)) ||
172             (folderName.equalsIgnoreCase(MVNForumConstant.MESSAGE_FOLDER_SENT)) ||
173             (folderName.equalsIgnoreCase(MVNForumConstant.MESSAGE_FOLDER_DRAFT)) ||
174             (folderName.equalsIgnoreCase(MVNForumConstant.MESSAGE_FOLDER_TRASH))) {
175             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_delete_default_folder");
176             throw new BadInputException(localizedMessage);
177         }
178
179         //Checking if this Folder belong to current Member
180
MessageFolderBean messageFolderBean = null;
181         try {
182             messageFolderBean = DAOFactory.getMessageFolderDAO().getMessageFolder(folderName, onlineUser.getMemberID());
183         } catch (ObjectNotFoundException onf) {
184             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.messagefolder_not_exists", new Object JavaDoc[] {folderName});
185             throw new ObjectNotFoundException(localizedMessage);
186         }
187
188         int numberOfMessages = DAOFactory.getMessageDAO().getNumberOfNonPublicMessages_inMember_inFolder(onlineUser.getMemberID(), folderName);
189         int numberOfUnreadMessages = DAOFactory.getMessageDAO().getNumberOfUnreadNonPublicMessages_inMember_inFolder(onlineUser.getMemberID(), folderName);
190
191         request.setAttribute("MessageFolderBean", messageFolderBean);
192         request.setAttribute("NumberOfMessages", new Integer JavaDoc(numberOfMessages));
193         request.setAttribute("NumberOfUnreadMessages", new Integer JavaDoc(numberOfUnreadMessages));
194     }
195
196     public void processDelete(GenericRequest request)
197         throws AssertionException, DatabaseException, AuthenticationException,
198         BadInputException, ObjectNotFoundException {
199
200         Locale locale = I18nUtil.getLocaleInRequest(request);
201
202         if (MVNForumConfig.getEnablePrivateMessage() == false) {
203             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.AssertionException.private_message_disabled");
204             throw new AssertionException(localizedMessage);
205             //throw new AssertionException("Cannot operate with private messages. Because the private message feature is disabled");
206
}
207
208         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
209         MVNForumPermission permission = onlineUser.getPermission();
210         permission.ensureIsAuthenticated();
211         permission.ensureCanUseMessage();
212
213         // now check the password
214
MyUtil.ensureCorrectCurrentPassword(request);
215
216         int memberID = onlineUser.getMemberID();
217         String JavaDoc folderName = GenericParamUtil.getParameterSafe(request, "folder", true);
218         StringUtil.checkGoodName(folderName);
219
220         if ((folderName.equalsIgnoreCase(MVNForumConstant.MESSAGE_FOLDER_INBOX)) ||
221             (folderName.equalsIgnoreCase(MVNForumConstant.MESSAGE_FOLDER_SENT)) ||
222             (folderName.equalsIgnoreCase(MVNForumConstant.MESSAGE_FOLDER_DRAFT)) ||
223             (folderName.equalsIgnoreCase(MVNForumConstant.MESSAGE_FOLDER_TRASH))) {
224             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_delete_default_folder");
225             throw new BadInputException(localizedMessage);
226         }
227
228         try {
229            DAOFactory.getMessageFolderDAO().findByPrimaryKey(folderName, memberID);
230         } catch (ObjectNotFoundException onf) {
231             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.messagefolder_not_exists", new Object JavaDoc[] {folderName});
232             throw new ObjectNotFoundException(localizedMessage);
233         }
234
235         PrivateMessageUtil.deleteMessageFolderInDatabase(folderName, memberID);
236     }
237
238     public void processUpdateOrder(GenericRequest request)
239         throws AssertionException, DatabaseException, AuthenticationException,
240         BadInputException, ObjectNotFoundException {
241
242         Locale locale = I18nUtil.getLocaleInRequest(request);
243
244         if (MVNForumConfig.getEnablePrivateMessage() == false) {
245             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.AssertionException.private_message_disabled");
246             throw new AssertionException(localizedMessage);
247             //throw new AssertionException("Cannot operate with private messages. Because the private message feature is disabled");
248
}
249
250         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
251         MVNForumPermission permission = onlineUser.getPermission();
252         permission.ensureIsAuthenticated();
253         permission.ensureCanUseMessage();
254
255         int memberID = onlineUser.getMemberID();
256         String JavaDoc action = GenericParamUtil.getParameterSafe(request, "action", true);
257         String JavaDoc folderName = GenericParamUtil.getParameterSafe(request, "folder", true);
258         StringUtil.checkGoodName(folderName);
259
260         try {
261            DAOFactory.getMessageFolderDAO().findByPrimaryKey(folderName, memberID);
262         } catch (ObjectNotFoundException onf) {
263             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.messagefolder_not_exists", new Object JavaDoc[] {folderName});
264             throw new ObjectNotFoundException(localizedMessage);
265         }
266
267         Timestamp JavaDoc now = DateUtil.getCurrentGMTTimestamp();
268
269         if (action.equals("up")) {
270             DAOFactory.getMessageFolderDAO().decreaseFolderOrder(folderName, memberID, now);
271         } else if (action.equals("down")) {
272             DAOFactory.getMessageFolderDAO().increaseFolderOrder(folderName, memberID, now);
273         } else {
274             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_update_order.unknown_action", new Object JavaDoc[] {action});
275             throw new BadInputException(localizedMessage);
276             //throw new BadInputException("Cannot update Order: unknown action: " + action);
277
}
278     }
279
280 }
281
Popular Tags