1 41 package com.mvnforum.user; 42 43 import java.sql.Timestamp ; 44 import java.util.Locale ; 45 46 import com.mvnforum.MVNForumConfig; 47 import com.mvnforum.MVNForumResourceBundle; 48 import com.mvnforum.auth.*; 49 import com.mvnforum.db.*; 50 import net.myvietnam.mvncore.exception.*; 51 import net.myvietnam.mvncore.util.*; 52 import net.myvietnam.mvncore.web.GenericRequest; 53 54 public class FavoriteThreadWebHandler { 55 56 private OnlineUserManager userManager = OnlineUserManager.getInstance(); 57 58 public FavoriteThreadWebHandler() { 59 } 60 61 public void processAdd(GenericRequest request) 62 throws BadInputException, CreateException, DatabaseException, ForeignKeyNotFoundException, 63 ObjectNotFoundException, AuthenticationException, AssertionException { 64 65 OnlineUser onlineUser = userManager.getOnlineUser(request); 66 MVNForumPermission permission = onlineUser.getPermission(); 67 permission.ensureIsAuthenticated(); 68 69 int memberID = onlineUser.getMemberID(); 70 71 int currentFavoriteCount = DAOFactory.getFavoriteThreadDAO().getNumberOfFavoriteThreads_inMember(memberID); 73 int maxFavorites = MVNForumConfig.getMaxFavoriteThread(); 74 if (currentFavoriteCount >= maxFavorites) { 75 Locale locale = I18nUtil.getLocaleInRequest(request); 77 String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.over_favorite_quota", new Object [] {new Integer (maxFavorites)}); 78 throw new BadInputException(localizedMessage); 79 } 81 82 Timestamp now = DateUtil.getCurrentGMTTimestamp(); 83 int threadID = GenericParamUtil.getParameterInt(request, "thread"); 84 Timestamp favoriteCreationDate = now; 85 int favoriteType = 0; int favoriteOption = 0; int favoriteStatus = 0; Locale locale = I18nUtil.getLocaleInRequest(request); 89 90 ThreadBean threadBean = null; 91 try { 92 threadBean = DAOFactory.getThreadDAO().getThread(threadID); 93 } catch (ObjectNotFoundException e) { 94 String localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.threadid_not_exists", new Object [] {new Integer (threadID)}); 95 throw new ObjectNotFoundException(localizedMessage); 96 } 97 int forumID = threadBean.getForumID(); 98 99 ForumCache.getInstance().getBean(forumID).ensureNotDisabledForum(); 100 101 permission.ensureCanReadPost(forumID); 103 104 try { 106 DAOFactory.getFavoriteThreadDAO().create(memberID, threadID, forumID, 107 favoriteCreationDate, favoriteType, favoriteOption, 108 favoriteStatus); 109 } catch (DuplicateKeyException ex) { 110 } 112 } 113 114 public void processDelete(GenericRequest request) 115 throws BadInputException, DatabaseException, ObjectNotFoundException, 116 AuthenticationException, AssertionException { 117 118 OnlineUser onlineUser = userManager.getOnlineUser(request); 119 MVNForumPermission permission = onlineUser.getPermission(); 120 permission.ensureIsAuthenticated(); 121 122 int memberID = onlineUser.getMemberID(); 124 int threadID = GenericParamUtil.getParameterInt(request, "thread"); 125 126 DAOFactory.getFavoriteThreadDAO().delete(memberID, threadID); 127 } 128 } 129 | Popular Tags |