package jade.tools.logging; import java.net.InetAddress; import java.net.UnknownHostException; import java.util.Map; import jade.core.*; import jade.domain.FIPAAgentManagement.APDescription; import jade.domain.introspection.*; import jade.content.lang.sl.SLCodec; import jade.domain.JADEAgentManagement.JADEManagementOntology; import jade.tools.logging.ontology.LogManagementOntology; import jade.tools.logging.gui.LogManagerGUI; /** * This tool agent supports local and remote management of logs in JADE containers. * * @author Giovanni Caire - TILAB * @author Rosalba Bochicchio - TILAB */ public class LogManagerAgent extends Agent { private LogManagerGUI myGui; private APDescription myPlatformProfile; private AMSSubscriber myAMSSubscriber; protected void setup() { getContentManager().registerLanguage(new SLCodec()); getContentManager().registerOntology(JADEManagementOntology.getInstance()); getContentManager().registerOntology(LogManagementOntology.getInstance()); myAMSSubscriber = new AMSSubscriber() { protected void installHandlers(Map handlersTable) { handlersTable.put(IntrospectionVocabulary.META_RESETEVENTS, new EventHandler() { public void handle(Event ev) { myGui.resetTree(); } }); handlersTable.put(IntrospectionVocabulary.ADDEDCONTAINER, new EventHandler() { public void handle(Event ev) { AddedContainer ac = (AddedContainer) ev; ContainerID cid = ac.getContainer(); String name = cid.getName(); String address = cid.getAddress(); try { InetAddress addr = InetAddress.getByName(address); myGui.addContainer(name, addr); } catch (UnknownHostException uhe) { myGui.addContainer(name, null); } } }); handlersTable.put(IntrospectionVocabulary.REMOVEDCONTAINER, new EventHandler() { public void handle(Event ev) { RemovedContainer rc = (RemovedContainer) ev; ContainerID cid = rc.getContainer(); String name = cid.getName(); myGui.removeContainer(name); } }); //handle the APDescription provided by the AMS handlersTable.put(IntrospectionVocabulary.PLATFORMDESCRIPTION, new EventHandler() { public void handle(Event ev) { PlatformDescription pd = (PlatformDescription) ev; APDescription APdesc = pd.getPlatform(); myPlatformProfile = APdesc; myGui.refreshLocalPlatformName(myPlatformProfile.getName()); } }); } }; addBehaviour(myAMSSubscriber); myGui = new LogManagerGUI(this); myGui.showCorrect(); } protected void takeDown() { myGui.dispose(); send(myAMSSubscriber.getCancel()); } }