KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > com > mvnforum > admin > ImportWebHelper


1 /*
2  * $Header: /cvsroot/mvnforum/mvnforum/src/com/mvnforum/admin/ImportWebHelper.java,v 1.12 2006/04/14 17:36:29 minhnn Exp $
3  * $Author: minhnn $
4  * $Revision: 1.12 $
5  * $Date: 2006/04/14 17:36:29 $
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: Igor Manic
39  */

40 package com.mvnforum.admin;
41
42 import java.io.*;
43 import java.sql.*;
44
45 import javax.servlet.ServletContext JavaDoc;
46 import javax.servlet.http.HttpServletRequest JavaDoc;
47
48 import com.mvnforum.*;
49 import com.mvnforum.auth.MVNForumPermission;
50 import com.mvnforum.db.*;
51 import net.myvietnam.mvncore.db.DBUtils;
52 import net.myvietnam.mvncore.exception.*;
53 import org.apache.commons.logging.Log;
54 import org.apache.commons.logging.LogFactory;
55
56 /**
57  * @author Igor Manic
58  * @version $Revision: 1.12 $, $Date: 2006/04/14 17:36:29 $
59  * <br/>
60  * <code>ImportWebHelper</code> todo Igor: enter description
61  *
62  */

63 public class ImportWebHelper {
64
65     /** Message log. */
66     private static Log log = LogFactory.getLog(ImportWebHelper.class);
67
68     protected ImportWebHelper() {
69     }
70
71
72 // =================================================================
73
// ======== UTILITY METHODS FOR CLEARING PREVIOUS CONTENTS =========
74
// =================================================================
75
/* I need this method because db package doesn't allow me to enter some
76     * values I need to (for example, to ensure creating predefined groups
77     * having GroupIDs I want them to be (like in .sql script)
78     */

79     protected static int execUpdateQuery(String JavaDoc query) throws DatabaseException {
80         
81         Connection connection = null;
82         PreparedStatement statement = null;
83         ResultSet resultSet = null;
84         try {
85             connection = DBUtils.getConnection();
86             statement = connection.prepareStatement(query);
87             return statement.executeUpdate();
88         } catch (SQLException sqle) {
89             log.error("Sql Execution Error!", sqle);
90             throw new DatabaseException("Error executing SQL in ImportWebHelper.execUpdateQuery.");
91         } finally {
92             DBUtils.closeResultSet(resultSet);
93             DBUtils.closeStatement(statement);
94             DBUtils.closeConnection(connection);
95         }
96     }
97
98     private static void clearTable(String JavaDoc tableName) throws DatabaseException {
99         
100         execUpdateQuery("DELETE FROM " + tableName);
101     }
102
103     private static void emptyDirectory(File dir) throws IOException {
104         
105         if (dir.isFile()) {
106             log.error("Called emptyDirectory on a file \""+dir.getAbsolutePath()+"\".");
107             throw new IOException("IOException: not a directory.");
108         }
109         File[] files = dir.listFiles();
110         if (files != null) {
111             for (int i = 0; i < files.length; i++) {
112                 File file = files[i];
113                 if (file.isFile()) {
114                     file.delete();
115                 } else {
116                     emptyDirectory(file);
117                 }
118             }
119         }
120     }
121
122     private static void emptyDirectory(String JavaDoc path) throws IOException {
123         
124         emptyDirectory(new File(path));
125     }
126
127     protected static void clearFiles(ServletContext JavaDoc context) throws IOException {
128         
129         addImportantMessage("Deleting previous files...");
130         if (MVNForumConfig.getSearchPostIndexType() == MVNForumGlobal.SEARCH_INDEX_TYPE_DISK) {
131             emptyDirectory(MVNForumConfig.getSearchPostIndexDirName());
132         }
133         if (MVNForumConfig.getSearchMemberIndexType() == MVNForumGlobal.SEARCH_INDEX_TYPE_DISK) {
134             emptyDirectory(MVNForumConfig.getSearchMemberIndexDirName());
135         }
136         if (MVNForumConfig.getSearchCompanyIndexType() == MVNForumGlobal.SEARCH_INDEX_TYPE_DISK) {
137             emptyDirectory(MVNForumConfig.getSearchCompanyIndexDirName());
138         }
139         emptyDirectory(MVNForumConfig.getAttachmentDir());
140         emptyDirectory(context.getRealPath(MVNForumGlobal.UPLOADED_AVATAR_DIR));
141         //DO NOT DELETE OR EMPTY getTempDir() BECAUSE IT MAY CONTAIN UPLOADED IMPORT FILE WHICH IS GOING TO BE PROCESSED
142
}
143
144     protected static void clearDatabase() throws DatabaseException {
145         
146         addImportantMessage("Clearing previous database contents...");
147         clearTable(RankDAO.TABLE_NAME);
148         clearTable(FavoriteThreadDAO.TABLE_NAME);
149
150         clearTable(AttachmentDAO.TABLE_NAME);
151         clearTable(WatchDAO.TABLE_NAME);
152         clearTable(PostDAO.TABLE_NAME);
153         clearTable(ThreadDAO.TABLE_NAME);
154
155         clearTable(MemberForumDAO.TABLE_NAME);
156         clearTable(GroupForumDAO.TABLE_NAME);
157         clearTable(ForumDAO.TABLE_NAME);
158         clearTable(CategoryDAO.TABLE_NAME);
159
160         clearTable(MemberGroupDAO.TABLE_NAME);
161         clearTable(GroupPermissionDAO.TABLE_NAME);
162         clearTable(GroupsDAO.TABLE_NAME);
163         clearTable(MemberPermissionDAO.TABLE_NAME);
164         clearTable(MessageFolderDAO.TABLE_NAME);
165         clearTable(MemberDAO.TABLE_NAME);
166     }
167
168
169 // =================================================================
170
// =============== CREATING DEFAULT DATABASE RECORDS ===============
171
// =================================================================
172
public static void createDefaultContents() throws DuplicateKeyException,
173    ObjectNotFoundException, CreateException, DatabaseException, ForeignKeyNotFoundException {
174        createDefaultAdminMember();
175        createDefaultGuestMember();
176        createDefaultRegisteredMembersGroup();
177        createDefaultRanks();
178    }
179
180    public static void createDefaultGuestMember() throws DuplicateKeyException,
181    ObjectNotFoundException, CreateException, DatabaseException, ForeignKeyNotFoundException {
182        createDefaultGuestMember(MVNForumConfig.getDefaultGuestName());
183    }
184
185    public static void createDefaultGuestMember(String JavaDoc guestName) throws DuplicateKeyException,
186     ObjectNotFoundException, CreateException, DatabaseException, ForeignKeyNotFoundException {
187         if ((guestName==null) || (guestName.length()<=0)) {
188             guestName=MVNForumConfig.getDefaultGuestName();
189         }
190         addImportantMessage("Adding virtual guest member \""+guestName+"\"...");
191         //todo Igor: add an array of individual perms to the previous message
192
//e.g.: "... with READ_POST, ADD_POST and ADD_THREAD permissions.");
193
MemberXML memberXML=new MemberXML();
194         memberXML.addMember(Integer.toString(MVNForumConstant.MEMBER_ID_OF_GUEST), guestName,
195               "N/A"/*MemberPassword - not used - can't be empty*/,
196               "N/A"/*MemberFirstEmail - not used - can't be empty*/,
197               "N/A"/*MemberEmail - not used - can't be empty*/,
198               "0", "1", "127.0.0.1", "127.0.0.1", "0", "0",
199               null /*memberCreationDate*/, null /*memberModifiedDate*/, null /*memberExpireDate*/,
200               null /*memberLastLogon*/, "0", "0", "" /*memberActivateCode*/,
201               "" /*memberTempPassword*/, "0" /*memberMessageCount*/,
202               "0" /*memberMessageOption*/, "10" /*memberPostsPerPage*/,
203               "0" /*memberWarnCount*/, "0" /*memberVoteCount*/, "0" /*memberVoteTotalStars*/,
204               "0" /*memberRewardPoints*/, "" /*memberTitle*/, "0" /*memberTimeZone*/,
205               "" /*memberSignature*/, "" /*memberAvatar*/, "" /*memberSkin*/,
206               "" /*memberLanguage*/, guestName /*memberFirstname*/, "" /*memberLastname*/,
207               "1" /*memberGender*/, null /*memberBirthday*/, "" /*memberAddress*/,
208               "" /*memberCity*/, "" /*memberState*/, "" /*memberCountry*/, "" /*memberPhone*/,
209               "" /*memberMobile*/, "" /*memberFax*/, "" /*memberCareer*/, "" /*memberHomepage*/,
210               "" /*memberYahoo*/, "" /*memberAol*/, "" /*memberIcq*/, "" /*memberMsn*/,
211               "" /*memberCoolLink1*/, "" /*memberCoolLink2*/);
212         memberXML.addMemberPermission(Integer.toString(MVNForumPermission.PERMISSION_LIMITED_USER));
213         //todo Igor: replace previous permission with an array of individual perms
214
}
215
216     public static void createDefaultAdminMember() throws ObjectNotFoundException,
217     CreateException, DatabaseException, DuplicateKeyException, ForeignKeyNotFoundException {
218         createDefaultAdminMember("Admin");
219     }
220
221     public static void createDefaultAdminMember(String JavaDoc adminName) throws ObjectNotFoundException,
222     CreateException, DatabaseException, DuplicateKeyException, ForeignKeyNotFoundException {
223         if ((adminName==null) || (adminName.length()<=0)) {
224             adminName="Admin";
225         }
226         addImportantMessage("Adding system administrator \""+adminName+"\"...");
227         MemberXML memberXML = new MemberXML();
228
229         memberXML.addMember(Integer.toString(MVNForumConstant.MEMBER_ID_OF_ADMIN), adminName,
230                   "ISMvKXpXpadDiUoOSoAfww==", "admin@yourdomain.com", "admin@yourdomain.com",
231                   "0", "1", "127.0.0.1", "127.0.0.1", "0", "0",
232                   null /*memberCreationDate*/, null /*memberModifiedDate*/,null /*memberExpireDate*/,
233                   null /*memberLastLogon*/, "0", "0", "" /*memberActivateCode*/,
234                   "" /*memberTempPassword*/, "0" /*memberMessageCount*/,
235                   "0" /*memberMessageOption*/, "10" /*memberPostsPerPage*/,
236                   "0" /*memberWarnCount*/, "0" /*memberVoteCount*/, "0" /*memberVoteTotalStars*/,
237                   "0" /*memberRewardPoints*/, "" /*memberTitle*/, "0" /*memberTimeZone*/,
238                   "" /*memberSignature*/, "" /*memberAvatar*/, "" /*memberSkin*/,
239                   "" /*memberLanguage*/, adminName /*memberFirstname*/, "" /*memberLastname*/,
240                   "1" /*memberGender*/, null /*memberBirthday*/, "" /*memberAddress*/,
241                   "" /*memberCity*/, "" /*memberState*/, "" /*memberCountry*/, "" /*memberPhone*/,
242                   "" /*memberMobile*/, "" /*memberFax*/, "" /*memberCareer*/, "" /*memberHomepage*/,
243                   "" /*memberYahoo*/, "" /*memberAol*/, "" /*memberIcq*/, "" /*memberMsn*/,
244                   "" /*memberCoolLink1*/, "" /*memberCoolLink2*/);
245         memberXML.addMemberPermission(Integer.toString(MVNForumPermission.PERMISSION_SYSTEM_ADMIN));
246         memberXML.addMessageFolder("Inbox", "0" /*folderOrder*/,
247                    null /*folderCreationDate*/, null /*folderModifiedDate*/);
248         memberXML.addMessageFolder("Sent", "0" /*folderOrder*/,
249                    null /*folderCreationDate*/, null /*folderModifiedDate*/);
250
251     }
252
253     public static void createDefaultRegisteredMembersGroup() throws CreateException,
254     DuplicateKeyException, ObjectNotFoundException, DatabaseException, ForeignKeyNotFoundException {
255         createDefaultRegisteredMembersGroup(null);
256     }
257
258     public static void createDefaultRegisteredMembersGroup(String JavaDoc groupOwnerName) throws CreateException,
259     DuplicateKeyException, ObjectNotFoundException, DatabaseException, ForeignKeyNotFoundException {
260         addImportantMessage("Adding default virtual group of all registered members...");
261         GroupXML groupXML = new GroupXML();
262         groupXML.addGroup(Integer.toString(MVNForumConstant.GROUP_ID_OF_REGISTERED_MEMBERS),
263                           groupOwnerName, "Registered Members",
264                           "All registered users belong to this group.",
265                           null/*GroupOption*/,
266                           null/*GroupCreationDate*/, null/*GroupModifiedDate*/);
267         groupXML.addGroupPermission(Integer.toString(MVNForumPermission.PERMISSION_NORMAL_USER));
268         //todo Igor: replace previous permission with an array of individual perms
269
}
270
271     public static void createDefaultRanks() throws CreateException,
272     DuplicateKeyException, ObjectNotFoundException, DatabaseException, ForeignKeyNotFoundException {
273         addImportantMessage("Adding default rank titles \"Stranger\", \"Newbie\", \"Member\" and \"Advanced Member\"...");
274         (new RankXML()).addRank("0", "0", "Stranger", "", "0", "0");
275         (new RankXML()).addRank("20", "0", "Newbie", "", "0", "0");
276         (new RankXML()).addRank("50", "0", "Member", "", "0", "0");
277         (new RankXML()).addRank("100", "0", "Advanced Member", "", "0", "0");
278     }
279
280 // =================================================================
281
// ===== PRINTING STATUS AND ERROR MESSAGES TO THE OUTPUT HTML =====
282
// =================================================================
283
protected static void setOutputHtmlWriter(PrintWriter outWriter) {
284         ImportWebHandler.setOutputHtmlWriter(outWriter);
285     }
286
287     protected static void setMessageOutputLevel(int messageLevel) {
288         ImportWebHandler.setMessageOutputLevel(messageLevel);
289     }
290
291     protected static void startHtml(HttpServletRequest JavaDoc request) {
292         ImportWebHandler.startHtml(request);
293     }
294
295     protected static void endHtml() {
296         ImportWebHandler.endHtml();
297     }
298
299     protected static void addMessage(String JavaDoc message) {
300         ImportWebHandler.addMessage(message);
301     }
302
303     protected static void addErrorMessage(String JavaDoc message) {
304         ImportWebHandler.addErrorMessage(message);
305     }
306
307     protected static void addSuccessMessage() {
308         ImportWebHandler.addSuccessMessage();
309     }
310
311     protected static void addImportantMessage(String JavaDoc message) {
312         ImportWebHandler.addImportantMessage(message);
313     }
314
315     protected static void addFinalErrorHandling(HttpServletRequest JavaDoc request, boolean clearIfError) {
316         ImportWebHandler.addFinalErrorHandling(request, clearIfError);
317     }
318
319
320 }
321
322
Free Books   Free Magazines  
Popular Tags