diff --git a/src/fr/inrialpes/exmo/align/service/jade/JADEFIPAASRequesterAgent.java b/samples/service/JADE/JADEFIPAASRequesterAgent.java similarity index 74% rename from src/fr/inrialpes/exmo/align/service/jade/JADEFIPAASRequesterAgent.java rename to samples/service/JADE/JADEFIPAASRequesterAgent.java index 6daee0787f3067c16c3c8283704aae99c07cb734..7f83bf2f07d8389564f8a9194b9eec2e3d774298 100644 --- a/src/fr/inrialpes/exmo/align/service/jade/JADEFIPAASRequesterAgent.java +++ b/samples/service/JADE/JADEFIPAASRequesterAgent.java @@ -1,9 +1,7 @@ package fr.inrialpes.exmo.align.service.jade; -import org.semanticweb.owl.align.Parameters; +import java.util.Iterator; -import fr.inrialpes.exmo.align.service.ErrorMsg; -import fr.inrialpes.exmo.align.service.Message; import jade.core.AID; import jade.core.behaviours.CyclicBehaviour; import jade.domain.DFService; @@ -13,7 +11,6 @@ import jade.domain.FIPAAgentManagement.ServiceDescription; import jade.gui.GuiAgent; import jade.gui.GuiEvent; import jade.lang.acl.ACLMessage; -import jade.lang.acl.MessageTemplate; import jade.util.Logger; public class JADEFIPAASRequesterAgent extends GuiAgent{ @@ -112,44 +109,16 @@ public class JADEFIPAASRequesterAgent extends GuiAgent{ toSend.addReceiver(AlignementAgent); command = ev.getType(); toSend = setPerformative(toSend, command); - - switch (command){ - //LOAD - case LOAD : - toSend=addArgument(toSend, (String)ev.getParameter(0)); - break; - //ALIGN - case ALIGN : - toSend=addArgument(toSend, (String)ev.getParameter(0)); - toSend=addArgument(toSend, (String)ev.getParameter(1)); - toSend=addArgument(toSend, (String)ev.getParameter(2)); - toSend=addArgument(toSend, (String)ev.getParameter(3)); - break; - //RETRIEVE - case RETRIEVE : - toSend=addArgument(toSend, (String)ev.getParameter(0)); - toSend=addArgument(toSend, (String)ev.getParameter(1)); - break; - //STORE - case STORE : - toSend=addArgument(toSend, (String)ev.getParameter(0)); - break; - //FIND - case FIND : - toSend=addArgument(toSend, (String)ev.getParameter(0)); - toSend=addArgument(toSend, (String)ev.getParameter(1)); - break; - case CUT : - toSend=addArgument(toSend, (String)ev.getParameter(0)); - toSend=addArgument(toSend, (String)ev.getParameter(1)); - toSend=addArgument(toSend, (String)ev.getParameter(2)); - break; + for(Iterator iter=ev.getAllParameter();iter.hasNext();){ + //toSend=addArgument(toSend, (String)ev.getParameter(i)); + String next=(String)iter.next(); - //TODO ! METADATA & TRANSLATE + if (!(next.endsWith("="))){ + toSend=addArgument(toSend,next); + } } myLogger.log(Logger.INFO, this.getLocalName() + "send : "+ toSend.getContent()); this.send(toSend); - } void alertGui(Object response) { diff --git a/src/fr/inrialpes/exmo/align/service/jade/JADEFIPAASRequesterAgentGUI.java b/samples/service/JADE/JADEFIPAASRequesterAgentGUI.java similarity index 85% rename from src/fr/inrialpes/exmo/align/service/jade/JADEFIPAASRequesterAgentGUI.java rename to samples/service/JADE/JADEFIPAASRequesterAgentGUI.java index cf3006de4ab6f428d8c6f41a9dfaed2bfce25208..9c5a850b821724ab7de486b9ac07b079e185c57b 100644 --- a/src/fr/inrialpes/exmo/align/service/jade/JADEFIPAASRequesterAgentGUI.java +++ b/samples/service/JADE/JADEFIPAASRequesterAgentGUI.java @@ -6,14 +6,9 @@ import java.awt.Rectangle; import java.awt.Toolkit; import java.awt.event.ActionEvent; import java.awt.event.ActionListener; -import java.io.File; -import java.util.Iterator; -import java.util.Random; import javax.swing.BoxLayout; import javax.swing.JButton; -import javax.swing.JCheckBox; -import javax.swing.JFileChooser; import javax.swing.JLabel; import javax.swing.JOptionPane; import javax.swing.JPanel; @@ -103,7 +98,7 @@ public class JADEFIPAASRequesterAgentGUI extends javax.swing.JFrame implements private JPanel CUTAlignmentPane; private JPanel CUTMethodPane; private JPanel CUTThresholdPane; - + //METADATA PANE //TRANSLATE PANE @@ -143,7 +138,7 @@ public class JADEFIPAASRequesterAgentGUI extends javax.swing.JFrame implements ReplyPane = new JPanel(); reply = new JTextArea(20,50); reply.setEditable(false); - + main = new JPanel(); main.setLayout(new BoxLayout(main, BoxLayout.PAGE_AXIS)); @@ -258,7 +253,7 @@ public class JADEFIPAASRequesterAgentGUI extends javax.swing.JFrame implements CUTMethodValue = new JTextField(30); CUTThresholdLabel = new JLabel("Threshold"); CUTThresholdValue = new JTextField(30); - + CUTThresholdPane = new JPanel(); CUTAlignmentPane = new JPanel(); CUTMethodPane = new JPanel(); @@ -271,7 +266,7 @@ public class JADEFIPAASRequesterAgentGUI extends javax.swing.JFrame implements CUTPane.add(CUTAlignmentPane); CUTPane.add(CUTMethodPane); CUTPane.add(CUTThresholdPane); - + // ---------------- //METADATA PANE @@ -285,9 +280,9 @@ public class JADEFIPAASRequesterAgentGUI extends javax.swing.JFrame implements onglets.addTab("Retrieve", RETRIEVEPane); onglets.addTab("Store", STOREPane); onglets.addTab("Find", FINDPane); - onglets.addTab("Cut", CUTPane); onglets.addTab("Metadata", METADATAPane); onglets.addTab("Translate", TRANSLATEPane); + onglets.addTab("Cut", CUTPane); ReplyPane.add(reply); main.add(onglets); @@ -308,7 +303,6 @@ public class JADEFIPAASRequesterAgentGUI extends javax.swing.JFrame implements public void actionPerformed(ActionEvent ae) { int value=-1; - //String URLBase="file:///c:/FTRD/model/"; int ongletActif; if (ae.getSource() == OKButton) { ongletActif=onglets.getSelectedIndex()+1; @@ -316,44 +310,45 @@ public class JADEFIPAASRequesterAgentGUI extends javax.swing.JFrame implements switch (ongletActif){ //LOAD case LOAD : - ge.addParameter(LOADURLAlignmentValue.getText()); + ge.addParameter("url="+LOADURLAlignmentValue.getText()); + ge.addParameter("id="+LOADURLAlignmentValue.getText()); break; //ALIGN case ALIGN : - ge.addParameter(ALIGNURLOnto1Value.getText()); - ge.addParameter(ALIGNURLOnto2Value.getText()); - ge.addParameter(ALIGNBaseAlignmentURLIDValue.getText()); - ge.addParameter(ALIGNMethodValue.getText()); + ge.addParameter("onto1="+ALIGNURLOnto1Value.getText()); + ge.addParameter("onto2="+ALIGNURLOnto2Value.getText()); + ge.addParameter("id="+ALIGNBaseAlignmentURLIDValue.getText()); + ge.addParameter("method="+ALIGNMethodValue.getText()); break; //RETRIEVE case RETRIEVE : - ge.addParameter(RETRIEVEAlignmentURLIDValue.getText()); - ge.addParameter(RETRIEVERenderingMethodValue.getText()); + ge.addParameter("id="+RETRIEVEAlignmentURLIDValue.getText()); + ge.addParameter("method="+RETRIEVERenderingMethodValue.getText()); break; //STORE case STORE : - ge.addParameter(STOREAlignmentURLIDValue.getText()); + ge.addParameter("id="+STOREAlignmentURLIDValue.getText()); break; //FIND case FIND : - ge.addParameter(FINDURLOnto1Value.getText()); - ge.addParameter(FINDURLOnto1Value.getText()); + ge.addParameter("onto1="+FINDURLOnto1Value.getText()); + ge.addParameter("onto2="+FINDURLOnto1Value.getText()); break; //CUT case CUT : - ge.addParameter(CUTAlignmentURLIDValue.getText()); - ge.addParameter(CUTMethodValue.getText()); - ge.addParameter(CUTThresholdValue.getText()); + ge.addParameter("id="+CUTAlignmentURLIDValue.getText()); + ge.addParameter("method="+CUTMethodValue.getText()); + ge.addParameter("threshold="+CUTThresholdValue.getText()); break; //TODO ! METADATA & TRANSLATE } - - + + myAgent.postGuiEvent(ge); }else{ //??? } - + cleanGUI(); } void shutDown() { @@ -381,11 +376,25 @@ public class JADEFIPAASRequesterAgentGUI extends javax.swing.JFrame implements } - private void CleanGUI(){ -// TODO + private void cleanGUI(){ + + reply.setText(""); + LOADURLAlignmentValue.setText(""); + ALIGNURLOnto1Value.setText(""); + ALIGNURLOnto2Value.setText(""); + ALIGNMethodValue.setText(""); + ALIGNBaseAlignmentURLIDValue.setText(""); + RETRIEVEAlignmentURLIDValue.setText(""); + RETRIEVERenderingMethodValue.setText(""); + STOREAlignmentURLIDValue.setText(""); + FINDURLOnto1Value.setText(""); + FINDURLOnto2Value.setText(""); + CUTAlignmentURLIDValue.setText(""); + CUTMethodValue.setText(""); + CUTThresholdValue.setText(""); } - + public void showReply(String toshow){ reply.setText(toshow); } diff --git a/src/fr/inrialpes/exmo/align/service/jade/JadeFIPAAServProfile.java b/src/fr/inrialpes/exmo/align/service/jade/JadeFIPAAServProfile.java index 4caffc76392904abca881027638da1e04d790c0f..30bd297508a777606c441a588dd6f2f0348a5dba 100755 --- a/src/fr/inrialpes/exmo/align/service/jade/JadeFIPAAServProfile.java +++ b/src/fr/inrialpes/exmo/align/service/jade/JadeFIPAAServProfile.java @@ -21,21 +21,20 @@ package fr.inrialpes.exmo.align.service.jade; -import fr.inrialpes.exmo.align.service.jade.JadeFIPAAServiceAgent; -import fr.inrialpes.exmo.align.service.AlignmentServiceProfile; -import fr.inrialpes.exmo.align.service.AServProtocolManager; -import fr.inrialpes.exmo.align.service.AServException; - -import org.semanticweb.owl.align.Parameters; - -import jade.core.Runtime; import jade.core.Profile; import jade.core.ProfileImpl; +import jade.core.Runtime; import jade.util.Logger; import jade.wrapper.AgentContainer; import jade.wrapper.AgentController; import jade.wrapper.ControllerException; +import org.semanticweb.owl.align.Parameters; + +import fr.inrialpes.exmo.align.service.AServException; +import fr.inrialpes.exmo.align.service.AServProtocolManager; +import fr.inrialpes.exmo.align.service.AlignmentServiceProfile; + public class JadeFIPAAServProfile implements AlignmentServiceProfile { diff --git a/src/fr/inrialpes/exmo/align/service/jade/JadeFIPAAServiceAgent.java b/src/fr/inrialpes/exmo/align/service/jade/JadeFIPAAServiceAgent.java index e4a60b3fdaed5f416328a24133f1a3dfd9300cd7..36f4fee7f2f393f24cd789b9d0fa3f4e7450f2c9 100755 --- a/src/fr/inrialpes/exmo/align/service/jade/JadeFIPAAServiceAgent.java +++ b/src/fr/inrialpes/exmo/align/service/jade/JadeFIPAAServiceAgent.java @@ -23,14 +23,6 @@ package fr.inrialpes.exmo.align.service.jade; -import java.util.StringTokenizer; - -import org.semanticweb.owl.align.Parameters; - -import fr.inrialpes.exmo.align.impl.BasicParameters; -import fr.inrialpes.exmo.align.service.AServProtocolManager; -import fr.inrialpes.exmo.align.service.ErrorMsg; -import fr.inrialpes.exmo.align.service.Message; import jade.core.Agent; import jade.core.behaviours.CyclicBehaviour; import jade.domain.DFService; @@ -39,9 +31,14 @@ import jade.domain.FIPAAgentManagement.DFAgentDescription; import jade.domain.FIPAAgentManagement.ServiceDescription; import jade.lang.acl.ACLMessage; import jade.lang.acl.MessageTemplate; - import jade.util.Logger; +import org.semanticweb.owl.align.Parameters; + +import fr.inrialpes.exmo.align.service.AServProtocolManager; +import fr.inrialpes.exmo.align.service.ErrorMsg; +import fr.inrialpes.exmo.align.service.Message; + public class JadeFIPAAServiceAgent extends Agent { public static final String SERVICE_NAME = "Alignment"; @@ -78,100 +75,84 @@ public class JadeFIPAAServiceAgent extends Agent { String perf; // performative String info; //parameters + Parameters params = initialParameters; MessageTemplate tpl =MessageTemplate.MatchPerformative(ACLMessage.REQUEST); ACLMessage msg = myAgent.receive(tpl); if (msg != null) { - //System.out.println("Alignement Agent " + myAgent.getLocalName() + " receive : " + msg.getContent() + " from "+ msg.getSender()); - perf=msg.getContent().substring(0,msg.getContent().indexOf("::")); - info = msg.getContent().substring(msg.getContent().indexOf("::")+2, msg.getContent().length()); - -// --------------------------------------------------------- - //myLogger.log(Logger.INFO, "Received message: "+msg); - //Parameters params = new BasicParameters(); - - /**StringTokenizer tokenizer = new StringTokenizer(info,"::"); - int count = tokenizer.countTokens(); - while (tokenizer.hasMoreTokens()){ - String token = tokenizer.nextToken();}**/ - String[] result = info.split("::"); - /**for (int x=0; x<result.length; x++) - System.out.println(":: --------------" + result[x]);**/ - - Parameters params = initialParameters; - - if (perf.equals("ALIGN")){ - params.setParameter("onto1", result[0]); - params.setParameter("onto2", result[1]); - //params.setParameter("id", result[2]); - //params.setParameter("method", result[3]); - Message answer = manager.align(new Message(newId(), (Message)null,myId,serverId,"",params)); - if(!(answer instanceof ErrorMsg)){ - ACLMessage JADEanswer=msg.createReply(); - msg.setPerformative(ACLMessage.INFORM); - JADEanswer.setContent(answer.getContent()); - myAgent.send(JADEanswer); - }else{myLogger.log(Logger.WARNING, answer.getContent());} - }else if (perf.equals("LOAD")){ - //params.setParameter("url", info); - //params.setParameter("id", info); - params.setParameter("url", result[0]); - //params.setParameter("id", result[0]); - Message answer = manager.load(new Message(newId(), (Message)null,myId,serverId,"",params)); - if(!(answer instanceof ErrorMsg)){ - ACLMessage JADEanswer=msg.createReply(); - msg.setPerformative(ACLMessage.INFORM); - JADEanswer.setContent(answer.getContent()); - myAgent.send(JADEanswer); - }else{myLogger.log(Logger.WARNING, answer.getContent());} - }else if (perf.equals("RETRIEVE")){ - params.setParameter("id", result[0]); - params.setParameter("method", result[1]); - Message answer = manager.render(new Message(newId(), (Message)null,myId,serverId,"",params)); - if(!(answer instanceof ErrorMsg)){ - ACLMessage JADEanswer=msg.createReply(); - msg.setPerformative(ACLMessage.INFORM); - JADEanswer.setContent(answer.getContent()); - myAgent.send(JADEanswer); - }else{myLogger.log(Logger.WARNING, answer.getContent());} - }else if (perf.equals("TRANSLATE")){ - //TODO - }else if (perf.equals("METADATA")){ - //TODO - }else if (perf.equals("STORE")){ - params.setParameter("id", result[0]); - Message answer = manager.store(new Message(newId(), (Message)null,myId,serverId,"",params)); - if(!(answer instanceof ErrorMsg)){ - ACLMessage JADEanswer=msg.createReply(); - msg.setPerformative(ACLMessage.INFORM); - JADEanswer.setContent(answer.getContent()); - myAgent.send(JADEanswer); - }else{myLogger.log(Logger.WARNING, answer.getContent());} - }else if (perf.equals("FIND")){ - params.setParameter("onto1", result[0]); - params.setParameter("onto2", result[1]); - Message answer = manager.existingAlignments(new Message(newId(), (Message)null,myId,serverId,"",params)); - if(!(answer instanceof ErrorMsg)){ - ACLMessage JADEanswer=msg.createReply(); - msg.setPerformative(ACLMessage.INFORM); - JADEanswer.setContent(answer.getContent()); - myAgent.send(JADEanswer); - }else{myLogger.log(Logger.WARNING, answer.getContent());} - }else if (perf.equals("CUT")){ - params.setParameter("id", result[0]); - params.setParameter("method", result[1]); - params.setParameter("threshold", result[2]); - Message answer = manager.cut(new Message(newId(), (Message)null,myId,serverId,"",params)); - if(!(answer instanceof ErrorMsg)){ - ACLMessage JADEanswer=msg.createReply(); - msg.setPerformative(ACLMessage.INFORM); - JADEanswer.setContent(answer.getContent()); - myAgent.send(JADEanswer); - }else{myLogger.log(Logger.WARNING, answer.getContent());} - }else { - ACLMessage reply = msg.createReply(); - reply.setPerformative(ACLMessage.NOT_UNDERSTOOD); - myAgent.send(reply); + if (msg.getContent()!=null){ + if (!(msg.getContent().equals(""))){ + //System.out.println("Alignement Agent " + myAgent.getLocalName() + " receive : " + msg.getContent() + " from "+ msg.getSender()); + perf=msg.getContent().substring(0,msg.getContent().indexOf("::")); + info = msg.getContent().substring(msg.getContent().indexOf("::")+2, msg.getContent().length()); + +// --------------------------------------------------------- + //myLogger.log(Logger.INFO, "Received message: "+msg); + //Parameters params = new BasicParameters(); + if (!(perf.equals(""))){ + if(!(info.equals(""))){ + params = decodeMessage(info,params); + + if (perf.equals("ALIGN")){ + Message answer = manager.align(new Message(newId(), (Message)null,myId,serverId,"",params)); + if(!(answer instanceof ErrorMsg)){ + ACLMessage JADEanswer=msg.createReply(); + msg.setPerformative(ACLMessage.INFORM); + JADEanswer.setContent(answer.getContent()); + myAgent.send(JADEanswer); + }else{myLogger.log(Logger.WARNING, answer.getContent());} + }else if (perf.equals("LOAD")){ + Message answer = manager.load(new Message(newId(), (Message)null,myId,serverId,"",params)); + if(!(answer instanceof ErrorMsg)){ + ACLMessage JADEanswer=msg.createReply(); + msg.setPerformative(ACLMessage.INFORM); + JADEanswer.setContent(answer.getContent()); + myAgent.send(JADEanswer); + }else{myLogger.log(Logger.WARNING, answer.getContent());} + }else if (perf.equals("RETRIEVE")){ + Message answer = manager.render(new Message(newId(), (Message)null,myId,serverId,"",params)); + if(!(answer instanceof ErrorMsg)){ + ACLMessage JADEanswer=msg.createReply(); + msg.setPerformative(ACLMessage.INFORM); + JADEanswer.setContent(answer.getContent()); + myAgent.send(JADEanswer); + }else{myLogger.log(Logger.WARNING, answer.getContent());} + }else if (perf.equals("TRANSLATE")){ + //TODO + }else if (perf.equals("METADATA")){ + //TODO + }else if (perf.equals("STORE")){ + Message answer = manager.store(new Message(newId(), (Message)null,myId,serverId,"",params)); + if(!(answer instanceof ErrorMsg)){ + ACLMessage JADEanswer=msg.createReply(); + msg.setPerformative(ACLMessage.INFORM); + JADEanswer.setContent(answer.getContent()); + myAgent.send(JADEanswer); + }else{myLogger.log(Logger.WARNING, answer.getContent());} + }else if (perf.equals("FIND")){ + Message answer = manager.existingAlignments(new Message(newId(), (Message)null,myId,serverId,"",params)); + if(!(answer instanceof ErrorMsg)){ + ACLMessage JADEanswer=msg.createReply(); + msg.setPerformative(ACLMessage.INFORM); + JADEanswer.setContent(answer.getContent()); + myAgent.send(JADEanswer); + }else{myLogger.log(Logger.WARNING, answer.getContent());} + }else if (perf.equals("CUT")){ + Message answer = manager.cut(new Message(newId(), (Message)null,myId,serverId,"",params)); + if(!(answer instanceof ErrorMsg)){ + ACLMessage JADEanswer=msg.createReply(); + msg.setPerformative(ACLMessage.INFORM); + JADEanswer.setContent(answer.getContent()); + myAgent.send(JADEanswer); + }else{myLogger.log(Logger.WARNING, answer.getContent());} + }else { + ACLMessage reply = msg.createReply(); + reply.setPerformative(ACLMessage.NOT_UNDERSTOOD); + myAgent.send(reply); + } + } + } + } } } else { @@ -210,5 +191,17 @@ public class JadeFIPAAServiceAgent extends Agent { private int newId(){return localId++;} + private Parameters decodeMessage(String info, Parameters param){ + + Parameters toReturn = param; + String[] result = info.split("::"); + for(int i=0;i<result.length;i++){ + String[] arg=result[i].split("="); + toReturn.setParameter(arg[0], arg[1]); + } + + return toReturn; + } + }