import java.util.HashMap;
import java.util.Map;
public class TestStatus {
public static void main(String[] args) {
Context context = new Context();
context.createStatus("a");
context.handler("c");
}
public void init(){
}
}
class Exchange{
public void exchangeData(){
}
}
/*interface State{
}*/
abstract class Status{
protected Map<String, Status> map = new HashMap<String, Status>();
public Status next(String event){
if(map.get(event)!=null){
return map.get(event);
};
return null;
}
}
class AStatus extends Status{
@Override
public Status next(String event) {
addStatus();
return super.next(event);
}
public void addStatus(){
map.put("b",new BStatus());
map.put("c",new CStatus());
}
}
class BStatus extends Status{
}
class CStatus extends Status{
}
class DStatus extends Status{
}
class EStatus extends Status{
}
class FStatus extends Status{
}
class GStatus extends Status{
}
class HStatus extends Status{
}
class Context{
Map<String, String> map = new HashMap<String, String>();
Status status;
public Status createStatus(String currStatus) {
if(currStatus.equals("a")){
status= new AStatus();
}
if(currStatus.equals("b")){
status= new BStatus();
}
if(currStatus.equals("c")){
status= new CStatus();
}
if(currStatus.equals("d")){
status= new DStatus();
}
if(currStatus.equals("e")){
status= new EStatus();
}
if(currStatus.equals("f")){
status= new FStatus();
}
if(currStatus.equals("g")){
status= new GStatus();
}
if(currStatus.equals("h")){
status= new HStatus();
}
return status;
}
public Status handler(String event){
return status.next(event);
}
}