001: /*
002: * $Header: /cvsroot/mvnforum/mvnforum/src/com/mvnforum/user/FavoriteThreadWebHandler.java,v 1.25 2008/01/15 11:17:58 minhnn Exp $
003: * $Author: minhnn $
004: * $Revision: 1.25 $
005: * $Date: 2008/01/15 11:17:58 $
006: *
007: * ====================================================================
008: *
009: * Copyright (C) 2002-2007 by MyVietnam.net
010: *
011: * All copyright notices regarding mvnForum MUST remain
012: * intact in the scripts and in the outputted HTML.
013: * The "powered by" text/logo with a link back to
014: * http://www.mvnForum.com and http://www.MyVietnam.net in
015: * the footer of the pages MUST remain visible when the pages
016: * are viewed on the internet or intranet.
017: *
018: * This program is free software; you can redistribute it and/or modify
019: * it under the terms of the GNU General Public License as published by
020: * the Free Software Foundation; either version 2 of the License, or
021: * any later version.
022: *
023: * This program is distributed in the hope that it will be useful,
024: * but WITHOUT ANY WARRANTY; without even the implied warranty of
025: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
026: * GNU General Public License for more details.
027: *
028: * You should have received a copy of the GNU General Public License
029: * along with this program; if not, write to the Free Software
030: * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
031: *
032: * Support can be obtained from support forums at:
033: * http://www.mvnForum.com/mvnforum/index
034: *
035: * Correspondence and Marketing Questions can be sent to:
036: * info at MyVietnam net
037: *
038: * @author: Minh Nguyen
039: * @author: Mai Nguyen
040: */
041: package com.mvnforum.user;
042:
043: import java.sql.Timestamp;
044: import java.util.Locale;
045:
046: import com.mvnforum.MVNForumConfig;
047: import com.mvnforum.MVNForumResourceBundle;
048: import com.mvnforum.auth.*;
049: import com.mvnforum.db.*;
050: import net.myvietnam.mvncore.exception.*;
051: import net.myvietnam.mvncore.util.*;
052: import net.myvietnam.mvncore.web.GenericRequest;
053:
054: public class FavoriteThreadWebHandler {
055:
056: private OnlineUserManager onlineUserManager = OnlineUserManager
057: .getInstance();
058:
059: public FavoriteThreadWebHandler() {
060: }
061:
062: public void processAdd(GenericRequest request)
063: throws BadInputException, CreateException,
064: DatabaseException, ForeignKeyNotFoundException,
065: ObjectNotFoundException, AuthenticationException {
066:
067: OnlineUser onlineUser = onlineUserManager
068: .getOnlineUser(request);
069: MVNForumPermission permission = onlineUser.getPermission();
070: permission.ensureIsAuthenticated();
071:
072: int memberID = onlineUser.getMemberID();
073:
074: // check to make sure that this user does not exceed his favorite max
075: int currentFavoriteCount = DAOFactory.getFavoriteThreadDAO()
076: .getNumberOfFavoriteThreads_inMember(memberID);
077: int maxFavorites = MVNForumConfig.getMaxFavoriteThreads();
078: if (currentFavoriteCount >= maxFavorites) {
079: //@todo: choose a better exception class
080: Locale locale = I18nUtil.getLocaleInRequest(request);
081: String localizedMessage = MVNForumResourceBundle
082: .getString(
083: locale,
084: "mvncore.exception.BadInputException.over_favorite_quota",
085: new Object[] { new Integer(maxFavorites) });
086: throw new BadInputException(localizedMessage);
087: //throw new BadInputException("You have already use all your favorite quota (" + maxFavorites + ").");
088: }
089:
090: Timestamp now = DateUtil.getCurrentGMTTimestamp();
091: int threadID = GenericParamUtil.getParameterInt(request,
092: "thread");
093: Timestamp favoriteCreationDate = now;
094: int favoriteType = 0;//@todo implement it later
095: int favoriteOption = 0;//@todo implement it later
096: int favoriteStatus = 0;//@todo implement it later
097: Locale locale = I18nUtil.getLocaleInRequest(request);
098:
099: ThreadBean threadBean = null;
100: try {
101: threadBean = DAOFactory.getThreadDAO().getThread(threadID);
102: } catch (ObjectNotFoundException e) {
103: String localizedMessage = MVNForumResourceBundle
104: .getString(
105: locale,
106: "mvncore.exception.ObjectNotFoundException.threadid_not_exists",
107: new Object[] { new Integer(threadID) });
108: throw new ObjectNotFoundException(localizedMessage);
109: }
110: int forumID = threadBean.getForumID();
111:
112: ForumCache.getInstance().getBean(forumID)
113: .ensureNotDisabledForum();
114:
115: // now check permission the this user have the readPost permission
116: permission.ensureCanReadPost(forumID);
117:
118: // has the permission now, then insert to database
119: try {
120: DAOFactory.getFavoriteThreadDAO().create(memberID,
121: threadID, forumID, favoriteCreationDate,
122: favoriteType, favoriteOption, favoriteStatus);
123: } catch (DuplicateKeyException ex) {
124: // already add favorite thread, just ignore
125: }
126: }
127:
128: public void processDelete(GenericRequest request)
129: throws BadInputException, DatabaseException,
130: ObjectNotFoundException, AuthenticationException {
131:
132: OnlineUser onlineUser = onlineUserManager
133: .getOnlineUser(request);
134: MVNForumPermission permission = onlineUser.getPermission();
135: permission.ensureIsAuthenticated();
136:
137: // primary key column(s)
138: int memberID = onlineUser.getMemberID();
139: int threadID = GenericParamUtil.getParameterInt(request,
140: "thread");
141:
142: DAOFactory.getFavoriteThreadDAO().delete(memberID, threadID);
143: }
144: }
|