package server;

import java.io.IOException;

import org.apache.xmlrpc.WebServer;

import agent.core.communication.Message;
import agent.core.memory.Memory;

import com.hp.hpl.jena.rdf.model.Resource;

import jade.core.Agent;
import jade.core.Runtime;
import jade.domain.DFService;
import jade.domain.FIPAException;
import jade.wrapper.AgentContainer;
import lookup.Lookup_ontology;
	

public class TraderAgent extends Agent
{
	private String lastMessage;
	private String lastSource;
	private String lastQuery;
	private String lastResult;
	
	WebServer xmlrpcServer;
	private static final int port = 8001;
	private Memory mem;
	private Resource agentIndividual;
	
    private AgentContainer traderContainer;
    
    private Lookup_ontology lookup;


    public TraderAgent(AgentContainer traderContainer)
    {
        this.traderContainer = traderContainer;
    }

    protected void setup()
    {
    	Message.register(this, "Trader-Agent");		
		
    	try
		{
			xmlrpcServer = new WebServer(port);
		}
		catch(IOException ioe)
		{
			System.out.println("ERROR: Registering of WebServer (Trader-Agent).");
		}
		
		mem = new Memory("config/Trader-Agent.properties","Trader-Agent");
		agentIndividual = mem.getModel().getResource(Memory.getBase()+"Trader-Agent");
		
    	System.out.println("The Trader Agent has been created!!!!!");
        
    	addBehaviour(new TraderAgentBehaviourFSM());
    }
    
    protected void takeDown()
    {
    	System.out.println("Taking down the trader agent...");
    	
    	try
    	{
    		DFService.deregister(this);
      	}
    	catch(FIPAException fe)
    	{
    		fe.printStackTrace();
    	}
    	
    	 Runtime runtime = Runtime.instance();
         runtime.shutDown();
    }

	public Resource getAgentIndividual()
	{
		return this.agentIndividual;
	}

	public Memory getMem()
	{
		return this.mem;
	}
	
	public Lookup_ontology getLookup()
	{
		return this.lookup;
	}

	public void setLastMessage(String lastMessage)
	{
		this.lastMessage = lastMessage;
	}

	public String getLastMessage()
	{
		return lastMessage;
	}

	public void setLastQuery(String lastQuery)
	{
		this.lastQuery = lastQuery;
	}

	public String getLastQuery()
	{
		return lastQuery;
	}

	public void setLastResult(String lastResult)
	{
		this.lastResult = lastResult;
	}

	public String getLastResult()
	{
		return lastResult;
	}

	public void setLastSource(String lastSource)
	{
		this.lastSource = lastSource;
	}

	public String getLastSource()
	{
		return lastSource;
	}
	
}
