📄 screenmanager.java.svn-base
字号:
package com.nsi.control.web;
import java.util.HashMap;
import java.util.Map;
import javax.servlet.ServletContext;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.nsi.control.web.constants.ScreenFlowConstants;
import com.nsi.control.web.handles.FlowHandler;
import com.nsi.control.web.util.ScreenFlowXml;
/**
* @author Chris Ye, created on Oct 6, 2008
*
* ScreenManager
*/
public class ScreenManager
{
private static Log log = LogFactory.getLog(ScreenManager.class);
private String defaultScreen;
private Map<String,Screen> screens;
private Map<String, URLMapping> urlMappings;
/**
* constructor of ScreenManager
*/
public ScreenManager()
{
defaultScreen = ScreenFlowConstants.DEFAULT_SCREEN;
screens = new HashMap<String,Screen>();
urlMappings = new HashMap<String,URLMapping>();
}
public void init(ServletContext context)
{
urlMappings = ScreenFlowXml.getInstance().loadRequestMappings();
screens = ScreenFlowXml.getInstance().loadScreenDefinitions();
}
public void setNextScreen(HttpServletRequest req)
{
String selectedUrl = req.getParameter("urlmapping");
String currentScreen = defaultScreen;
URLMapping urlMapping = getURLMapping(selectedUrl);
log.debug("setNextScreen() -- urlMapping[" + urlMapping + "]");
if(urlMapping != null) if(!urlMapping.isUseFlowHandler())
{
currentScreen = urlMapping.getScreen();
}
else
{
FlowHandler handler = null;
String flowHandlerString = urlMapping.getFlowHandler();
try
{
handler = (FlowHandler)getClass().getClassLoader().loadClass(flowHandlerString).newInstance();
String flowResult = handler.processFlow(req);
currentScreen = urlMapping.getResultScreen(flowResult);
}
catch(Exception ex)
{
log.error("setNextScreen() -- caught loading handler: ", ex);
}
}
req.getSession().setAttribute("currentScreen", currentScreen);
}
public Map<String, Screen> getScreens()
{
return screens;
}
public void setScreens(Map<String, Screen> screens)
{
this.screens = screens;
}
public Map<String, URLMapping> getUrlMappings()
{
return urlMappings;
}
public void setUrlMappings(Map<String, URLMapping> urlMappings)
{
this.urlMappings = urlMappings;
}
public String getDefaultScreen()
{
return defaultScreen;
}
public void setDefaultScreen(String defaultScreen)
{
this.defaultScreen = defaultScreen;
}
public String getCurrentScreen(HttpSession session)
{
return (String)session.getAttribute("currentScreen");
}
public Parameter getParameter(String key, HttpSession session)
{
String currentScreen = getCurrentScreen(session);
if(currentScreen == null) currentScreen = defaultScreen;
if(screens == null || currentScreen == null) return null;
Screen screen = (Screen)screens.get(currentScreen);
if(screen == null) return null;
else return screen.getParameter(key);
}
public String getTemplate()
{
if(screens != null) return "/main.jsp";
else return null;
}
public URLMapping getURLMapping(String urlPattern)
{
if(urlMappings != null && urlMappings.containsKey(urlPattern)) return urlMappings.get(urlPattern);
else return null;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -