1 41 package com.mvnforum.user; 42 43 import java.sql.Timestamp ; 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 localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.AssertionException.private_message_disabled"); 73 throw new AssertionException(localizedMessage); 74 } 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 localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.AssertionException.private_message_disabled"); 91 throw new AssertionException(localizedMessage); 92 } 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 now = DateUtil.getCurrentGMTTimestamp(); 104 String folderName = GenericParamUtil.getParameterSafe(request, "FolderName", true); 105 StringUtil.checkGoodName(folderName); 106 107 int folderOrder = DAOFactory.getMessageFolderDAO().getMaxFolderOrder(onlineUser.getMemberID()); 108 folderOrder++; 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 localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.AssertionException.private_message_disabled"); 122 throw new AssertionException(localizedMessage); 123 } 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 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 localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.AssertionException.private_message_disabled"); 159 throw new AssertionException(localizedMessage); 160 } 162 163 OnlineUser onlineUser = onlineUserManager.getOnlineUser(request); 164 MVNForumPermission permission = onlineUser.getPermission(); 165 permission.ensureIsAuthenticated(); 166 permission.ensureCanUseMessage(); 167 168 String 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 localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_delete_default_folder"); 176 throw new BadInputException(localizedMessage); 177 } 178 179 MessageFolderBean messageFolderBean = null; 181 try { 182 messageFolderBean = DAOFactory.getMessageFolderDAO().getMessageFolder(folderName, onlineUser.getMemberID()); 183 } catch (ObjectNotFoundException onf) { 184 String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.messagefolder_not_exists", new Object [] {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 (numberOfMessages)); 193 request.setAttribute("NumberOfUnreadMessages", new Integer (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 localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.AssertionException.private_message_disabled"); 204 throw new AssertionException(localizedMessage); 205 } 207 208 OnlineUser onlineUser = onlineUserManager.getOnlineUser(request); 209 MVNForumPermission permission = onlineUser.getPermission(); 210 permission.ensureIsAuthenticated(); 211 permission.ensureCanUseMessage(); 212 213 MyUtil.ensureCorrectCurrentPassword(request); 215 216 int memberID = onlineUser.getMemberID(); 217 String 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 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 localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.messagefolder_not_exists", new Object [] {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 localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.AssertionException.private_message_disabled"); 246 throw new AssertionException(localizedMessage); 247 } 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 action = GenericParamUtil.getParameterSafe(request, "action", true); 257 String 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 localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.messagefolder_not_exists", new Object [] {folderName}); 264 throw new ObjectNotFoundException(localizedMessage); 265 } 266 267 Timestamp 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 localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.cannot_update_order.unknown_action", new Object [] {action}); 275 throw new BadInputException(localizedMessage); 276 } 278 } 279 280 } 281 | Popular Tags |