/****************************************************************** * JADE - Java Agent DEvelopment Framework is a framework to develop * multi-agent systems in compliance with the FIPA specifications. * Copyright (C) 2002 TILAB S.p.A. * * This file is donated by Acklin B.V. to the JADE project. * * * GNU Lesser General Public License * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public * License as published by the Free Software Foundation, * version 2.1 of the License. * * This library is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * Lesser General Public License for more details. * * You should have received a copy of the GNU Lesser General Public * License along with this library; if not, write to the * Free Software Foundation, Inc., 59 Temple Place - Suite 330, * Boston, MA 02111-1307, USA. * ***************************************************************/ package jade.tools.testagent; import java.awt.*; import java.awt.event.*; import java.util.*; import javax.swing.*; import javax.swing.border.*; import jade.core.AID; import jade.core.Agent; import jade.domain.FIPANames; import jade.domain.FIPAAgentManagement.*; import jade.domain.FIPAAgentManagement.FIPAManagementOntology; import jade.content.AgentAction; import jade.content.lang.Codec; import jade.lang.acl.*; import jade.content.lang.sl.*; import jade.util.Logger; /** * This can be used as test agent for sending and receiving messages to * the Agentplatform and Other agents. * A couple of message templates are included in the menu. * * @author Chris van Aart - Acklin B.V., the Netherlands * @created May 6, 2002 */ public class TestAgent extends Agent { private static Logger logger = Logger.getMyLogger(TestAgent.class.getName()); /** * Constructor for the TestAgent */ public TestAgent() { super(); } /** * The main program for the TestAgent class * * @param args The command line arguments */ public static void main(String[] args) { String host = "cross.hq.acklin.nl"; String argsv[] = {"-host", host, "-container", "ruurd:jade.tools.testagent.TestAgent"}; jade.Boot3.main(argsv); } /** * Gets the PlatformRequest attribute of the TestAgent object * * @return The PlatformRequest value */ public ACLMessage getPlatformRequest() { ACLMessage msg = new ACLMessage(ACLMessage.REQUEST); msg.setSender(getAID()); msg.setEncoding("String"); msg.setLanguage(FIPANames.ContentLanguage.FIPA_SL0); msg.setOntology(FIPAManagementVocabulary.NAME); msg.setProtocol(FIPANames.InteractionProtocol.FIPA_REQUEST); msg.setReplyWith("Req" + (new Date()).getTime()); msg.setConversationId("Req" + (new Date()).getTime()); return msg; } /** * Description of the Method */ public void doRegisterAMS() { AMSAgentDescription amsAgentDescription = new AMSAgentDescription(); amsAgentDescription.setName(getAID()); amsAgentDescription.setOwnership(getHap()); amsAgentDescription.setState("ACTIVE"); Register register = new Register(); register.setDescription(amsAgentDescription); ACLMessage msg = createRequestMessage(this, this.getAMS(), register); itsFrame.setItsMsg(msg); } public void doRegisterDF() { ServiceDescription serviceDescr = new ServiceDescription(); serviceDescr.setName("testagent"); serviceDescr.setOwnership(getHap()); serviceDescr.setType("jade.testagent"); DFAgentDescription dFAgentDescription = new DFAgentDescription(); dFAgentDescription.setName(getAID()); dFAgentDescription.addOntologies(FIPAManagementVocabulary.NAME); dFAgentDescription.addLanguages(FIPANames.ContentLanguage.FIPA_SL0); dFAgentDescription.addServices(serviceDescr); Register register = new Register(); register.setDescription(dFAgentDescription); ACLMessage msg = createRequestMessage(this, getDefaultDF(), register); itsFrame.setItsMsg(msg); } public void doDeregisterDF() { DFAgentDescription dFAgentDescription = new DFAgentDescription(); dFAgentDescription.setName(getAID()); Deregister deregister = new Deregister(); deregister.setDescription(dFAgentDescription); ACLMessage msg = createRequestMessage(this, getDefaultDF(), deregister); itsFrame.setItsMsg(msg); } public void doDeRegisterAMS() { AMSAgentDescription amsAgentDescription = new AMSAgentDescription(); amsAgentDescription.setName(getAID()); Deregister deregister = new Deregister(); deregister.setDescription(amsAgentDescription); ACLMessage msg = createRequestMessage(this, getAMS(), deregister); itsFrame.setItsMsg(msg); } public void doSearchAMS() { AMSAgentDescription amsAgentDescription = new AMSAgentDescription(); SearchConstraints searchConstraints = new SearchConstraints(); searchConstraints.setMaxDepth(new Long(100)); searchConstraints.setMaxResults(new Long(100)); Search search = new Search(); search.setConstraints(searchConstraints); search.setDescription(amsAgentDescription); ACLMessage msg = createRequestMessage(this, getAMS(), search); itsFrame.setItsMsg(msg); } public void doSearchDF() { DFAgentDescription dFAgentDescription = new DFAgentDescription(); SearchConstraints searchConstraints = new SearchConstraints(); searchConstraints.setMaxDepth(new Long(100)); searchConstraints.setMaxResults(new Long(100)); Search search = new Search(); search.setConstraints(searchConstraints); search.setDescription(dFAgentDescription); ACLMessage msg = createRequestMessage(this, this.getDefaultDF(), search); itsFrame.setItsMsg(msg); } public void doLausannePing() { ACLMessage msg = new ACLMessage(ACLMessage.QUERY_REF); msg.setSender(getAID()); AID aclPing = new AID("acl_ping", true); aclPing.setName("acl_ping@beta.lausanne.agentcities.net"); aclPing.addAddresses("http://srv02.lausanne.agentcities.net:8080/acc"); msg.addReceiver(aclPing); msg.setReplyWith("Req" + (new Date()).getTime()); msg.setConversationId("Req" + (new Date()).getTime()); msg.setContent("ping"); itsFrame.setItsMsg(msg); } public void doLocalPing() { ACLMessage msg = new ACLMessage(ACLMessage.QUERY_REF); msg.setSender(getAID()); msg.addReceiver(getAID()); msg.setReplyWith("Req" + (new Date()).getTime()); msg.setConversationId("Req" + (new Date()).getTime()); msg.setContent("ping"); itsFrame.setItsMsg(msg); } /** * Description of the Method */ public void doHelloWorld() { ACLMessage msg = new ACLMessage(ACLMessage.INFORM); msg.setSender(getAID()); msg.addReceiver(getAID()); msg.setContent("Hello World!"); msg.setLanguage("Plain English"); msg.setOntology("World Domination"); msg.addUserDefinedParameter("key1", "value1"); msg.addUserDefinedParameter("key2", "value2"); msg.addUserDefinedParameter("key3", "value3"); itsFrame.setItsMsg(msg); } /** * Description of the Method */ public void doSystemOut() { System.out.println(itsFrame.getItsMsg()); } /** * exit method */ public void doExit() { this.doDelete(); System.exit(0); } /** * Description of the Method */ public void doNewMessage() { ACLMessage msg = new ACLMessage(ACLMessage.INFORM); msg.setSender(getAID()); itsFrame.setItsMsg(msg); } /** * Description of the Method */ public void sendMessage() { ACLMessage msg = itsFrame.getItsMsg(); itsFrame.addMessageNode("out", msg); send(msg); doNewMessage(); } /** * Description of the Method * * @param msg Description of Parameter */ public void processIncomingMessage(ACLMessage msg) { itsFrame.addMessageNode("in", msg); if (pingBehaviour) { if (msg.getContent() == null) { return; } if ((msg.getPerformative() == ACLMessage.QUERY_REF) && (msg.getContent().equalsIgnoreCase("ping") || (msg.getContent().equalsIgnoreCase("(ping)")) )) { ACLMessage alive = msg.createReply(); alive.setPerformative(ACLMessage.INFORM); alive.setSender(this.getAID()); alive.setContent("alive"); this.send(alive); itsFrame.addMessageNode("out", alive); } } } public void doReply() { ACLMessage msg = itsFrame.aclTreePanel.getCurrentACL(); if (msg == null) { return; } ACLMessage reply = msg.createReply(); reply.setSender(this.getAID()); itsFrame.aclPanel.setItsMsg(reply); } /** * Description of the Method */ protected void setup() { super.setup(); splash = new SplashScreen(); splash.setVisible(true); splash.setProgress(25); if(logger.isLoggable(Logger.FINE)) logger.log(Logger.FINE,"starting up: " + this.getAID().toString()); try { getContentManager().registerLanguage(new SLCodec(), FIPANames.ContentLanguage.FIPA_SL0); getContentManager().registerOntology(FIPAManagementOntology.getInstance(), FIPAManagementVocabulary.NAME); } catch (Exception e) { e.printStackTrace(); } splash.setProgress(50); itsFrame = new TestAgentFrame(this); splash.setProgress(75); addBehaviour(new ReceiveCyclicBehaviour(this)); splash.setProgress(100); splash.setVisible(false); } ACLMessage createRequestMessage(Agent sender, AID receiver, AgentAction what) { ACLMessage request = new ACLMessage(ACLMessage.REQUEST); request.setSender(sender.getAID()); request.addReceiver(receiver); request.setProtocol(FIPANames.InteractionProtocol.FIPA_REQUEST); request.setLanguage(FIPANames.ContentLanguage.FIPA_SL0); request.setEncoding("String"); request.setOntology(FIPAManagementVocabulary.NAME); request.setReplyWith("rw" + sender.getName() + (new Date()).getTime()); request.setConversationId("conv" + sender.getName() + (new Date()).getTime()); jade.content.onto.basic.Action act = new jade.content.onto.basic.Action(); act.setActor(receiver); act.setAction(what); try { getContentManager().fillContent(request, act); } catch (Exception e) { e.printStackTrace(); } return request; } /** * Description of the Class * * @author chris * @created May 21, 2002 */ private class SplashScreen extends JWindow { /** * Constructor for the SplashScreen object */ public SplashScreen() { try { jbInit(); this.setSize(400, 50); Dimension screenSize = Toolkit.getDefaultToolkit().getScreenSize(); this.setLocation(screenSize.width / 2 - this.getSize().width / 2, screenSize.height / 2 - this.getSize().height / 2); this.setVisible(true); this.requestFocus(); // paintImmediately(); Toolkit.getDefaultToolkit().sync(); } catch (Exception e) { e.printStackTrace(); } } /** * Sets the Progress attribute of the SplashScreen object * * @param p The new Progress value */ public void setProgress(int p) { theProgressBar.setValue(p); } void jbInit() { this.getContentPane().setLayout(gridBagLayout1); this.getContentPane().setBackground(Color.white); this.addFocusListener( new java.awt.event.FocusAdapter() { public void focusLost(FocusEvent e) { } }); jPanel1.setBorder(BorderFactory.createLineBorder(Color.black)); jPanel1.setLayout(gridBagLayout2); jLabel1.setBackground(Color.white); jLabel1.setForeground(Color.blue); jLabel1.setOpaque(true); jLabel1.setHorizontalAlignment(SwingConstants.CENTER); jLabel1.setText("loading, please wait..."); jLabel1.setIcon(dummyIcon); theProgressBar.setBackground(Color.white); theProgressBar.setForeground(Color.blue); theProgressBar.setValue(5); theProgressBar.setStringPainted(true); this.getContentPane().add(jPanel1, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0 , GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); jPanel1.add(jLabel1, new GridBagConstraints(0, 0, 1, 1, 1.0, 0.0 , GridBagConstraints.CENTER, GridBagConstraints.HORIZONTAL, new Insets(0, 0, 0, 0), 0, 0)); jPanel1.add(theProgressBar, new GridBagConstraints(0, 1, 1, 1, 1.0, 0.0 , GridBagConstraints.SOUTHEAST, GridBagConstraints.HORIZONTAL, new Insets(2, 5, 2, 5), 0, 0)); } GridBagLayout gridBagLayout1 = new GridBagLayout(); JPanel jPanel1 = new JPanel(); GridBagLayout gridBagLayout2 = new GridBagLayout(); JLabel jLabel1 = new JLabel(); JProgressBar theProgressBar = new JProgressBar(); } boolean pingBehaviour = true; ImageIcon dummyIcon = new ImageIcon(this.getClass().getResource("images/dummy.gif")); SplashScreen splash; TestAgentFrame itsFrame; } // ***EOF***