Mentions légales du service

Skip to content
Snippets Groups Projects
Commit f0098743 authored by Jérôme Pierson's avatar Jérôme Pierson
Browse files

The JADEserver interface handle all the performative, except Translate and Metadata.

A "Requester" JADE Agent was added with a GUI (in samples/service/JADE)
Messages are not FIPA/ACL, they are formed like this : 
PERFORMATIVE::arg1::arg2::...::argN::
More robust
parent 8776974b
No related branches found
No related tags found
No related merge requests found
package fr.inrialpes.exmo.align.service.jade; 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.AID;
import jade.core.behaviours.CyclicBehaviour; import jade.core.behaviours.CyclicBehaviour;
import jade.domain.DFService; import jade.domain.DFService;
...@@ -13,7 +11,6 @@ import jade.domain.FIPAAgentManagement.ServiceDescription; ...@@ -13,7 +11,6 @@ import jade.domain.FIPAAgentManagement.ServiceDescription;
import jade.gui.GuiAgent; import jade.gui.GuiAgent;
import jade.gui.GuiEvent; import jade.gui.GuiEvent;
import jade.lang.acl.ACLMessage; import jade.lang.acl.ACLMessage;
import jade.lang.acl.MessageTemplate;
import jade.util.Logger; import jade.util.Logger;
public class JADEFIPAASRequesterAgent extends GuiAgent{ public class JADEFIPAASRequesterAgent extends GuiAgent{
...@@ -112,44 +109,16 @@ public class JADEFIPAASRequesterAgent extends GuiAgent{ ...@@ -112,44 +109,16 @@ public class JADEFIPAASRequesterAgent extends GuiAgent{
toSend.addReceiver(AlignementAgent); toSend.addReceiver(AlignementAgent);
command = ev.getType(); command = ev.getType();
toSend = setPerformative(toSend, command); toSend = setPerformative(toSend, command);
for(Iterator iter=ev.getAllParameter();iter.hasNext();){
switch (command){ //toSend=addArgument(toSend, (String)ev.getParameter(i));
//LOAD String next=(String)iter.next();
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;
//TODO ! METADATA & TRANSLATE if (!(next.endsWith("="))){
toSend=addArgument(toSend,next);
}
} }
myLogger.log(Logger.INFO, this.getLocalName() + "send : "+ toSend.getContent()); myLogger.log(Logger.INFO, this.getLocalName() + "send : "+ toSend.getContent());
this.send(toSend); this.send(toSend);
} }
void alertGui(Object response) { void alertGui(Object response) {
......
...@@ -6,14 +6,9 @@ import java.awt.Rectangle; ...@@ -6,14 +6,9 @@ import java.awt.Rectangle;
import java.awt.Toolkit; import java.awt.Toolkit;
import java.awt.event.ActionEvent; import java.awt.event.ActionEvent;
import java.awt.event.ActionListener; import java.awt.event.ActionListener;
import java.io.File;
import java.util.Iterator;
import java.util.Random;
import javax.swing.BoxLayout; import javax.swing.BoxLayout;
import javax.swing.JButton; import javax.swing.JButton;
import javax.swing.JCheckBox;
import javax.swing.JFileChooser;
import javax.swing.JLabel; import javax.swing.JLabel;
import javax.swing.JOptionPane; import javax.swing.JOptionPane;
import javax.swing.JPanel; import javax.swing.JPanel;
...@@ -103,7 +98,7 @@ public class JADEFIPAASRequesterAgentGUI extends javax.swing.JFrame implements ...@@ -103,7 +98,7 @@ public class JADEFIPAASRequesterAgentGUI extends javax.swing.JFrame implements
private JPanel CUTAlignmentPane; private JPanel CUTAlignmentPane;
private JPanel CUTMethodPane; private JPanel CUTMethodPane;
private JPanel CUTThresholdPane; private JPanel CUTThresholdPane;
//METADATA PANE //METADATA PANE
//TRANSLATE PANE //TRANSLATE PANE
...@@ -143,7 +138,7 @@ public class JADEFIPAASRequesterAgentGUI extends javax.swing.JFrame implements ...@@ -143,7 +138,7 @@ public class JADEFIPAASRequesterAgentGUI extends javax.swing.JFrame implements
ReplyPane = new JPanel(); ReplyPane = new JPanel();
reply = new JTextArea(20,50); reply = new JTextArea(20,50);
reply.setEditable(false); reply.setEditable(false);
main = new JPanel(); main = new JPanel();
main.setLayout(new BoxLayout(main, BoxLayout.PAGE_AXIS)); main.setLayout(new BoxLayout(main, BoxLayout.PAGE_AXIS));
...@@ -258,7 +253,7 @@ public class JADEFIPAASRequesterAgentGUI extends javax.swing.JFrame implements ...@@ -258,7 +253,7 @@ public class JADEFIPAASRequesterAgentGUI extends javax.swing.JFrame implements
CUTMethodValue = new JTextField(30); CUTMethodValue = new JTextField(30);
CUTThresholdLabel = new JLabel("Threshold"); CUTThresholdLabel = new JLabel("Threshold");
CUTThresholdValue = new JTextField(30); CUTThresholdValue = new JTextField(30);
CUTThresholdPane = new JPanel(); CUTThresholdPane = new JPanel();
CUTAlignmentPane = new JPanel(); CUTAlignmentPane = new JPanel();
CUTMethodPane = new JPanel(); CUTMethodPane = new JPanel();
...@@ -271,7 +266,7 @@ public class JADEFIPAASRequesterAgentGUI extends javax.swing.JFrame implements ...@@ -271,7 +266,7 @@ public class JADEFIPAASRequesterAgentGUI extends javax.swing.JFrame implements
CUTPane.add(CUTAlignmentPane); CUTPane.add(CUTAlignmentPane);
CUTPane.add(CUTMethodPane); CUTPane.add(CUTMethodPane);
CUTPane.add(CUTThresholdPane); CUTPane.add(CUTThresholdPane);
// ---------------- // ----------------
//METADATA PANE //METADATA PANE
...@@ -285,9 +280,9 @@ public class JADEFIPAASRequesterAgentGUI extends javax.swing.JFrame implements ...@@ -285,9 +280,9 @@ public class JADEFIPAASRequesterAgentGUI extends javax.swing.JFrame implements
onglets.addTab("Retrieve", RETRIEVEPane); onglets.addTab("Retrieve", RETRIEVEPane);
onglets.addTab("Store", STOREPane); onglets.addTab("Store", STOREPane);
onglets.addTab("Find", FINDPane); onglets.addTab("Find", FINDPane);
onglets.addTab("Cut", CUTPane);
onglets.addTab("Metadata", METADATAPane); onglets.addTab("Metadata", METADATAPane);
onglets.addTab("Translate", TRANSLATEPane); onglets.addTab("Translate", TRANSLATEPane);
onglets.addTab("Cut", CUTPane);
ReplyPane.add(reply); ReplyPane.add(reply);
main.add(onglets); main.add(onglets);
...@@ -308,7 +303,6 @@ public class JADEFIPAASRequesterAgentGUI extends javax.swing.JFrame implements ...@@ -308,7 +303,6 @@ public class JADEFIPAASRequesterAgentGUI extends javax.swing.JFrame implements
public void actionPerformed(ActionEvent ae) { public void actionPerformed(ActionEvent ae) {
int value=-1; int value=-1;
//String URLBase="file:///c:/FTRD/model/";
int ongletActif; int ongletActif;
if (ae.getSource() == OKButton) { if (ae.getSource() == OKButton) {
ongletActif=onglets.getSelectedIndex()+1; ongletActif=onglets.getSelectedIndex()+1;
...@@ -316,44 +310,45 @@ public class JADEFIPAASRequesterAgentGUI extends javax.swing.JFrame implements ...@@ -316,44 +310,45 @@ public class JADEFIPAASRequesterAgentGUI extends javax.swing.JFrame implements
switch (ongletActif){ switch (ongletActif){
//LOAD //LOAD
case LOAD : case LOAD :
ge.addParameter(LOADURLAlignmentValue.getText()); ge.addParameter("url="+LOADURLAlignmentValue.getText());
ge.addParameter("id="+LOADURLAlignmentValue.getText());
break; break;
//ALIGN //ALIGN
case ALIGN : case ALIGN :
ge.addParameter(ALIGNURLOnto1Value.getText()); ge.addParameter("onto1="+ALIGNURLOnto1Value.getText());
ge.addParameter(ALIGNURLOnto2Value.getText()); ge.addParameter("onto2="+ALIGNURLOnto2Value.getText());
ge.addParameter(ALIGNBaseAlignmentURLIDValue.getText()); ge.addParameter("id="+ALIGNBaseAlignmentURLIDValue.getText());
ge.addParameter(ALIGNMethodValue.getText()); ge.addParameter("method="+ALIGNMethodValue.getText());
break; break;
//RETRIEVE //RETRIEVE
case RETRIEVE : case RETRIEVE :
ge.addParameter(RETRIEVEAlignmentURLIDValue.getText()); ge.addParameter("id="+RETRIEVEAlignmentURLIDValue.getText());
ge.addParameter(RETRIEVERenderingMethodValue.getText()); ge.addParameter("method="+RETRIEVERenderingMethodValue.getText());
break; break;
//STORE //STORE
case STORE : case STORE :
ge.addParameter(STOREAlignmentURLIDValue.getText()); ge.addParameter("id="+STOREAlignmentURLIDValue.getText());
break; break;
//FIND //FIND
case FIND : case FIND :
ge.addParameter(FINDURLOnto1Value.getText()); ge.addParameter("onto1="+FINDURLOnto1Value.getText());
ge.addParameter(FINDURLOnto1Value.getText()); ge.addParameter("onto2="+FINDURLOnto1Value.getText());
break; break;
//CUT //CUT
case CUT : case CUT :
ge.addParameter(CUTAlignmentURLIDValue.getText()); ge.addParameter("id="+CUTAlignmentURLIDValue.getText());
ge.addParameter(CUTMethodValue.getText()); ge.addParameter("method="+CUTMethodValue.getText());
ge.addParameter(CUTThresholdValue.getText()); ge.addParameter("threshold="+CUTThresholdValue.getText());
break; break;
//TODO ! METADATA & TRANSLATE //TODO ! METADATA & TRANSLATE
} }
myAgent.postGuiEvent(ge); myAgent.postGuiEvent(ge);
}else{ }else{
//??? //???
} }
cleanGUI();
} }
void shutDown() { void shutDown() {
...@@ -381,11 +376,25 @@ public class JADEFIPAASRequesterAgentGUI extends javax.swing.JFrame implements ...@@ -381,11 +376,25 @@ public class JADEFIPAASRequesterAgentGUI extends javax.swing.JFrame implements
} }
private void CleanGUI(){ private void cleanGUI(){
// TODO
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){ public void showReply(String toshow){
reply.setText(toshow); reply.setText(toshow);
} }
......
...@@ -21,21 +21,20 @@ ...@@ -21,21 +21,20 @@
package fr.inrialpes.exmo.align.service.jade; 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.Profile;
import jade.core.ProfileImpl; import jade.core.ProfileImpl;
import jade.core.Runtime;
import jade.util.Logger; import jade.util.Logger;
import jade.wrapper.AgentContainer; import jade.wrapper.AgentContainer;
import jade.wrapper.AgentController; import jade.wrapper.AgentController;
import jade.wrapper.ControllerException; 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 { public class JadeFIPAAServProfile implements AlignmentServiceProfile {
......
...@@ -23,14 +23,6 @@ ...@@ -23,14 +23,6 @@
package fr.inrialpes.exmo.align.service.jade; 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.Agent;
import jade.core.behaviours.CyclicBehaviour; import jade.core.behaviours.CyclicBehaviour;
import jade.domain.DFService; import jade.domain.DFService;
...@@ -39,9 +31,14 @@ import jade.domain.FIPAAgentManagement.DFAgentDescription; ...@@ -39,9 +31,14 @@ import jade.domain.FIPAAgentManagement.DFAgentDescription;
import jade.domain.FIPAAgentManagement.ServiceDescription; import jade.domain.FIPAAgentManagement.ServiceDescription;
import jade.lang.acl.ACLMessage; import jade.lang.acl.ACLMessage;
import jade.lang.acl.MessageTemplate; import jade.lang.acl.MessageTemplate;
import jade.util.Logger; 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 class JadeFIPAAServiceAgent extends Agent {
public static final String SERVICE_NAME = "Alignment"; public static final String SERVICE_NAME = "Alignment";
...@@ -78,100 +75,84 @@ public class JadeFIPAAServiceAgent extends Agent { ...@@ -78,100 +75,84 @@ public class JadeFIPAAServiceAgent extends Agent {
String perf; // performative String perf; // performative
String info; //parameters String info; //parameters
Parameters params = initialParameters;
MessageTemplate tpl =MessageTemplate.MatchPerformative(ACLMessage.REQUEST); MessageTemplate tpl =MessageTemplate.MatchPerformative(ACLMessage.REQUEST);
ACLMessage msg = myAgent.receive(tpl); ACLMessage msg = myAgent.receive(tpl);
if (msg != null) { if (msg != null) {
//System.out.println("Alignement Agent " + myAgent.getLocalName() + " receive : " + msg.getContent() + " from "+ msg.getSender()); if (msg.getContent()!=null){
perf=msg.getContent().substring(0,msg.getContent().indexOf("::")); if (!(msg.getContent().equals(""))){
info = msg.getContent().substring(msg.getContent().indexOf("::")+2, msg.getContent().length()); //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(); // ---------------------------------------------------------
//myLogger.log(Logger.INFO, "Received message: "+msg);
/**StringTokenizer tokenizer = new StringTokenizer(info,"::"); //Parameters params = new BasicParameters();
int count = tokenizer.countTokens(); if (!(perf.equals(""))){
while (tokenizer.hasMoreTokens()){ if(!(info.equals(""))){
String token = tokenizer.nextToken();}**/ params = decodeMessage(info,params);
String[] result = info.split("::");
/**for (int x=0; x<result.length; x++) if (perf.equals("ALIGN")){
System.out.println(":: --------------" + result[x]);**/ Message answer = manager.align(new Message(newId(), (Message)null,myId,serverId,"",params));
if(!(answer instanceof ErrorMsg)){
Parameters params = initialParameters; ACLMessage JADEanswer=msg.createReply();
msg.setPerformative(ACLMessage.INFORM);
if (perf.equals("ALIGN")){ JADEanswer.setContent(answer.getContent());
params.setParameter("onto1", result[0]); myAgent.send(JADEanswer);
params.setParameter("onto2", result[1]); }else{myLogger.log(Logger.WARNING, answer.getContent());}
//params.setParameter("id", result[2]); }else if (perf.equals("LOAD")){
//params.setParameter("method", result[3]); Message answer = manager.load(new Message(newId(), (Message)null,myId,serverId,"",params));
Message answer = manager.align(new Message(newId(), (Message)null,myId,serverId,"",params)); if(!(answer instanceof ErrorMsg)){
if(!(answer instanceof ErrorMsg)){ ACLMessage JADEanswer=msg.createReply();
ACLMessage JADEanswer=msg.createReply(); msg.setPerformative(ACLMessage.INFORM);
msg.setPerformative(ACLMessage.INFORM); JADEanswer.setContent(answer.getContent());
JADEanswer.setContent(answer.getContent()); myAgent.send(JADEanswer);
myAgent.send(JADEanswer); }else{myLogger.log(Logger.WARNING, answer.getContent());}
}else{myLogger.log(Logger.WARNING, answer.getContent());} }else if (perf.equals("RETRIEVE")){
}else if (perf.equals("LOAD")){ Message answer = manager.render(new Message(newId(), (Message)null,myId,serverId,"",params));
//params.setParameter("url", info); if(!(answer instanceof ErrorMsg)){
//params.setParameter("id", info); ACLMessage JADEanswer=msg.createReply();
params.setParameter("url", result[0]); msg.setPerformative(ACLMessage.INFORM);
//params.setParameter("id", result[0]); JADEanswer.setContent(answer.getContent());
Message answer = manager.load(new Message(newId(), (Message)null,myId,serverId,"",params)); myAgent.send(JADEanswer);
if(!(answer instanceof ErrorMsg)){ }else{myLogger.log(Logger.WARNING, answer.getContent());}
ACLMessage JADEanswer=msg.createReply(); }else if (perf.equals("TRANSLATE")){
msg.setPerformative(ACLMessage.INFORM); //TODO
JADEanswer.setContent(answer.getContent()); }else if (perf.equals("METADATA")){
myAgent.send(JADEanswer); //TODO
}else{myLogger.log(Logger.WARNING, answer.getContent());} }else if (perf.equals("STORE")){
}else if (perf.equals("RETRIEVE")){ Message answer = manager.store(new Message(newId(), (Message)null,myId,serverId,"",params));
params.setParameter("id", result[0]); if(!(answer instanceof ErrorMsg)){
params.setParameter("method", result[1]); ACLMessage JADEanswer=msg.createReply();
Message answer = manager.render(new Message(newId(), (Message)null,myId,serverId,"",params)); msg.setPerformative(ACLMessage.INFORM);
if(!(answer instanceof ErrorMsg)){ JADEanswer.setContent(answer.getContent());
ACLMessage JADEanswer=msg.createReply(); myAgent.send(JADEanswer);
msg.setPerformative(ACLMessage.INFORM); }else{myLogger.log(Logger.WARNING, answer.getContent());}
JADEanswer.setContent(answer.getContent()); }else if (perf.equals("FIND")){
myAgent.send(JADEanswer); Message answer = manager.existingAlignments(new Message(newId(), (Message)null,myId,serverId,"",params));
}else{myLogger.log(Logger.WARNING, answer.getContent());} if(!(answer instanceof ErrorMsg)){
}else if (perf.equals("TRANSLATE")){ ACLMessage JADEanswer=msg.createReply();
//TODO msg.setPerformative(ACLMessage.INFORM);
}else if (perf.equals("METADATA")){ JADEanswer.setContent(answer.getContent());
//TODO myAgent.send(JADEanswer);
}else if (perf.equals("STORE")){ }else{myLogger.log(Logger.WARNING, answer.getContent());}
params.setParameter("id", result[0]); }else if (perf.equals("CUT")){
Message answer = manager.store(new Message(newId(), (Message)null,myId,serverId,"",params)); Message answer = manager.cut(new Message(newId(), (Message)null,myId,serverId,"",params));
if(!(answer instanceof ErrorMsg)){ if(!(answer instanceof ErrorMsg)){
ACLMessage JADEanswer=msg.createReply(); ACLMessage JADEanswer=msg.createReply();
msg.setPerformative(ACLMessage.INFORM); msg.setPerformative(ACLMessage.INFORM);
JADEanswer.setContent(answer.getContent()); JADEanswer.setContent(answer.getContent());
myAgent.send(JADEanswer); myAgent.send(JADEanswer);
}else{myLogger.log(Logger.WARNING, answer.getContent());} }else{myLogger.log(Logger.WARNING, answer.getContent());}
}else if (perf.equals("FIND")){ }else {
params.setParameter("onto1", result[0]); ACLMessage reply = msg.createReply();
params.setParameter("onto2", result[1]); reply.setPerformative(ACLMessage.NOT_UNDERSTOOD);
Message answer = manager.existingAlignments(new Message(newId(), (Message)null,myId,serverId,"",params)); myAgent.send(reply);
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);
} }
} }
else { else {
...@@ -210,5 +191,17 @@ public class JadeFIPAAServiceAgent extends Agent { ...@@ -210,5 +191,17 @@ public class JadeFIPAAServiceAgent extends Agent {
private int newId(){return localId++;} 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;
}
} }
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment