📄 reqprocessor.java.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 + -