/**
 * 
 */
package jadeinteraction;

import alice.mas.lab1.StaticUtils;
import jade.core.AID;
import jade.core.Agent;
import jade.domain.DFService;
import jade.domain.FIPAAgentManagement.DFAgentDescription;
import jade.domain.FIPAAgentManagement.ServiceDescription;
import jason.asSemantics.DefaultInternalAction;
import jason.asSemantics.TransitionSystem;
import jason.asSemantics.Unifier;
import jason.asSyntax.ListTerm;
import jason.asSyntax.ListTermImpl;
import jason.asSyntax.StringTerm;
import jason.asSyntax.StringTermImpl;
import jason.asSyntax.Term;
import jason.infra.jade.JadeRuntimeServices;

/**
 * @author Danilo Pianini
 * 
 */
public class getserviceproviders extends DefaultInternalAction {

	/**
	 * 
	 */
	private static final long serialVersionUID = 7475422473701045838L;

	@Override
	public Object execute(TransitionSystem ts, Unifier un, Term[] args)
			throws Exception {
		Agent a = alice.mas.lab4.StaticUtils.getJadeAgent(ts);
		StringTerm type = (StringTerm) args[0];
		AID[] aids = StaticUtils.searchServiceProviders(a, type.getString());
		
		ListTerm l = new ListTermImpl();
		
		for(AID aid: aids){
			l.append(new StringTermImpl(aid.getLocalName()));
		}
		
		return un.unifies(args[1], l);
	}
}
