alvinalexander.com | career | drupal | java | mac | mysql | perl | scala | uml | unix  

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 }
... this post is sponsored by my books ...

#1 New Release!

FP Best Seller

 

new blog posts

 

Copyright 1998-2021 Alvin Alexander, alvinalexander.com
All Rights Reserved.

A percentage of advertising revenue from
pages under the /java/jwarehouse URI on this website is
paid back to open source projects.