?? statemachine.java.svn-base
字號:
package com.nsi.control.backend.handles;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import com.nsi.control.event.NsiEvent;
import com.nsi.control.exceptions.NsiEventException;
/**
* @author Chris Ye, created on Sep 30, 2008
*
* StateMachine
*/
public class StateMachine
{
private static Log log = LogFactory.getLog(StateMachine.class);
private Map<String, StateHandler> handlerMap;
/**
* constructor of StateMachine
*/
public StateMachine()
{
handlerMap = new HashMap<String, StateHandler>();
}
public List<String> handleEvent(NsiEvent ev) throws NsiEventException
{
String eventName = ev.getEventName();
if(eventName != null)
{
String handlerName = ev.getHandleName();
StateHandler handler = null;
try
{
if(handlerMap.get(eventName) != null)
{
handler = handlerMap.get(eventName);
}
else
{
handler = (StateHandler)getClass().getClassLoader().loadClass(handlerName).newInstance();
handlerMap.put(eventName, handler);
}
}
catch(Exception ex)
{
log.error("StateMachine: error loading " + handlerName + " : ", ex);
throw new NsiEventException("handleEvent() -- error loading " + handlerName + " : ", ex);
}
if(handler != null)
{
try
{
handler.perform(ev);
}
catch(NsiEventException ne)
{
log.error("sm-handler.perform(ev) caught NsiEventException : ", ne);
throw ne;
}
}
}
return ModelUpdateManager.getInstance().getUpdatedModels(ev);
}
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -