KickJava   Java API By Example, From Geeks To Geeks.

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


1 /*
2  * $Header: /cvsroot/mvnforum/mvnforum/src/com/mvnforum/admin/ConfigurationWebHandler.java,v 1.45 2006/04/14 17:05:25 minhnn Exp $
3  * $Author: minhnn $
4  * $Revision: 1.45 $
5  * $Date: 2006/04/14 17:05:25 $
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  */

41
42 package com.mvnforum.admin;
43
44 import java.io.*;
45 import java.util.*;
46
47 import com.mvnforum.*;
48 import com.mvnforum.auth.*;
49 import freemarker.template.*;
50 import freemarker.template.Configuration;
51 import net.myvietnam.mvncore.MVNCoreConfig;
52 import net.myvietnam.mvncore.configuration.DOM4JConfiguration;
53 import net.myvietnam.mvncore.exception.*;
54 import net.myvietnam.mvncore.util.*;
55 import net.myvietnam.mvncore.web.GenericRequest;
56 import org.apache.commons.logging.Log;
57 import org.apache.commons.logging.LogFactory;
58 import org.dom4j.*;
59 import org.dom4j.Node;
60 import org.dom4j.io.SAXReader;
61 import org.dom4j.io.XMLWriter;
62
63 public class ConfigurationWebHandler
64 {
65     private static Log log = LogFactory.getLog(ConfigurationWebHandler.class);
66
67     private OnlineUserManager onlineUserManager = OnlineUserManager.getInstance();
68
69     public ConfigurationWebHandler() {
70     }
71
72     public void prepareConfigMVNForum(GenericRequest request)
73         throws IOException, AssertionException, DatabaseException, AuthenticationException {
74
75         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
76         MVNForumPermission permission = onlineUser.getPermission();
77         permission.ensureCanAdminSystem();
78
79         String JavaDoc strPathName = FileUtil.getServletClassesPath();
80         DOM4JConfiguration mvnforumConfig;
81         try {
82             mvnforumConfig = new DOM4JConfiguration(new File(strPathName + "mvnforum.xml"));
83         } catch (Exception JavaDoc ex) {
84             log.error("Cannot load the DOM4JConfiguration.", ex);
85             throw new IOException("Cannot load the DOM4JConfiguration.");
86         }
87
88         request.setAttribute("mvnforumConfig", mvnforumConfig);
89     }
90
91     public void prepareConfigMVNCore(GenericRequest request)
92         throws IOException, AssertionException, DatabaseException, AuthenticationException {
93
94         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
95         MVNForumPermission permission = onlineUser.getPermission();
96         permission.ensureCanAdminSystem();
97
98         String JavaDoc strPathName = FileUtil.getServletClassesPath();
99         DOM4JConfiguration mvncoreConfig;
100         try {
101             mvncoreConfig = new DOM4JConfiguration(new File(strPathName + "mvncore.xml"));
102         } catch (Exception JavaDoc ex) {
103             log.error("Cannot load the DOM4JConfiguration.", ex);
104             throw new IOException("Cannot load the DOM4JConfiguration.");
105         }
106
107         request.setAttribute("mvncoreConfig", mvncoreConfig);
108     }
109
110     public void updateConfigStepOne(GenericRequest request)
111         throws BadInputException, DocumentException, IOException,
112         AssertionException, DatabaseException, AuthenticationException {
113
114         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
115         MVNForumPermission permission = onlineUser.getPermission();
116         permission.ensureCanAdminSystem();
117
118         // children of mvnforumconfig
119
String JavaDoc mvnforum_home = GenericParamUtil.getParameterSafe(request, "mvnforum_home", true);
120         String JavaDoc mvnforum_log = GenericParamUtil.getParameterSafe(request, "mvnforum_log", true);
121         String JavaDoc webmaster_email = GenericParamUtil.getParameterEmail(request, "webmaster_email");
122         String JavaDoc logo_url = GenericParamUtil.getParameterSafe(request, "logo_url", true);
123         String JavaDoc redirect_login_url = GenericParamUtil.getParameterSafe(request, "redirect_login_url", true);
124         String JavaDoc supported_locales = GenericParamUtil.getParameterSafe(request, "supported_locales", false);
125         String JavaDoc default_locale_name = GenericParamUtil.getParameterSafe(request, "default_locale_name", true);
126         String JavaDoc locale_parameter_name = GenericParamUtil.getParameterSafe(request, "locale_parameter_name", true);
127         String JavaDoc default_guest_name = GenericParamUtil.getParameterSafe(request, "default_guest_name", true);
128         int default_guest_timezone = GenericParamUtil.getParameterInt(request, "default_guest_timezone");
129
130         String JavaDoc enable_portlet = GenericParamUtil.getParameterSafe(request, "enable_portlet", true);
131         String JavaDoc enable_cache_member = GenericParamUtil.getParameterSafe(request, "enable_cache_member", true);
132         String JavaDoc enable_cache_post = GenericParamUtil.getParameterSafe(request, "enable_cache_post", true);
133         String JavaDoc enable_cache_thread = GenericParamUtil.getParameterSafe(request, "enable_cache_thread", true);
134         String JavaDoc enable_cache_forum = GenericParamUtil.getParameterSafe(request, "enable_cache_forum", true);
135         String JavaDoc enable_cache_category = GenericParamUtil.getParameterSafe(request, "enable_cache_category", true);
136
137         String JavaDoc enable_passwordless_auth = GenericParamUtil.getParameterSafe(request, "enable_passwordless_auth", true);
138         String JavaDoc enable_login_info_in_cookie = GenericParamUtil.getParameterSafe(request, "enable_login_info_in_cookie", true);
139         String JavaDoc enable_login_info_in_session = GenericParamUtil.getParameterSafe(request, "enable_login_info_in_session", true);
140         String JavaDoc enable_login_info_in_realm = GenericParamUtil.getParameterSafe(request, "enable_login_info_in_realm", true);
141         String JavaDoc enable_login_info_in_customization = GenericParamUtil.getParameterSafe(request, "enable_login_info_in_customization", true);
142         String JavaDoc require_activation = GenericParamUtil.getParameterSafe(request, "require_activation", true);
143         String JavaDoc enable_login = GenericParamUtil.getParameterSafe(request, "enable_login", true);
144         String JavaDoc enable_new_member = GenericParamUtil.getParameterSafe(request, "enable_new_member", true);
145         String JavaDoc enable_new_post = GenericParamUtil.getParameterSafe(request, "enable_new_post", true);
146         String JavaDoc enable_rss = GenericParamUtil.getParameterSafe(request, "enable_rss", true);
147         String JavaDoc enable_watch = GenericParamUtil.getParameterSafe(request, "enable_watch", true);
148         String JavaDoc enable_attachment = GenericParamUtil.getParameterSafe(request, "enable_attachment", true);
149         String JavaDoc enable_avatar = GenericParamUtil.getParameterSafe(request, "enable_avatar", true);
150         String JavaDoc enable_emoticon = GenericParamUtil.getParameterSafe(request, "enable_emoticon", true);
151         String JavaDoc enable_captcha = GenericParamUtil.getParameterSafe(request, "enable_captcha", true);
152         String JavaDoc enable_portal_like_index_page = GenericParamUtil.getParameterSafe(request, "enable_portal_like_index_page", true);
153
154         String JavaDoc enable_search = GenericParamUtil.getParameterSafe(request, "enable_search", true);
155         String JavaDoc enable_online_users = GenericParamUtil.getParameterSafe(request, "enable_online_users", true);
156         String JavaDoc enable_duplicate_onlineusers = GenericParamUtil.getParameterSafe(request, "enable_duplicate_onlineusers", true);
157         String JavaDoc enable_invisible_users = GenericParamUtil.getParameterSafe(request, "enable_invisible_users", true);
158         String JavaDoc enable_listmembers = GenericParamUtil.getParameterSafe(request, "enable_listmembers", true);
159         String JavaDoc enable_show_last_login = GenericParamUtil.getParameterSafe(request, "enable_show_last_login", true);
160         String JavaDoc enable_private_message = GenericParamUtil.getParameterSafe(request, "enable_private_message", true);
161         String JavaDoc enable_public_message = GenericParamUtil.getParameterSafe(request, "enable_public_message", true);
162         String JavaDoc enable_message_attachment = GenericParamUtil.getParameterSafe(request, "enable_message_attachment", true);
163         String JavaDoc enable_most_active_threads = GenericParamUtil.getParameterSafe(request, "enable_most_active_threads", true);
164         String JavaDoc enable_most_active_members = GenericParamUtil.getParameterSafe(request, "enable_most_active_members", true);
165         String JavaDoc enable_site_statistics_overview = GenericParamUtil.getParameterSafe(request, "enable_site_statistics_overview", true);
166         String JavaDoc enable_admin_can_change_password = GenericParamUtil.getParameterSafe(request, "enable_admin_can_change_password", true);
167         String JavaDoc enable_guest_view_image_attachment = GenericParamUtil.getParameterSafe(request, "enable_guest_view_image_attachment", true);
168
169         int default_watch_option = GenericParamUtil.getParameterInt(request, "default_watch_option");
170         int default_moderation_option = GenericParamUtil.getParameterInt(request, "default_moderation_option");
171
172         // children of mvnforumfactoryconfig
173
String JavaDoc member_implementation = GenericParamUtil.getParameterSafe(request, "member_implementation", true);
174         String JavaDoc onlineuser_implementation = GenericParamUtil.getParameterSafe(request, "onlineuser_implementation", true);
175         String JavaDoc authenticator_implementation = GenericParamUtil.getParameterSafe(request, "authenticator_implementation", false);
176         String JavaDoc requestprocessor_implementation = GenericParamUtil.getParameterSafe(request, "requestprocessor_implementation", true);
177         String JavaDoc lucene_analyzer_implementation = GenericParamUtil.getParameterSafe(request, "lucene_analyzer_implementation", true);
178         String JavaDoc binarystorage_implementation = GenericParamUtil.getParameterSafe(request, "binarystorage_implementation", true);
179
180         // Now checking the validity of value
181
Locale locale = onlineUser.getLocale();
182
183         try {
184             // always create a dir, if the dir already exitsted, nothing happens
185
FileUtil.createDirs(mvnforum_home, true);
186
187             String JavaDoc tempFilename = mvnforum_home + File.separatorChar + "mvnforum_tempfile.tmp";
188             File tempFile = new File(tempFilename);
189             if (log.isDebugEnabled()) {
190                 log.debug("Temp file = " + tempFilename);
191                 log.debug("Absolute filename of temp file = " + tempFile.getAbsolutePath());
192             }
193
194             FileOutputStream fos = new FileOutputStream(tempFilename);
195             fos.write(tempFilename.getBytes());
196             fos.close();
197
198             tempFile.delete();
199         } catch (IOException ex) {
200             String JavaDoc errorMessage = "Check your mvnforum_home. Detail : " + ex.getMessage();
201             throw new BadInputException(errorMessage);
202         }
203
204         try {
205             int lastBackSlashIndex = mvnforum_log.lastIndexOf('\\');
206             int lastForwardSlashIndex = mvnforum_log.lastIndexOf('/');
207             int index = Math.max(lastBackSlashIndex, lastForwardSlashIndex);
208             if (index < 0) {
209                 throw new BadInputException("Cannot find any '\\' or '/' in mvnforum_log : " + mvnforum_log);
210             }
211             String JavaDoc parentFolder = mvnforum_log.substring(0, index);
212             log.debug("parentFolder = " + parentFolder);
213
214             // always create a dir, if the dir already exitsted, nothing happens
215
FileUtil.createDirs(parentFolder, true);
216
217             String JavaDoc tempFilename = parentFolder + File.separatorChar + "mvnforum_tempfile.tmp";
218             File tempFile = new File(tempFilename);
219             if (log.isDebugEnabled()) {
220                 log.debug("Temp file in log folder = " + tempFilename);
221                 log.debug("Absolute filename of temp file in log folder = " + tempFile.getAbsolutePath());
222             }
223
224             FileOutputStream fos = new FileOutputStream(tempFilename);
225             fos.write(tempFilename.getBytes());
226             fos.close();
227
228             tempFile.delete();
229         } catch (IOException ex) {
230             String JavaDoc errorMessage = "Check your mvnforum_log. Detail : " + ex.getMessage();
231             throw new BadInputException(errorMessage);
232         }
233
234         MyUtil.checkClassName(locale, member_implementation, true);
235         MyUtil.checkClassName(locale, onlineuser_implementation, true);
236         MyUtil.checkClassName(locale, authenticator_implementation, false);
237         MyUtil.checkClassName(locale, requestprocessor_implementation, true);
238         MyUtil.checkClassName(locale, lucene_analyzer_implementation, true);
239         MyUtil.checkClassName(locale, binarystorage_implementation, true);
240
241         // End checking, now save the value
242
String JavaDoc strPathName = FileUtil.getServletClassesPath();
243         SAXReader reader = new SAXReader();
244         Document document = reader.read(new File(strPathName + "mvnforum.xml"));
245
246         Element root = document.getRootElement();
247         // iterate through child elements of root
248
for (Iterator i = root.elementIterator(); i.hasNext(); ) {
249             Element element = (Element) i.next();
250             for (int j = 0, size = element.nodeCount(); j < size; j++) {
251                 Node node = element.node(j);
252                 if (node.getNodeTypeName().equals("Element")) {
253                     if (node.getName().equals("mvnforum_home")) {
254                         node.setText(mvnforum_home);
255                     } else if (node.getName().equals("mvnforum_log")) {
256                         node.setText(mvnforum_log);
257                     } else if (node.getName().equals("webmaster_email")) {
258                         node.setText(webmaster_email);
259                     } else if (node.getName().equals("logo_url")) {
260                         node.setText(logo_url);
261                     } else if (node.getName().equals("redirect_login_url")) {
262                         node.setText(redirect_login_url);
263                     } else if (node.getName().equals("supported_locales")) {
264                         node.setText(supported_locales);
265                     } else if (node.getName().equals("default_locale_name")) {
266                         node.setText(default_locale_name);
267                     } else if (node.getName().equals("locale_parameter_name")) {
268                         node.setText(locale_parameter_name);
269                     } else if (node.getName().equals("default_guest_name")) {
270                         node.setText(default_guest_name);
271                     } else if (node.getName().equals("default_guest_timezone")) {
272                         node.setText(String.valueOf(default_guest_timezone));
273
274                     } else if (node.getName().equals("enable_portlet")) {
275                         node.setText(enable_portlet);
276                     } else if (node.getName().equals("enable_cache_member")) {
277                         node.setText(enable_cache_member);
278                     } else if (node.getName().equals("enable_cache_post")) {
279                         node.setText(enable_cache_post);
280                     } else if (node.getName().equals("enable_cache_thread")) {
281                         node.setText(enable_cache_thread);
282                     } else if (node.getName().equals("enable_cache_forum")) {
283                         node.setText(enable_cache_forum);
284                     } else if (node.getName().equals("enable_cache_category")) {
285                         node.setText(enable_cache_category);
286
287                     } else if (node.getName().equals("enable_passwordless_auth")) {
288                         node.setText(enable_passwordless_auth);
289                     } else if (node.getName().equals("enable_login_info_in_cookie")) {
290                         node.setText(enable_login_info_in_cookie);
291                     } else if (node.getName().equals("enable_login_info_in_session")) {
292                         node.setText(enable_login_info_in_session);
293                     } else if (node.getName().equals("enable_login_info_in_realm")) {
294                         node.setText(enable_login_info_in_realm);
295                     } else if (node.getName().equals("enable_login_info_in_customization")) {
296                         node.setText(enable_login_info_in_customization);
297                     } else if (node.getName().equals("require_activation")) {
298                         node.setText(require_activation);
299                     } else if (node.getName().equals("enable_login")) {
300                         node.setText(enable_login);
301                     } else if (node.getName().equals("enable_new_member")) {
302                         node.setText(enable_new_member);
303                     } else if (node.getName().equals("enable_new_post")) {
304                         node.setText(enable_new_post);
305                     } else if (node.getName().equals("enable_rss")) {
306                         node.setText(enable_rss);
307                     } else if (node.getName().equals("enable_watch")) {
308                         node.setText(enable_watch);
309                     } else if (node.getName().equals("enable_attachment")) {
310                         node.setText(enable_attachment);
311                     } else if (node.getName().equals("enable_avatar")) {
312                         node.setText(enable_avatar);
313                     } else if (node.getName().equals("enable_emoticon")) {
314                         node.setText(enable_emoticon);
315                     } else if (node.getName().equals("enable_captcha")) {
316                         node.setText(enable_captcha);
317                     } else if (node.getName().equals("enable_portal_like_index_page")) {
318                         node.setText(enable_portal_like_index_page);
319
320                     } else if (node.getName().equals("enable_search")) {
321                         node.setText(enable_search);
322                     } else if (node.getName().equals("enable_online_users")) {
323                         node.setText(enable_online_users);
324                     } else if (node.getName().equals("enable_duplicate_onlineusers")) {
325                         node.setText(enable_duplicate_onlineusers);
326                     } else if (node.getName().equals("enable_invisible_users")) {
327                         node.setText(enable_invisible_users);
328                     } else if (node.getName().equals("enable_listmembers")) {
329                         node.setText(enable_listmembers);
330                     } else if (node.getName().equals("enable_show_last_login")) {
331                         node.setText(enable_show_last_login);
332                     } else if (node.getName().equals("enable_private_message")) {
333                         node.setText(enable_private_message);
334                     } else if (node.getName().equals("enable_public_message")) {
335                         node.setText(enable_public_message);
336                     } else if (node.getName().equals("enable_message_attachment")) {
337                         node.setText(enable_message_attachment);
338                     } else if (node.getName().equals("enable_most_active_threads")) {
339                         node.setText(enable_most_active_threads);
340                     } else if (node.getName().equals("enable_most_active_members")) {
341                         node.setText(enable_most_active_members);
342                     } else if (node.getName().equals("enable_site_statistics_overview")) {
343                         node.setText(enable_site_statistics_overview);
344                     } else if (node.getName().equals("enable_admin_can_change_password")) {
345                         node.setText(enable_admin_can_change_password);
346                     } else if (node.getName().equals("enable_guest_view_image_attachment")) {
347                         node.setText(enable_guest_view_image_attachment);
348
349                     } else if (node.getName().equals("default_watch_option")) {
350                         node.setText(String.valueOf(default_watch_option));
351                     } else if (node.getName().equals("default_moderation_option")) {
352                         node.setText(String.valueOf(default_moderation_option));
353
354                     // children of mvnforumfactoryconfig
355
} else if (node.getName().equals("member_implementation")) {
356                         node.setText(member_implementation);
357                     } else if (node.getName().equals("onlineuser_implementation")) {
358                         node.setText(onlineuser_implementation);
359                     } else if (node.getName().equals("authenticator_implementation")) {
360                         node.setText(authenticator_implementation);
361                     } else if (node.getName().equals("requestprocessor_implementation")) {
362                         node.setText(requestprocessor_implementation);
363                     } else if (node.getName().equals("lucene_analyzer_implementation")) {
364                         node.setText(lucene_analyzer_implementation);
365                     } else if (node.getName().equals("binarystorage_implementation")) {
366                         node.setText(binarystorage_implementation);
367                     }
368                 }
369             }
370         }
371
372         saveDocument(document, strPathName + "mvnforum.xml");
373         request.setAttribute("step", "1");
374     }
375
376     public void updateConfigStepTwo(GenericRequest request)
377         throws BadInputException, DocumentException, IOException,
378         AssertionException, DatabaseException, AuthenticationException {
379
380         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
381         MVNForumPermission permission = onlineUser.getPermission();
382         permission.ensureCanAdminSystem();
383
384         int max_private_message = GenericParamUtil.getParameterUnsignedInt(request, "max_private_message");
385         String JavaDoc max_message_attachment_size = GenericParamUtil.getParameterSafe(request, "max_message_attachment_size", true);
386         String JavaDoc max_attachment_size = GenericParamUtil.getParameterSafe(request, "max_attachment_size", true);
387         int max_favorite_thread = GenericParamUtil.getParameterUnsignedInt(request, "max_favorite_thread");
388         int max_edit_days = GenericParamUtil.getParameterUnsignedInt(request, "max_edit_days");
389         int max_attach_days = GenericParamUtil.getParameterUnsignedInt(request, "max_attach_days");
390         int max_delete_days = GenericParamUtil.getParameterUnsignedInt(request, "max_delete_days");
391         int rows_per_page = GenericParamUtil.getParameterUnsignedInt(request, "rows_per_page");
392         int rows_per_rss = GenericParamUtil.getParameterUnsignedInt(request, "rows_per_rss");
393         int hot_topic_threshold = GenericParamUtil.getParameterUnsignedInt(request, "hot_topic_threshold");
394
395         int max_posts_per_hour = GenericParamUtil.getParameterUnsignedInt(request, "max_posts_per_hour");
396         int max_members_per_hour = GenericParamUtil.getParameterUnsignedInt(request, "max_members_per_hour");
397         int max_logins_per_hour = GenericParamUtil.getParameterUnsignedInt(request, "max_logins_per_hour");
398         int max_messages_per_hour = GenericParamUtil.getParameterUnsignedInt(request, "max_messages_per_hour");
399
400         int max_chars_in_short_summary = GenericParamUtil.getParameterUnsignedInt(request, "max_chars_in_short_summary");
401         int max_chars_in_long_summary = GenericParamUtil.getParameterUnsignedInt(request, "max_chars_in_long_summary");
402         int max_chars_in_rss = GenericParamUtil.getParameterUnsignedInt(request, "max_chars_in_rss");
403
404         String JavaDoc enable_backup_on_server = GenericParamUtil.getParameterSafe(request, "enable_backup_on_server", true);
405         String JavaDoc max_import_size = GenericParamUtil.getParameterSafe(request, "max_import_size", true);
406
407         String JavaDoc strPathName = FileUtil.getServletClassesPath();
408         SAXReader reader = new SAXReader();
409         Document document = reader.read(new File(strPathName + "mvnforum.xml"));
410         Element root = document.getRootElement();
411
412         // iterate through child elements of root
413
for (Iterator i = root.elementIterator("mvnforumconfig"); i.hasNext(); ) {
414             Element element = (Element) i.next();
415             for (int j = 0, size = element.nodeCount(); j < size; j++) {
416                 Node node = element.node(j);
417                 if (node.getNodeTypeName().equals("Element")) {
418                     if (node.getName().equals("max_private_message")) {
419                         node.setText(String.valueOf(max_private_message));
420                     } else if (node.getName().equals("max_message_attachment_size")) {
421                         node.setText(max_message_attachment_size);
422                     } else if (node.getName().equals("max_attachment_size")) {
423                         node.setText(max_attachment_size);
424                     } else if (node.getName().equals("max_favorite_thread")) {
425                         node.setText(String.valueOf(max_favorite_thread));
426                     } else if (node.getName().equals("max_edit_days")) {
427                         node.setText(String.valueOf(max_edit_days));
428                     } else if (node.getName().equals("max_attach_days")) {
429                         node.setText(String.valueOf(max_attach_days));
430                     } else if (node.getName().equals("max_delete_days")) {
431                         node.setText(String.valueOf(max_delete_days));
432                     } else if (node.getName().equals("rows_per_page")) {
433                         node.setText(String.valueOf(rows_per_page));
434                     } else if (node.getName().equals("rows_per_rss")) {
435                         node.setText(String.valueOf(rows_per_rss));
436                     } else if (node.getName().equals("hot_topic_threshold")) {
437                         node.setText(String.valueOf(hot_topic_threshold));
438
439                     } else if (node.getName().equals("max_posts_per_hour")) {
440                         node.setText(String.valueOf(max_posts_per_hour));
441                     } else if (node.getName().equals("max_members_per_hour")) {
442                         node.setText(String.valueOf(max_members_per_hour));
443                     } else if (node.getName().equals("max_logins_per_hour")) {
444                         node.setText(String.valueOf(max_logins_per_hour));
445                     } else if (node.getName().equals("max_messages_per_hour")) {
446                         node.setText(String.valueOf(max_messages_per_hour));
447
448                     } else if (node.getName().equals("max_chars_in_short_summary")) {
449                         node.setText(String.valueOf(max_chars_in_short_summary));
450                     } else if (node.getName().equals("max_chars_in_long_summary")) {
451                         node.setText(String.valueOf(max_chars_in_long_summary));
452                     } else if (node.getName().equals("max_chars_in_rss")) {
453                         node.setText(String.valueOf(max_chars_in_rss));
454
455                     } else if (node.getName().equals("enable_backup_on_server")) {
456                         node.setText(enable_backup_on_server);
457                     } else if (node.getName().equals("max_import_size")) {
458                         node.setText(max_import_size);
459                     }
460                 }
461             }
462         }
463         saveDocument(document, strPathName + "mvnforum.xml");
464         request.setAttribute("step", "2");
465     }
466
467     public void updateConfigMVNCore(GenericRequest request)
468         throws BadInputException, DocumentException, IOException,
469         AssertionException, DatabaseException, AuthenticationException {
470
471         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
472         MVNForumPermission permission = onlineUser.getPermission();
473         permission.ensureCanAdminSystem();
474
475         String JavaDoc enable_mvnforum = GenericParamUtil.getParameterSafe(request, "enable_mvnforum", true);
476         String JavaDoc enable_mvncms = GenericParamUtil.getParameterSafe(request, "enable_mvncms", true);
477
478         String JavaDoc use_datasource = GenericParamUtil.getParameterSafe(request, "use_datasource", true);
479         boolean isUseDatasource = use_datasource.equals("true") ? true : false;
480
481         int database_type = 0;
482         String JavaDoc driver_class_name = "";
483         String JavaDoc database_url = "";
484         String JavaDoc database_user = "";
485         String JavaDoc database_password = "";
486         int max_connection = 0;
487         int max_time_to_wait = 0;
488         int minutes_between_refresh = 0;
489         String JavaDoc datasource_name = "";
490
491         if (isUseDatasource == false) {
492             database_type = GenericParamUtil.getParameterUnsignedInt(request, "database_type");
493             driver_class_name = GenericParamUtil.getParameterSafe(request, "driver_class_name", true);
494             database_url = GenericParamUtil.getParameterSafe(request, "database_url", true);
495             database_user = GenericParamUtil.getParameterSafe(request, "database_user", true);
496             database_password = GenericParamUtil.getParameterSafe(request, "database_password", false);
497             max_connection = GenericParamUtil.getParameterUnsignedInt(request, "max_connection");
498             max_time_to_wait = GenericParamUtil.getParameterUnsignedInt(request, "max_time_to_wait");
499             minutes_between_refresh = GenericParamUtil.getParameterUnsignedInt(request, "minutes_between_refresh");
500         } else {
501             datasource_name = GenericParamUtil.getParameterSafe(request, "datasource_name", false);
502         }
503
504         String JavaDoc default_mail_from = GenericParamUtil.getParameterEmail(request, "default_mail_from");
505
506         String JavaDoc use_mailsource = GenericParamUtil.getParameterSafe(request, "use_mailsource", true);
507         boolean isUseMailsource = use_mailsource.equals("true") ? true : false;
508
509         String JavaDoc mail_server = "";
510         String JavaDoc username = "";
511         String JavaDoc password = "";
512         int port = 0;
513         String JavaDoc mailsource_name = "";
514
515         if (isUseMailsource == false) {
516             mail_server = GenericParamUtil.getParameterSafe(request, "mail_server", true);
517             username = GenericParamUtil.getParameterSafe(request, "username", false);
518             password = GenericParamUtil.getParameterSafe(request, "password", false);
519             port = GenericParamUtil.getParameterUnsignedInt(request, "port");
520         } else {
521             mailsource_name = GenericParamUtil.getParameterSafe(request, "mailsource_name", true);
522         }
523
524         String JavaDoc context_path = GenericParamUtil.getParameterSafe(request, "context_path", false);
525         String JavaDoc server_path = GenericParamUtil.getParameterSafe(request, "server_path", true);
526
527         int server_hour_offset = GenericParamUtil.getParameterInt(request, "server_hour_offset");
528
529         String JavaDoc blocked_user_agent = GenericParamUtil.getParameterSafe(request, "blocked_user_agent", false);
530         String JavaDoc blocked_ip = GenericParamUtil.getParameterSafe(request, "blocked_ip", false);
531
532         String JavaDoc enable_link_nofollow = GenericParamUtil.getParameterSafe(request, "enable_link_nofollow", true);
533         String JavaDoc enable_encode_url = GenericParamUtil.getParameterSafe(request, "enable_encode_url", true);
534         String JavaDoc portal_type = GenericParamUtil.getParameterSafe(request, "portal_type", true);
535         String JavaDoc urlresolver_implementation = GenericParamUtil.getParameterSafe(request, "urlresolver_implementation", true);
536         String JavaDoc uploadparser_implementation = GenericParamUtil.getParameterSafe(request, "uploadparser_implementation", true);
537         String JavaDoc mvncoreservice_implementation = GenericParamUtil.getParameterSafe(request, "mvncoreservice_implementation", true);
538         
539         String JavaDoc mailinterceptor_implementation = GenericParamUtil.getParameterSafe(request, "mailinterceptor_implementation", false);
540         String JavaDoc contentinterceptor_implementation = GenericParamUtil.getParameterSafe(request, "contentinterceptor_implementation", false);
541         String JavaDoc loginidinterceptor_implementation = GenericParamUtil.getParameterSafe(request, "loginidinterceptor_implementation", false);
542
543         // Now checking the validity of value
544
Locale locale = onlineUser.getLocale();
545
546         MyUtil.checkClassName(locale, driver_class_name, true);
547
548         MyUtil.checkClassName(locale, urlresolver_implementation, true);
549         MyUtil.checkClassName(locale, uploadparser_implementation, true);
550         MyUtil.checkClassName(locale, mvncoreservice_implementation, true);
551         
552         MyUtil.checkClassName(locale, mailinterceptor_implementation, false);
553         MyUtil.checkClassName(locale, contentinterceptor_implementation, false);
554         MyUtil.checkClassName(locale, loginidinterceptor_implementation, false);
555
556         // End checking, now save the value
557
String JavaDoc strPathName = FileUtil.getServletClassesPath();
558         SAXReader reader = new SAXReader();
559         Document document = reader.read(new File(strPathName + "mvncore.xml"));
560         Element root = document.getRootElement();
561
562         // iterate through child elements of root
563
for (Iterator i = root.elementIterator(); i.hasNext(); ) {
564             Element element = (Element) i.next();
565             for (int j = 0, size = element.nodeCount(); j < size; j++) {
566                 Node node = element.node(j);
567                 if (node.getNodeTypeName().equals("Element")) {
568                     if (node.getName().equals("enable_mvnforum")) {
569                         node.setText(enable_mvnforum);
570                     } else if (node.getName().equals("enable_mvncms")) {
571                         node.setText(enable_mvncms);
572
573                     // below are database stuffs
574
} else if (node.getName().equals("database_type")) {
575                         node.setText(String.valueOf(database_type));
576                     } else if (node.getName().equals("use_datasource")) {
577                         node.setText(use_datasource);
578                     } else if (node.getName().equals("driver_class_name")) {
579                         if (isUseDatasource == false) {
580                             node.setText(driver_class_name);
581                         }
582                     } else if (node.getName().equals("database_url")) {
583                         if (isUseDatasource == false) {
584                             node.setText(database_url);
585                         }
586                     } else if (node.getName().equals("database_user")) {
587                         if (isUseDatasource == false) {
588                             node.setText(database_user);
589                         }
590                     } else if (node.getName().equals("database_password")) {
591                         if (isUseDatasource == false) {
592                             node.setText(database_password);
593                         }
594                     } else if (node.getName().equals("max_connection")) {
595                         if (isUseDatasource == false) {
596                             node.setText(String.valueOf(max_connection));
597                         }
598                     } else if (node.getName().equals("max_time_to_wait")) {
599                         if (isUseDatasource == false) {
600                             node.setText(String.valueOf(max_time_to_wait));
601                         }
602                     } else if (node.getName().equals("minutes_between_refresh")) {
603                         if (isUseDatasource == false) {
604                             node.setText(String.valueOf(minutes_between_refresh));
605                         }
606                     } else if (node.getName().equals("datasource_name")) {
607                         if (isUseDatasource) {
608                             node.setText(datasource_name);
609                         }
610
611                     // below are mail stuffs
612
} else if (node.getName().equals("default_mail_from")) {
613                         node.setText(default_mail_from);
614                     } else if (node.getName().equals("use_mailsource")) {
615                         node.setText(use_mailsource);
616                     } else if (node.getName().equals("mail_server")) {
617                         if (isUseMailsource == false) {
618                             node.setText(mail_server);
619                         }
620                     } else if (node.getName().equals("username")) {
621                         if (isUseMailsource == false) {
622                             node.setText(username);
623                         }
624                     } else if (node.getName().equals("password")) {
625                         if (isUseMailsource == false) {
626                             node.setText(password);
627                         }
628                     } else if (node.getName().equals("port")) {
629                         if (isUseMailsource == false) {
630                             node.setText(String.valueOf(port));
631                         }
632                     } else if (node.getName().equals("mailsource_name")) {
633                         if (isUseMailsource) {
634                             node.setText(String.valueOf(mailsource_name));
635                         }
636
637                     // below are context path stuffs
638
} else if (node.getName().equals("context_path")) {
639                         node.setText(context_path);
640                     } else if (node.getName().equals("server_path")) {
641                         node.setText(server_path);
642
643                     } else if (node.getName().equals("server_hour_offset")) {
644                         node.setText(String.valueOf(server_hour_offset));
645
646                     } else if (node.getName().equals("blocked_user_agent")) {
647                         node.setText(blocked_user_agent);
648                     } else if (node.getName().equals("blocked_ip")) {
649                         node.setText(blocked_ip);
650
651                     // below are mvncore stuffs
652
} else if (node.getName().equals("enable_link_nofollow")) {
653                         node.setText(enable_link_nofollow);
654                     } else if (node.getName().equals("enable_encode_url")) {
655                         node.setText(enable_encode_url);
656                     } else if (node.getName().equals("portal_type")) {
657                         node.setText(portal_type);
658                     } else if (node.getName().equals("urlresolver_implementation")) {
659                         node.setText(urlresolver_implementation);
660                     } else if (node.getName().equals("uploadparser_implementation")) {
661                         node.setText(uploadparser_implementation);
662                     } else if (node.getName().equals("mvncoreservice_implementation")) {
663                         node.setText(mvncoreservice_implementation);
664                         
665                     // below are interceptor stuffs
666
} else if (node.getName().equals("mailinterceptor_implementation")) {
667                         node.setText(mailinterceptor_implementation);
668                     } else if (node.getName().equals("contentinterceptor_implementation")) {
669                         node.setText(contentinterceptor_implementation);
670                     } else if (node.getName().equals("loginidinterceptor_implementation")) {
671                         node.setText(loginidinterceptor_implementation);
672                     }
673                 }
674             }
675         }
676         saveDocument(document, strPathName + "mvncore.xml");
677         request.setAttribute("action", "updatemvncore");
678     }
679
680     public void updateUrlPattern(GenericRequest request)
681         throws BadInputException, DocumentException, IOException,
682         AssertionException, AuthenticationException, DatabaseException {
683
684         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
685         MVNForumPermission permission = onlineUser.getPermission();
686         permission.ensureCanAdminSystem();
687
688         String JavaDoc admin_url = GenericParamUtil.getParameterSafe(request, "admin_url", true);
689         String JavaDoc user_url = GenericParamUtil.getParameterSafe(request, "user_url", true);
690
691         String JavaDoc strPathName = FileUtil.getServletClassesPath();
692         SAXReader reader = new SAXReader();
693         String JavaDoc xmlFilePath = strPathName + "mvnforum.xml";
694         Document document = reader.read(new File(xmlFilePath));
695
696         Element root = document.getRootElement();
697         for (int i = 0; i < root.nodeCount(); i++) {
698             Node node = root.node(i);
699             //log.debug("Node " + i + " = " + node.getName());
700
if (node.getNodeTypeName().equals("Element")) {
701                 if (node.getName().equals("adminmoduleconfig")) {
702                     Node subElement = ((Element) node).element("url_pattern");
703                     //log.debug("sub element " + subElement);
704
subElement.setText(admin_url);
705                 } else if (node.getName().equals("usermoduleconfig")) {
706                     Node subElement = ((Element) node).element("url_pattern");
707                     //log.debug("sub element " + subElement);
708
subElement.setText(user_url);
709                 }
710             }
711         }
712
713         saveDocument(document, xmlFilePath);
714         request.setAttribute("action", "updateurls");
715     }
716
717     public void configBackupProcess(GenericRequest request)
718         throws IOException, AssertionException, DatabaseException, AuthenticationException {
719
720         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
721         MVNForumPermission permission = onlineUser.getPermission();
722         permission.ensureCanAdminSystem();
723
724         String JavaDoc servletClassPath = FileUtil.getServletClassesPath();
725
726         String JavaDoc mvncoreFileName = servletClassPath + File.separator + "mvncore.xml";
727         String JavaDoc mvnforumFileName = servletClassPath + File.separator + "mvnforum.xml";
728
729         String JavaDoc pattern = "yyyy-MM-dd_HH-mm-ss";
730         String JavaDoc nowDesc = DateUtil.format(new Date(), pattern);
731         String JavaDoc newMVNCoreFileName = servletClassPath + File.separator + "mvncore_" + nowDesc + ".xml";
732         String JavaDoc newMVNForumFileName = servletClassPath + File.separator + "mvnforum_" + nowDesc + ".xml";
733
734         // We don't have to check files here, we check it in FileUtil.copyFile
735
FileUtil.copyFile(mvncoreFileName, newMVNCoreFileName, false);
736         FileUtil.copyFile(mvnforumFileName, newMVNForumFileName, false);
737
738         File newMVNCoreFile = new File(newMVNCoreFileName);
739         File newMVNForumFile = new File(newMVNForumFileName);
740
741         request.setAttribute("MVNCoreFileName", newMVNCoreFile.getAbsolutePath());
742         request.setAttribute("MVNForumFileName", newMVNForumFile.getAbsolutePath());
743         request.setAttribute("step", "Backup");
744     }
745
746     private void saveDocument(Document doc, String JavaDoc fileName) throws IOException {
747         XMLWriter writer = new XMLWriter(new FileWriter(fileName));
748         writer.write(doc);
749         writer.close();
750     }
751
752     public void prepareEditTemplate(GenericRequest request)
753         throws AuthenticationException, DatabaseException, AssertionException,
754         IOException, FileNotFoundException, BadInputException {
755
756         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
757         MVNForumPermission permission = onlineUser.getPermission();
758         permission.ensureCanAdminSystem();
759
760         String JavaDoc templateName = GenericParamUtil.getParameterSafe(request, "template", false);
761         StringUtil.checkGoodName(templateName);
762         String JavaDoc subject = "";
763         String JavaDoc body = "";
764         final String JavaDoc SUBJECT_SUFFIX = "-subject.ftl";
765         final String JavaDoc BODY_SUFFIX = "-body.ftl";
766
767         if (templateName.equals("")) {
768             templateName = MVNForumGlobal.TEMPLATE_SENDACTIVATECODE_PREFIX;
769         }
770         // checking valid input here
771
if ((templateName.equals(MVNForumGlobal.TEMPLATE_FORGOTPASSWORD_PREFIX) == false) &&
772             (templateName.equals(MVNForumGlobal.TEMPLATE_SENDACTIVATECODE_PREFIX) == false) &&
773             (templateName.equals(MVNForumGlobal.TEMPLATE_WATCHMAIL_PREFIX) == false) ) {
774             throw new AssertionException("Does not accept invalid input: " + templateName);
775         }
776
777         String JavaDoc templateDir = MVNForumConfig.getTemplateDir();
778         String JavaDoc subjectFileName = templateDir + File.separator + templateName + SUBJECT_SUFFIX;
779         String JavaDoc bodyFileName = templateDir + File.separator + templateName + BODY_SUFFIX;
780
781 // subject = new String(FileUtil.getBytes(new FileInputStream(subjectFileName)), "UTF-8");
782
// body = new String(FileUtil.getBytes(new FileInputStream(bodyFileName)) , "UTF-8");
783
subject = FileUtil.readFile(subjectFileName, "UTF-8");
784         body = FileUtil.readFile(bodyFileName, "UTF-8");
785
786         request.setAttribute("TemplateSubject", subject);
787         request.setAttribute("TemplateBody", body);
788     }
789
790     public void processEditTemplate(GenericRequest request)
791         throws DatabaseException, AuthenticationException, IOException,
792         FileNotFoundException, AssertionException, BadInputException, TemplateException {
793
794         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
795         MVNForumPermission permission = onlineUser.getPermission();
796         permission.ensureCanAdminSystem();
797
798         final String JavaDoc SUBJECT_SUFFIX = "-subject.ftl";
799         final String JavaDoc BODY_SUFFIX = "-body.ftl";
800
801         String JavaDoc templateName = GenericParamUtil.getParameterSafe(request, "template", true);
802         StringUtil.checkGoodName(templateName);
803         // checking valid input here
804
if ((templateName.equals(MVNForumGlobal.TEMPLATE_FORGOTPASSWORD_PREFIX) == false) &&
805             (templateName.equals(MVNForumGlobal.TEMPLATE_SENDACTIVATECODE_PREFIX) == false) &&
806             (templateName.equals(MVNForumGlobal.TEMPLATE_WATCHMAIL_PREFIX) == false) ) {
807             throw new AssertionException("Does not accept invalid input: " + templateName);
808         }
809
810         String JavaDoc subject = GenericParamUtil.getParameter(request, "subject", true);
811         String JavaDoc body = GenericParamUtil.getParameter(request, "body", true);
812
813         String JavaDoc templateDir = MVNForumConfig.getTemplateDir();
814
815         String JavaDoc subjectFileName = templateDir + File.separator + templateName + SUBJECT_SUFFIX;
816         String JavaDoc bodyFileName = templateDir + File.separator + templateName + BODY_SUFFIX;
817
818         // just for test freemakers
819
SimpleHash root = new SimpleHash();
820         try {
821             Configuration cfg = MVNForumConfig.getFreeMarkerConfiguration();
822             if (templateName.equals(MVNForumGlobal.TEMPLATE_SENDACTIVATECODE_PREFIX)) {
823                 root.put("serverName", "");
824                 root.put("MVNForumInfo", "");
825                 root.put("activationUrl", "");
826                 root.put("memberName", "");
827                 root.put("activateCode", "");
828             } else if (templateName.equals(MVNForumGlobal.TEMPLATE_FORGOTPASSWORD_PREFIX)) {
829                 root.put("serverName", "");
830                 root.put("MVNForumInfo", "");
831                 root.put("passwordResetUrl", "");
832                 root.put("memberName", "");
833                 root.put("currentTempPassword", "");
834             } else if (templateName.equals(MVNForumGlobal.TEMPLATE_WATCHMAIL_PREFIX)) {
835                 root.put("lastSent", "");
836                 root.put("now", "");
837                 root.put("forumBase", "");
838
839                 ArrayList list = new ArrayList();
840                 SimpleHash subroot = new SimpleHash();
841                 subroot.put("leader", true);
842                 subroot.put("categoryName", "");
843                 subroot.put("forumName", "");
844                 subroot.put("threadTopic", "");
845                 subroot.put("memberName", "");
846                 subroot.put("lastPostMemberName", "");
847                 subroot.put("threadLastPostDate", "");
848                 subroot.put("threadUrl", "");
849                 list.add(subroot);
850
851                 root.put("threadWatchList", list);
852             } else {
853                 throw new AssertionException("Does not accept invalid input: " + templateName);
854             }
855             StringReader subjectReader = new StringReader(subject);
856             StringReader bodyReader = new StringReader(body);
857
858             Template subjectTemplate = new Template("", subjectReader, cfg, "");
859             StringWriter subjectWriter = new StringWriter(256);
860             subjectTemplate.process(root, subjectWriter);
861
862             Template bodyTemplate = new Template("", bodyReader, cfg, "");
863             StringWriter bodyWriter = new StringWriter(1024);
864             bodyTemplate.process(root, bodyWriter);
865         } catch(TemplateException ex) {
866             throw ex;
867         }
868         FileUtil.writeFile(subject, subjectFileName, "UTF-8");
869         FileUtil.writeFile(body, bodyFileName, "UTF-8");
870
871         request.setAttribute("Successful", "true");
872         request.setAttribute("TemplateSubject", subject);
873         request.setAttribute("TemplateBody", body);
874     }
875
876     public void commitConfig(GenericRequest request)
877         throws DatabaseException, AuthenticationException, AssertionException {
878
879         OnlineUser onlineUser = onlineUserManager.getOnlineUser(request);
880         MVNForumPermission permission = onlineUser.getPermission();
881         permission.ensureCanAdminSystem();
882         MVNForumConfig.reload();
883         MVNCoreConfig.reload();
884         request.setAttribute("action", "commit");
885     }
886 }
887
Popular Tags