diff --git a/src/MyAgent.java b/src/MyAgent.java index 786b7d3..51958fa 100644 --- a/src/MyAgent.java +++ b/src/MyAgent.java @@ -8,6 +8,9 @@ import jade.domain.FIPAAgentManagement.*; import javax.swing.*; import java.awt.*; import java.awt.event.*; +import java.util.HashMap; +import java.util.Map; +import java.util.UUID; public class MyAgent extends Agent { @@ -48,6 +51,8 @@ class MyCyclicBehaviour extends CyclicBehaviour { MyAgent myAgent; + Map messagesDB = new HashMap<>(); + public MyCyclicBehaviour(MyAgent myAgent) { @@ -67,6 +72,7 @@ class MyCyclicBehaviour extends CyclicBehaviour String ontology = message.getOntology(); String content = message.getContent(); int performative = message.getPerformative(); + if (performative == ACLMessage.REQUEST) { //I cannot answer but I will search for someone who can @@ -93,10 +99,17 @@ class MyCyclicBehaviour extends CyclicBehaviour { String foundAgent = result[0].getName().getLocalName(); myAgent.displayResponse("Agent " + foundAgent + " is universal service provider. Sending message to " + foundAgent); + + // Put into hashmap + String messageID = UUID.randomUUID().toString(); + messagesDB.put(messageID, message.getContent()); + ACLMessage forward = new ACLMessage(ACLMessage.REQUEST); forward.addReceiver(new AID(foundAgent, AID.ISLOCALNAME)); forward.setContent(content); forward.setOntology(ontology); + forward.setReplyWith(messageID); + myAgent.send(forward); } } @@ -118,8 +131,14 @@ class MyCyclicBehaviour extends CyclicBehaviour } } else - { //when it is an answer - myAgent.displayHtmlResponse(content); + { + //when it is an answer + if(message.getInReplyTo() != null && message.getInReplyTo() != "") + { + String orginalWord = messagesDB.get(message.getInReplyTo()); + + myAgent.displayHtmlResponse("Message ID: " + message.getInReplyTo() + "
Orginal word: " + orginalWord + "
Reply content: " + content); + } } } }