⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 reqprocessor.java.svn-base

📁 一个timesheet程序,用来统计开发人员的度量衡web在线程序.用于软件行业
💻 SVN-BASE
字号:
package com.nsi.control.web;

import java.util.List;

import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import javax.servlet.http.HttpSession;

import com.nsi.components.logout.LogoutEvent;
import com.nsi.constants.AppConstants;
import com.nsi.control.event.NoBackEndEvent;
import com.nsi.control.event.NsiEvent;
import com.nsi.control.exceptions.GeneralFailureException;
import com.nsi.control.exceptions.NsiEventException;

/**
 * @author Chris Ye, created on Oct 6, 2008
 *
 * ReqProcessor
 */
public class ReqProcessor
{
	private ScreenManager screenManager;
	private ServletContext context;
	private ReqToEventTranslator eventTranslator;
	/**
	 * constructor of ReqProcessor
	 */
	public ReqProcessor()
	{
	}
	/**
	 * constructor of ReqProcessor
	 * @param context
	 */
	public void init(ServletContext context)
	{
		this.context = context;
		screenManager = (ScreenManager)context.getAttribute(AppConstants.ScreenManagerKey);
		eventTranslator = new ReqToEventTranslator(screenManager);
	}
	public ScreenManager getScreenManager()
	{
		return screenManager;
	}
	public void setScreenManager(ScreenManager screenManager)
	{
		this.screenManager = screenManager;
	}
	public ServletContext getContext()
	{
		return context;
	}
	public void setContext(ServletContext context)
	{
		this.context = context;
	}
	public ReqToEventTranslator getEventTranslator()
	{
		return eventTranslator;
	}
	public void setEventTranslator(ReqToEventTranslator eventTranslator)
	{
		this.eventTranslator = eventTranslator;
	}
	public void processRequest(HttpServletRequest req, HttpServletResponse res) throws NsiEventException
	{
		NsiEvent event = null;
		ModelManager mm = (ModelManager)req.getSession().getAttribute(AppConstants.ModelManagerKey);
		ControllerWebImpl cwi = (ControllerWebImpl)req.getSession().getAttribute(AppConstants.WebControllerKey);
		if(cwi == null)
		{
			cwi = new ControllerWebImpl();
			mm.setCwi(cwi);
			req.getSession().setAttribute(AppConstants.WebControllerKey, cwi);
		}
		event = eventTranslator.processRequest(req,res);
		if(isNotProcessBackend(event))
		{
			if( isNeedNewSession(event))
			{
				req.getSession().invalidate();
				screenManager = null;
				HttpSession validsession = req.getSession(true);
				mm = new ModelManager();
				validsession.setAttribute(AppConstants.ModelManagerKey, mm);
				mm.init(validsession);
			}
		}
		else
		{
			try
			{
				List<String> updatedModelList = cwi.handleEvent(event);
				mm.notifyListeners(updatedModelList);
			}
			catch(GeneralFailureException ge)
			{
				throw new NsiEventException("processRequest() -- caught GeneralFailureException: ", ge);
			}
			catch(NsiEventException ne)
			{
				throw ne;
			}
		}
	}
	private boolean isNotProcessBackend( NsiEvent event )
	{
		boolean flag = false;
		if( (event == null) || (event instanceof NoBackEndEvent) )
		{
			flag = true;
		}
		return flag;
	}
	private boolean isNeedNewSession( NsiEvent event )
	{
		boolean flag = false;
		if( (event != null) && (event instanceof LogoutEvent))
		{
			flag = true;
		}
		return flag;
	}
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -