package org.jboss.util.state;
import java.util.HashMap;
import java.util.Map;
import java.util.Iterator;
public class State
{
private String name;
private HashMap allowedTransitions = new HashMap();
private Object data;
public State(String name)
{
this(name, null);
}
public State(String name, Map transitions)
{
this.name = name;
if( transitions != null )
{
allowedTransitions.putAll(transitions);
}
}
public String getName()
{
return name;
}
public Object getData()
{
return data;
}
public void setData(Object data)
{
this.data = data;
}
public boolean isAcceptState()
{
return allowedTransitions.size() == 0;
}
public void addTransition(Transition transition)
{
allowedTransitions.put(transition.getName(), transition);
}
public Transition getTransition(String name)
{
Transition t = (Transition) allowedTransitions.get(name);
return t;
}
public Map getTransitions()
{
return allowedTransitions;
}
public String toString()
{
StringBuffer tmp = new StringBuffer("State(name=");
tmp.append(name);
tmp.append("\n");
Iterator i = allowedTransitions.entrySet().iterator();
while( i.hasNext() )
{
Map.Entry e = (Map.Entry) i.next();
tmp.append("\t on: ");
tmp.append(e.getKey());
Transition t = (Transition) e.getValue();
tmp.append(" go to: ");
tmp.append(t.getTarget().getName());
tmp.append('\n');
}
tmp.append(')');
return tmp.toString();
}
}