KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > mvnforum > common > kg > KGUtils


1 /*
2  * $Header: /cvsroot/mvnforum/mvnforum/src/com/mvnforum/common/kg/KGUtils.java,v 1.19 2006/04/14 17:05:26 minhnn Exp $
3  * $Author: minhnn $
4  * $Revision: 1.19 $
5  * $Date: 2006/04/14 17:05:26 $
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  * @author: Igor Manic
41  */

42 package com.mvnforum.common.kg;
43
44 import java.sql.Date JavaDoc;
45 import java.sql.Timestamp JavaDoc;
46 import java.util.Locale JavaDoc;
47
48 import javax.servlet.http.HttpServletRequest JavaDoc;
49
50 import com.mvnforum.*;
51 import com.mvnforum.auth.MVNForumPermission;
52 import com.mvnforum.common.SendMailUtil;
53 import com.mvnforum.db.DAOFactory;
54 import com.mvnforum.db.MemberBean;
55 import com.mvnforum.search.member.MemberIndexer;
56 import net.myvietnam.mvncore.exception.*;
57 import net.myvietnam.mvncore.interceptor.InterceptorService;
58 import net.myvietnam.mvncore.security.Encoder;
59 import net.myvietnam.mvncore.util.*;
60 import org.apache.commons.logging.Log;
61 import org.apache.commons.logging.LogFactory;
62
63 /**
64  * NOTE for KG
65  * When deploy mvnForum, below is the check list:
66  * - Set the loginID Interceptor
67  * - MVNForumConfig.ENABLE_AUTO_FORUM_OWNER = true
68  * - Emoticon = false
69  * - Attachment = false
70  * - Rss = false
71  */

72 public class KGUtils {
73
74     public static final String JavaDoc KG_PREFIX = "kg_";
75
76     public static final int KG_FORUM_ADMIN_GROUP = 4;
77
78     private static Log log = LogFactory.getLog(KGUtils.class);
79
80     private KGUtils() {
81     }
82
83     public static void addNewMember(HttpServletRequest JavaDoc request, String JavaDoc memberName, String JavaDoc memberPassword, String JavaDoc memberEmail, Date JavaDoc memberBirthday)
84         throws BadInputException, ObjectNotFoundException, CreateException, DatabaseException, DuplicateKeyException,
85         ForeignKeyNotFoundException, InterceptorException {
86
87         Locale JavaDoc locale = I18nUtil.getLocaleInRequest(request);
88
89         Timestamp JavaDoc now = DateUtil.getCurrentGMTTimestamp();
90
91         memberName = KG_PREFIX + memberName;
92         StringUtil.checkGoodName(memberName);
93         if (memberName.length() > MVNForumGlobal.MAX_MEMBER_LOGIN_LENGTH) {
94             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.member_name_too_long");
95             throw new BadInputException(localizedMessage);
96             //throw new BadInputException("MemberName cannot be longer than 30 characters.");
97
}
98
99         memberPassword = Encoder.getMD5_Base64(memberPassword);
100
101         if (memberEmail.length() > MVNForumGlobal.MAX_MEMBER_EMAIL_LENGTH) {
102             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.BadInputException.member_email_too_long");
103             throw new BadInputException(localizedMessage);
104             //throw new BadInputException("MemberEmail cannot be longer than 60 characters.");
105
}
106         String JavaDoc memberFirstEmail = memberEmail;
107         InterceptorService.getInstance().validateMail(memberFirstEmail);
108
109         int memberEmailVisible = MemberBean.MEMBER_EMAIL_INVISIBLE;
110         int memberNameVisible = MemberBean.MEMBER_NAME_VISIBLE;
111         String JavaDoc memberFirstIP = request.getRemoteAddr();
112         String JavaDoc memberLastIP = memberFirstIP;
113         int memberOption = 0;//@todo review and support it later
114
int memberStatus = 0;// @todo review and support it later, ex: should it be active or not?
115
String JavaDoc memberActivateCode = "";// @todo review and support it later
116
int memberMessageOption = 0;// @todo review and support it later
117
int memberPostsPerPage = 10; //default for all preregistered users
118
if (memberBirthday == null) {
119             memberBirthday = new java.sql.Date JavaDoc(now.getTime());
120         }
121         Timestamp JavaDoc memberCreationDate= now;
122         Timestamp JavaDoc memberModifiedDate= now;
123         Timestamp JavaDoc memberExpireDate = memberCreationDate;// equal Creation Date mean no expiration
124
if (MVNForumConfig.getEnableCompany()) {
125             memberExpireDate = DateUtil.getCurrentGMTTimestampExpiredDay(MVNForumConfig.getExpireDateTutor());
126         }
127
128         DAOFactory.getMemberDAO().create(memberName, memberPassword, memberFirstEmail,
129                                    memberEmail, memberEmailVisible, memberNameVisible,
130                                    memberFirstIP, memberLastIP, 0/*memberViewCount*/,
131                                    0/*memberPostCount*/, memberCreationDate, memberModifiedDate, memberExpireDate,
132                                    now/*memberLastLogon*/, memberOption, memberStatus,
133                                    memberActivateCode, ""/*memberTempPassword*/, 0/*memberMessageCount*/,
134                                    memberMessageOption, memberPostsPerPage, 0/*memberWarnCount*/,
135                                    0/*memberVoteCount*/, 0/*memberVoteTotalStars*/, 0/*memberRewardPoints*/,
136                                    ""/*memberTitle*/, 0/*memberTimeZone*/, ""/*memberSignature*/,
137                                    ""/*memberAvatar*/, ""/*memberSkin*/, ""/*memberLanguage*/,
138                                    " "/*memberFirstname*/, " "/*memberLastname*/, 1/*memberGender*/,
139                                    memberBirthday, ""/*memberAddress*/, ""/*memberCity*/,
140                                    ""/*memberState*/, ""/*memberCountry*/, ""/*memberPhone*/,
141                                    ""/*memberMobile*/, ""/*memberFax*/, ""/*memberCareer*/,
142                                    ""/*memberHomepage*/, ""/*memberYahoo*/, ""/*memberAol*/,
143                                    ""/*memberIcq*/, ""/*memberMsn*/, ""/*memberCoolLink1*/,
144                                    ""/*memberCoolLink2*/);
145
146         // Now, create 2 default folders for each member
147
int memberID = DAOFactory.getMemberDAO().getMemberIDFromMemberName(memberName);
148         int folderStatus = 0;
149         int folderOption = 0;
150         int folderType = 0;
151         DAOFactory.getMessageFolderDAO().create(MVNForumConstant.MESSAGE_FOLDER_INBOX, memberID, 0/*order*/, folderStatus, folderOption, folderType, now, now);
152         DAOFactory.getMessageFolderDAO().create(MVNForumConstant.MESSAGE_FOLDER_DRAFT, memberID, 1/*order*/, folderStatus, folderOption, folderType, now, now);
153         DAOFactory.getMessageFolderDAO().create(MVNForumConstant.MESSAGE_FOLDER_SENT, memberID, 2/*order*/, folderStatus, folderOption, folderType, now, now);
154         DAOFactory.getMessageFolderDAO().create(MVNForumConstant.MESSAGE_FOLDER_TRASH, memberID, 3/*order*/, folderStatus, folderOption, folderType, now, now);
155
156         // Add member to the lucene index
157
MemberBean memberBean = null;
158         try {
159             memberBean = DAOFactory.getMemberDAO().getMember_forPublic(memberID);
160         } catch(ObjectNotFoundException ex) {
161             String JavaDoc localizedMessage = MVNForumResourceBundle.getString(locale, "mvncore.exception.ObjectNotFoundException.memberid_not_exists", new Object JavaDoc[] {new Integer JavaDoc(memberID)});
162             throw new ObjectNotFoundException(localizedMessage);
163         }
164         MemberIndexer.scheduleAddMemberTask(memberBean);
165
166         // now, if require activation, then we will send mail
167
// Note that because after this page succeed,
168
// we redirect to usermanagement so not use mvnforum.mail.failed now
169
if (MVNForumConfig.getRequireActivation()) {
170             String JavaDoc serverName = ParamUtil.getServerPath();//ParamUtil.getServer2(request);
171
try {
172                 SendMailUtil.sendActivationCodeEmail(memberID, serverName);
173             } catch (Exception JavaDoc ex) {
174                 log.error("Cannot send mail after registration!", ex);
175                 request.setAttribute("mvnforum.mail.failed", "Cannot send activation email after registration!");
176                 //@todo: save the error message to displayed later
177
}
178         }
179     }
180
181     public static void grantPermission(String JavaDoc memberName, int forumID)
182         throws DatabaseException, ObjectNotFoundException, ForeignKeyNotFoundException, DuplicateKeyException, CreateException {
183
184         memberName = KG_PREFIX + memberName;
185         int memberID = DAOFactory.getMemberDAO().getMemberIDFromMemberName(memberName);
186         DAOFactory.getMemberForumDAO().create(memberID, forumID, MVNForumPermission.PERMISSION_FORUM_MODERATOR);
187     }
188
189     public static void revokePermission(String JavaDoc memberName, int forumID)
190         throws DatabaseException, ObjectNotFoundException {
191
192         memberName = KG_PREFIX + memberName;
193         int memberID = DAOFactory.getMemberDAO().getMemberIDFromMemberName(memberName);
194         DAOFactory.getMemberForumDAO().delete(memberID, forumID, MVNForumPermission.PERMISSION_FORUM_MODERATOR);
195     }
196
197     public static void grantForumAdminPermission(String JavaDoc memberName)
198         throws DatabaseException, ForeignKeyNotFoundException, DuplicateKeyException, CreateException {
199
200         memberName = KG_PREFIX + memberName;
201         Timestamp JavaDoc now = DateUtil.getCurrentGMTTimestamp();
202         DAOFactory.getMemberGroupDAO().create(KG_FORUM_ADMIN_GROUP, memberName, 0/* default privilege*/, now/*creationDate*/, now/*modifiedDate*/);
203     }
204
205     /*
206     public static void main(String[] args) {
207         try {
208             addNewMember(null, "test", "test", "test@kiengiang.gov.vn", null);
209         } catch (Exception ex) {
210             ex.printStackTrace();
211         }
212         try {
213             grantPermission("test", 1);
214         } catch (Exception ex1) {
215             ex1.printStackTrace();
216         }
217     }*/

218
219 }
220
Popular Tags