|
What this is
This file is included in the DevDaily.com
"Java Source Code
Warehouse" project. The intent of this project is to help you "Learn
Java by Example" TM.
Other links
The source code
/*
* $Header: /cvsroot/mvnforum/mvnforum/src/com/mvnforum/admin/AdminModuleProcessor.java,v 1.71.2.1 2005/05/20 08:52:55 minhnn Exp $
* $Author: minhnn $
* $Revision: 1.71.2.1 $
* $Date: 2005/05/20 08:52:55 $
*
* ====================================================================
*
* Copyright (C) 2002-2005 by MyVietnam.net
*
* This program is free software; you can redistribute it and/or
* modify it under the terms of the GNU General Public License
* as published by the Free Software Foundation; either version 2
* of the License, or any later version.
*
* All copyright notices regarding mvnForum MUST remain intact
* in the scripts and in the outputted HTML.
* The "powered by" text/logo with a link back to
* http://www.mvnForum.com and http://www.MyVietnam.net in the
* footer of the pages MUST remain visible when the pages
* are viewed on the internet or intranet.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with this program; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
*
* Support can be obtained from support forums at:
* http://www.mvnForum.com/mvnforum/index
*
* Correspondence and Marketing Questions can be sent to:
* info@MyVietnam.net
*
* @author: Minh Nguyen minhnn@MyVietnam.net
* @author: Mai Nguyen mai.nh@MyVietnam.net
*/
package com.mvnforum.admin;
import java.io.IOException;
import javax.servlet.ServletContext;
import javax.servlet.ServletException;
import javax.servlet.http.*;
import com.mvnforum.URLMap;
import com.mvnforum.auth.*;
import net.myvietnam.mvncore.exception.*;
import net.myvietnam.mvncore.filter.DisableHtmlTagFilter;
import net.myvietnam.mvncore.util.ParamUtil;
import net.myvietnam.mvncore.util.StringUtil;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
class AdminModuleProcessor {
private static Log log = LogFactory.getLog(AdminModuleProcessor.class);
private final String ORIGINAL_REQUEST = "mvnforum.admin.OriginalRequest";
private HttpServlet adminServlet = null;
//private ServletContext servletContext = null;
private OnlineUserManager onlineUserManager = OnlineUserManager.getInstance();
private AdminModuleURLMapHandler urlMapHandler = new AdminModuleURLMapHandler();
private ForumWebHandler forumWebHandler = new ForumWebHandler();
private CategoryWebHandler categoryWebHandler = new CategoryWebHandler();
private MemberWebHandler memberWebHandler = new MemberWebHandler();
private WatchWebHandler watchWebHandler = new WatchWebHandler();
private GroupsWebHandler groupsWebHandler = new GroupsWebHandler();
private MemberGroupWebHandler memberGroupWebHandler = new MemberGroupWebHandler();
private GroupPermissionWebHandler groupPermissionWebHandler = new GroupPermissionWebHandler();
private GroupForumWebHandler groupForumWebHandler = new GroupForumWebHandler();
private RankWebHandler rankWebHandler = new RankWebHandler();
private MemberPermissionWebHandler memberPermissionWebHandler = new MemberPermissionWebHandler();
private MemberForumWebHandler memberForumWebHandler = new MemberForumWebHandler();
private GeneralAdminTasksWebHandler generalAdminTasksWebHandler = new GeneralAdminTasksWebHandler();
private ConfigurationWebHandler configurationWebHandler = new ConfigurationWebHandler();
//Netmama
private CompanyWebHandler companyWebHandler = new CompanyWebHandler();
private TutorWebHandler tutorWebHandler = new TutorWebHandler();
private MemberCompanyWebHandler memberCompanyWebHandler = new MemberCompanyWebHandler();
private ServletContext servletContext = null;
public AdminModuleProcessor(HttpServlet servlet) {
adminServlet = servlet;
servletContext = servlet.getServletContext();
}
/**
* This method handles the <code>requestURI, and invokes the needed
* procedure (if the current user has the permission to perform that task).
* <br/>
* For example, URI <code>"/addforumprocess" invokes the call to
* <code>forumWebHandler.processAdd(request);.
* After the task is performed, we use the <code>AdminModuleURLMapHandler
* to get the <code>responseURI. That responseURI is
* returned back to the calling method, so it can decide and act on it
* (to redirect to that URI).<br/>
*
* @param request The <code>HttpServletRequest object of this HTTP request.
* @param response The <code>HttpServletResponse object of this HTTP request.
* @return responseURI to be redirected to. <b>It could be null, which
* means we are not supposed to do any redirection, since the output was
* already commited (for example, if we sent (downloaded) a file to the user.
*/
public String process(HttpServletRequest request, HttpServletResponse response)
throws IOException, ServletException {
long start = 0;
String requestURI = StringUtil.getEmptyStringIfNull(request.getPathInfo());
String responseURI = null;
OnlineUser onlineUser = null;
if (log.isDebugEnabled()) {
start = System.currentTimeMillis();
log.debug("AdminModuleProcessor : requestURI = " + requestURI);
}
// step 1: some command need to be processed before we do the URI mapping (of the MODAL)
try {
// always check for Authenticated User
onlineUser = onlineUserManager.getOnlineUser(request);
onlineUser.updateNewMessageCount(false);
MVNForumPermission permission = onlineUser.getPermission();
if ( !requestURI.equals("") &&
!requestURI.equals("/") &&
!requestURI.equals("/login") &&
!requestURI.equals("/loginprocess") &&
!requestURI.equals("/logout")) {
permission.ensureIsAuthenticated();
if (onlineUser.getAuthenticationType() == OnlineUser.AUTHENTICATION_TYPE_COOKIE) {
throw new AuthenticationException(NotLoginException.COOKIE_NOT_ALLOWED);
}
}
if (requestURI.equals("/forummanagement")) {
forumWebHandler.prepareForumManagement(request);
} else if (requestURI.equals("/editgroupforumpermission")) {
groupForumWebHandler.prepareList(request);
} else if (requestURI.equals("/updategroupforumpermission")) {
groupForumWebHandler.processUpdate(request);
} else if (requestURI.equals("/addforum")) {
permission.ensureCanAddForum();
} else if (requestURI.equals("/addforumprocess")) {
forumWebHandler.processAdd(request, response);
} else if (requestURI.equals("/deleteforum")) {
forumWebHandler.prepareDelete(request);
} else if (requestURI.equals("/deleteforumprocess")) {
forumWebHandler.processDelete(request);
} else if (requestURI.equals("/editforum")) {
forumWebHandler.prepareEdit(request);
} else if (requestURI.equals("/updateforum")) {
forumWebHandler.processUpdate(request, response);
} else if (requestURI.equals("/updateforumorder")) {
forumWebHandler.processUpdateForumOrder(request);
} else if (requestURI.equals("/addcategory")) {
permission.ensureCanAddCategory();
} else if (requestURI.equals("/addcategoryprocess")) {
categoryWebHandler.processAdd(request, response);
} else if (requestURI.equals("/deletecategory")) {
categoryWebHandler.prepareDelete(request);
} else if (requestURI.equals("/deletecategoryprocess")) {
categoryWebHandler.processDelete(request);
} else if (requestURI.equals("/editcategory")) {
categoryWebHandler.prepareEdit(request);
} else if (requestURI.equals("/updatecategory")) {
categoryWebHandler.processUpdate(request, response);
} else if (requestURI.equals("/updatecategoryorder")) {
categoryWebHandler.processUpdateCategoryOrder(request);
} else if (requestURI.equals("/rankmanagement")) {
rankWebHandler.prepareList(request);
} else if (requestURI.equals("/editrank")) {
rankWebHandler.prepareEdit(request);
} else if (requestURI.equals("/editrankprocess")) {
rankWebHandler.processUpdate(request, response);
} else if (requestURI.equals("/addrankprocess")) {
rankWebHandler.processAdd(request, response);
} else if (requestURI.equals("/deleterankprocess")) {
rankWebHandler.processDelete(request);
} else if (requestURI.equals("/usermanagement")) {
memberWebHandler.prepareShowUserManagement(request);
} else if (requestURI.equals("/permissionsummary")) {
memberWebHandler.preparePermissionSummary(request);
} else if (requestURI.equals("/viewmemberpermissions")) {
memberWebHandler.prepareViewPermission(request);
} else if (requestURI.equals("/deletenonactivatedmembers")) {
memberWebHandler.prepareDeleteNonActivatedNoPostMembers(request);
} else if (requestURI.equals("/deletenonactivatedmembersprocess")) {
memberWebHandler.processDeleteNonActivatedNoPostMembers(servletContext, request);
} else if (requestURI.equals("/addmemberprocess")) {
memberWebHandler.processAdd(request);
} else if (requestURI.equals("/changememberstatusprocess")) {
memberWebHandler.processUpdateMemberStatus(request);
} else if (requestURI.equals("/viewmember")) {
memberWebHandler.prepareView(request);
} else if (requestURI.equals("/editmember")) {
memberWebHandler.prepareEdit(request);
} else if (requestURI.equals("/updatemember")) {
memberWebHandler.processEdit(request, response);
} else if (requestURI.equals("/changepassword")) {
memberWebHandler.prepareChangePassword(request);
} else if (requestURI.equals("/changepasswordprocess")) {
memberWebHandler.processChangePassword(request);
} else if (requestURI.equals("/editmembertitle")) {
memberWebHandler.prepareView(request);
} else if (requestURI.equals("/editmembertitleprocess")) {
memberWebHandler.processUpdateMemberTitle(request, response);
} else if (requestURI.equals("/resetsignatureprocess")) {
memberWebHandler.processResetMemberSignature(request);
} else if (requestURI.equals("/resetavatarprocess")) {
memberWebHandler.processResetMemberAvatar(request);
} else if (requestURI.equals("/resetactivationprocess")) {
memberWebHandler.processResetMemberActivation(request);
} else if (requestURI.equals("/deletewatch")) {
watchWebHandler.processDelete_forMember(request);
} else if (requestURI.equals("/addgroupprocess")) {
groupsWebHandler.processAdd(request, response);
} else if (requestURI.equals("/deletegroup")) {
groupsWebHandler.prepareDelete(request);
} else if (requestURI.equals("/deletegroupprocess")) {
groupsWebHandler.processDelete(request);
} else if (requestURI.equals("/groupmanagement")) {
groupsWebHandler.prepareList(request);
} else if (requestURI.equals("/viewgroup")) {
groupsWebHandler.prepareView(request);
} else if (requestURI.equals("/editgroupinfo")) {
groupsWebHandler.prepareView(request);
} else if (requestURI.equals("/updategroupinfo")) {
groupsWebHandler.processUpdate(request, response);
} else if (requestURI.equals("/editgroupowner")) {
groupsWebHandler.prepareView(request);
} else if (requestURI.equals("/updategroupowner")) {
groupsWebHandler.processUpdateGroupOwner(request);
} else if (requestURI.equals("/listmembergroup")) {
memberGroupWebHandler.prepareList_inGroup_limit(request);
} else if (requestURI.equals("/addmembergroup")) {
groupsWebHandler.prepareView(request);
} else if (requestURI.equals("/addmembergroupprocess")) {
memberGroupWebHandler.processAdd(request);
} else if (requestURI.equals("/deletemembergroupprocess")) {
memberGroupWebHandler.processDelete(request);
} else if (requestURI.equals("/editgrouppermission")) {
groupPermissionWebHandler.prepareList(request);
} else if (requestURI.equals("/updategrouppermission")) {
groupPermissionWebHandler.processUpdate(request);
} else if (requestURI.equals("/assignforumtogroup")) {
groupForumWebHandler.prepareAssignForumToGroup(request);
} else if (requestURI.equals("/assigngrouptoforum")) {
groupForumWebHandler.prepareAssignGroupToForum(request);
} else if (requestURI.equals("/assignforumtomember")) {
memberForumWebHandler.prepareAssignForumToMember(request);
} else if (requestURI.equals("/assignmembertoforum")) {
memberForumWebHandler.prepareAssignMemberToForum(request);
} else if (requestURI.equals("/editmemberforumpermission")) {
memberForumWebHandler.prepareList(request);
} else if (requestURI.equals("/updatememberforumpermission")) {
memberForumWebHandler.processUpdate(request);
} else if (requestURI.equals("/editmemberpermission")) {
memberPermissionWebHandler.prepareListPermission(request);
} else if (requestURI.equals("/updatememberpermission")) {
memberPermissionWebHandler.processUpdate(request);
} else if (requestURI.equals("/deletememberprocess")) {
memberWebHandler.processDeleteMember(servletContext, request);
} else if (requestURI.equals("/deletemember")) {
memberWebHandler.prepareView(request);
} else if (requestURI.equals("/edittemplate")) {
configurationWebHandler.prepareEditTemplate(request);
} else if (requestURI.equals("/updatetemplate")) {
configurationWebHandler.processEditTemplate(request);
} else if (requestURI.equals("/viewlogsystem")) {
generalAdminTasksWebHandler.prepareViewLogSystem(request);
} else if (requestURI.equals("/logframe")) {
generalAdminTasksWebHandler.prepareLogFrame(request);
} else if (requestURI.equals("/backupsystemlog")) {
generalAdminTasksWebHandler.backupSystemLog(request);
} else if (requestURI.equals("/listlogfiles")) {
generalAdminTasksWebHandler.prepareListLogFiles(request);
} else if (requestURI.equals("/downloadlogfile")) {
generalAdminTasksWebHandler.downloadLogFile(request, response);
return null;//already commited some messages, no further process is needed
} else if (requestURI.equals("/deletelogfile")) {
generalAdminTasksWebHandler.deleteLogFile(request);
} else if (requestURI.equals("/configsteponeprocess")) {
configurationWebHandler.updateConfigStepOne(request);
} else if (requestURI.equals("/configsteptwoprocess")) {
configurationWebHandler.updateConfigStepTwo(request);
} else if (requestURI.equals("/configstepthreeprocess")) {
configurationWebHandler.updateConfigStepThree(request);
} else if (requestURI.equals("/configbackupprocess")) {
configurationWebHandler.configBackupProcess(request);
} else if (requestURI.equals("/configurlpatternprocess")) {
configurationWebHandler.updateUrlPattern(request);
} else if (requestURI.equals("/commitconfigs")) {
configurationWebHandler.commitConfig(request);
} else if (requestURI.equals("/restoreconfigbackupprocess")) {
//configurationWebHandler.configBackupProcess();
} else if (requestURI.equals("/index")) {
generalAdminTasksWebHandler.prepareShowIndex(request);
} else if (requestURI.equals("/changemode")) {
generalAdminTasksWebHandler.changeShowUserArea(request);
} else if (requestURI.equals("/testsystem")) {
generalAdminTasksWebHandler.prepareTestSystem(request);
} else if (requestURI.equals("/importexport")) {
generalAdminTasksWebHandler.prepareImportExport(request);
} else if (requestURI.equals("/importprocess")) {
generalAdminTasksWebHandler.importXmlZip(request, response);
return null;//already commited some messages, no further process is needed
} else if (requestURI.equals("/exportprocess")) {
generalAdminTasksWebHandler.exportXmlZip(request);
} else if (requestURI.equals("/getexportprocess")) {
generalAdminTasksWebHandler.getExportXmlZip(request, response);
return null;//already commited file or raised exception, no further process is needed
} else if (requestURI.equals("/deleteexportprocess")) {
generalAdminTasksWebHandler.deleteExportXmlZip(request);
} else if (requestURI.equals("/misctasks")) {
generalAdminTasksWebHandler.prepareRebuildIndex(request);
} else if (requestURI.equals("/rebuildindex")) {
generalAdminTasksWebHandler.rebuildIndex(request);
} else if (requestURI.equals("/sendmail")) {
generalAdminTasksWebHandler.prepareSendMail(request);
} else if (requestURI.equals("/sendmailprocess")) {
generalAdminTasksWebHandler.sendMail(request);
} else if (requestURI.equals("/sendactivatemailtoallprocess")) {
generalAdminTasksWebHandler.sendActivateMailToAll(request);
} else if (requestURI.equals("/companymanagement")) {
companyWebHandler.prepareShowCompanyManagement(request);
} else if (requestURI.equals("/addcompanyprocess")) {
companyWebHandler.processAdd(servletContext, request);
} else if (requestURI.equals("/viewcompany")) {
companyWebHandler.prepareView(request);
} else if (requestURI.equals("/searchcompany")) {
//companyWebHandler.prepareShowCompanyManagement(request);
} else if (requestURI.equals("/searchcompanyprocess")) {
companyWebHandler.processSearch(request);
} else if (requestURI.equals("/searchmember")) {
//memberWebHandler.prepareShowCompanyManagement(request);
} else if (requestURI.equals("/searchmemberprocess")) {
memberWebHandler.processSearch(request);
} else if (requestURI.equals("/editcompanyinfo")) {
companyWebHandler.prepareView(request);
} else if (requestURI.equals("/editcompanyinfoprocess")) {
companyWebHandler.processUpdateCompanyInfo(request);
} else if (requestURI.equals("/changecompanylogo")) {
companyWebHandler.prepare(request);
} else if (requestURI.equals("/changecompanylogoprocess")) {
companyWebHandler.processChangeLogo(servletContext, request);
} else if (requestURI.equals("/changecompanycss")) {
companyWebHandler.prepare(request);
} else if (requestURI.equals("/changecompanycssprocess")) {
companyWebHandler.processChangeCss(servletContext, request);
} else if (requestURI.equals("/deletecompany")) {
companyWebHandler.prepare(request);
} else if (requestURI.equals("/deletecompanyprocess")) {
companyWebHandler.processDelete(servletContext, request);
} else if (requestURI.equals("/addmembercompany")) {
companyWebHandler.prepareView(request);
} else if (requestURI.equals("/addmembercompanyprocess")) {
memberCompanyWebHandler.processAdd(request);
} else if (requestURI.equals("/deletemembercompanyprocess")) {
memberCompanyWebHandler.processDelete(request);
} else if (requestURI.equals("/listmembercompany")) {
memberCompanyWebHandler.prepareList_inCompany_limit(request);
//Netmama
} else if (requestURI.equals("/tutormanagement")) {
tutorWebHandler.prepareShowTutorManagement(request);
} else if (requestURI.equals("/assignusertotutor")) {
tutorWebHandler.prepareAssignUserToTutor(request);
} else if (requestURI.equals("/updatemembertutorprocess")) {
tutorWebHandler.updateMemberTutorProcess(request);
} else if (requestURI.equals("/updatememberexpireprocess")) {
memberWebHandler.updateMemberExpireProcess(request);
} else if (requestURI.equals("/listuseroftutor")) {
tutorWebHandler.prepareListUserToTutor(request);
} else if (requestURI.equals("/listuserexpire")) {
memberWebHandler.prepareListUserExpire(request);
} else if (requestURI.equals("/loginprocess")) {
onlineUserManager.processLogin(request, response);
String originalRequest = ParamUtil.getAttribute(request.getSession(), ORIGINAL_REQUEST);
if (originalRequest.length() > 0) {
request.getSession().setAttribute(ORIGINAL_REQUEST, "");
responseURI = originalRequest;
}
} else if (requestURI.equals("/logout")) {
onlineUserManager.logout(request, response);
request.setAttribute("Reason", "Logout successfully.");
}
} catch (AuthenticationException e) {
// make sure not from login page, we cannot set original request in this situation
// and also make sure the request's method must be GET to set the OriginalRequest
boolean shouldSaveOriginalRequest = (e.getReason()==NotLoginException.NOT_LOGIN) || (e.getReason()==NotLoginException.NOT_ENOUGH_RIGHTS);
if (shouldSaveOriginalRequest && (request.getMethod().equals("GET"))) {
String url = AdminModuleConfig.getUrlPattern() + requestURI + "?" + StringUtil.getEmptyStringIfNull(request.getQueryString());
request.getSession().setAttribute(ORIGINAL_REQUEST, url);
}
requestURI = "/login";
request.setAttribute("Reason", e.getReasonExplanation(onlineUser.getLocale()));
} catch (Exception e) {
if (e instanceof BadInputException) {
// we log in WARN level if this is the exception from user input
log.warn("Exception in AdminModuleProcessor e = " + e.getMessage(), e);
} else if (e instanceof AssertionException) {
// we log in FATAL level if this is the exception from user input
log.fatal("Exception in AdminModuleProcessor e = " + e.getMessage(), e);
} else {
log.error("Exception in AdminModuleProcessor [" + e.getClass().getName() + "] : " + e.getMessage(), e);
}
requestURI = "/error";
String message = StringUtil.getEmptyStringIfNull(e.getMessage());
if (message.length() == 0) {
message = e.getClass().getName();
}
request.getSession().setAttribute("ErrorMessage", DisableHtmlTagFilter.filter(message));
}
// step 2: map the URI (of the CONTROLLER)
try {
// See note in the ActionInUserModule
Action action = new ActionInAdminModule(request, requestURI);// may throw MissingURLMapEntryException
onlineUserManager.updateOnlineUserAction(request, action);
if (responseURI == null) {
URLMap map = urlMapHandler.getMap(requestURI, request);
responseURI = map.getResponse();
}
} catch (MissingURLMapEntryException e) {
log.error("Exception: missing urlmap entry in admin module: requestURI = " + requestURI);
responseURI = "/mvnplugin/mvnforum/admin/error.jsp";
request.getSession().setAttribute("ErrorMessage", DisableHtmlTagFilter.filter(e.getMessage()));
} catch (Exception e) {
// This will catch AuthenticationException, AssertionException, DatabaseException
// in the method onlineUserManager.updateOnlineUserAction(request, action)
responseURI = "/mvnplugin/mvnforum/admin/error.jsp";
request.getSession().setAttribute("ErrorMessage", DisableHtmlTagFilter.filter(e.getMessage()));
}
// step 3: return URI to be forwarded to or dispatched to the VIEW
if (log.isDebugEnabled()) {
long duration = System.currentTimeMillis() - start;
log.debug("AdminModuleProcessor : responseURI = " + responseURI + ". (" + duration + " ms)");
}
return responseURI;
/* Redirection is moved into ForumAdminServlet.process() method.
if (responseURI.endsWith(".jsp")) {
servletContext.getRequestDispatcher(responseURI).forward(request, response);
} else {
response.sendRedirect(ParamUtil.getContextPath() + responseURI);
}
*/
}// process method
}
|