/**
 * 
 */
package alice.mas.lab1;

import java.util.StringTokenizer;

import jade.core.AID;
import jade.core.behaviours.CyclicBehaviour;
import jade.lang.acl.ACLMessage;
import jade.lang.acl.MessageTemplate;

/**
 * @author Danilo Pianini
 * @version 20111005
 */
public class AskForValidity extends CyclicBehaviour {

	private static final long serialVersionUID = -2094385720464037161L;
	private final Broker b;
	
	
	public AskForValidity(Broker b){
		super();
		this.b = b;
	}

	/* (non-Javadoc)
	 * @see jade.core.behaviours.Behaviour#action()
	 */
	@Override
	public void action() {
		MessageTemplate mt = MessageTemplate.MatchPerformative(ACLMessage.INFORM);
		ACLMessage msg = myAgent.receive(mt);
		if(msg!= null){
			log("Received cheating info request: "+msg.getContent());
			String word = msg.getContent().replace("property(", "").replace(")","");
			StringTokenizer tk = new StringTokenizer(word," ,");
			if(tk.hasMoreElements()){
				final String expAID = tk.nextToken();
				if(tk.hasMoreElements()){
					if(word!=null){
						 AID aid = b.checkValid(word);
						 ACLMessage reply = msg.createReply();
						 if(aid != null){
							 reply.setPerformative(ACLMessage.CONFIRM);
							 reply.setContent(aid.toString());
							 System.out.println(aid+" has word "+word);
						 } else {
							 reply.setPerformative(ACLMessage.DISCONFIRM);
							 reply.setContent("He's a cheater. Kill him.");
							 System.out.println("Someone tries to piss everybody off");
						 }
					}
				}
			}
		} else {
			block();
		}
	}

	private void log(Object s){
		System.out.println(myAgent+": "+s);
	}
}
