package server;

import jade.core.behaviours.FSMBehaviour;

public class TraderAgentBehaviourFSM extends FSMBehaviour
{
	//FSM states
	private static final String WAITING_STATE = "waiting";
	private static final String OBTAIN_STATE = "obtain";
	private static final String EXECUTE_STATE = "execute";
	private static final String SEND_STATE = "send";
	
	//Return values
	private int WAITING_RETURN = 0;
	private int OBTAIN_RETURN = 1;
	private int EXECUTE_RETURN = 2;
	private int SEND_RETURN = 3;
	
	public TraderAgentBehaviourFSM()
	{
		//Register states
		registerFirstState(new TraderAgentBehaviourFSM_WaitingBehaviour() , WAITING_STATE );
		registerState(new TraderAgentBehaviourFSM_ObtainBehaviour(), OBTAIN_STATE);
		registerState(new TraderAgentBehaviourFSM_ExecuteBehaviour(), EXECUTE_STATE);
		registerState(new TraderAgentBehaviourFSM_SendBehaviour(), SEND_STATE);
		
		//Register transitions
		registerTransition(WAITING_STATE,OBTAIN_STATE,WAITING_RETURN);
		registerTransition(OBTAIN_STATE,EXECUTE_STATE,OBTAIN_RETURN);
		registerTransition(EXECUTE_STATE,SEND_STATE,EXECUTE_RETURN);
		registerTransition(SEND_STATE,WAITING_STATE,SEND_RETURN);
		
		scheduleFirst();
	}
}
