package pikater; import jade.content.lang.Codec; import jade.content.lang.Codec.CodecException; import jade.content.lang.sl.SLCodec; import jade.content.onto.OntologyException; import jade.content.onto.basic.Action; import jade.content.onto.basic.Result; import jade.core.AID; import jade.core.Agent; import jade.domain.FIPAException; import jade.domain.FIPANames; import jade.domain.FIPAService; import jade.lang.acl.ACLMessage; import jade.util.leap.ArrayList; import jade.util.leap.List; import pikater.ontology.messages.GetAllMetadata; import pikater.ontology.messages.GetFileInfo; import pikater.ontology.messages.GetFiles; import pikater.ontology.messages.GetTheBestAgent; import pikater.ontology.messages.ImportFile; import pikater.ontology.messages.MessagesOntology; import pikater.ontology.messages.Metadata; import pikater.ontology.messages.SaveMetadata; import pikater.ontology.messages.SaveResults; import pikater.ontology.messages.Task; import pikater.ontology.messages.TranslateFilename; import pikater.ontology.messages.UpdateMetadata; public class DataManagerService extends FIPAService { static final Codec codec = new SLCodec(); public static String importFile(Agent agent, int userID, String path, String content) { ImportFile im = new ImportFile(); im.setUserID(userID); im.setExternalFilename(path); im.setFileContent(content); ACLMessage request = new ACLMessage(ACLMessage.REQUEST); request.addReceiver(new AID("dataManager", false)); request.setOntology(MessagesOntology.getInstance().getName()); request.setLanguage(codec.getName()); request.setProtocol(FIPANames.InteractionProtocol.FIPA_REQUEST); Action a = new Action(); a.setActor(agent.getAID()); a.setAction(im); try { agent.getContentManager().fillContent(request, a); } catch (CodecException e1) { e1.printStackTrace(); } catch (OntologyException e1) { e1.printStackTrace(); } try { return FIPAService.doFipaRequestClient(agent, request).getContent(); } catch (FIPAException e) { e.printStackTrace(); } return null; } public static String translateFilename(Agent agent, int user, String externalFilename, String internalFilename) { TranslateFilename tf = new TranslateFilename(); tf.setUserID(user); tf.setExternalFilename(externalFilename); tf.setInternalFilename(internalFilename); ACLMessage request = new ACLMessage(ACLMessage.REQUEST); request.addReceiver(new AID("dataManager", false)); request.setOntology(MessagesOntology.getInstance().getName()); request.setLanguage(codec.getName()); request.setProtocol(FIPANames.InteractionProtocol.FIPA_REQUEST); Action a = new Action(); a.setActor(agent.getAID()); a.setAction(tf); try { agent.getContentManager().fillContent(request, a); ACLMessage inform = FIPAService.doFipaRequestClient(agent, request); if (inform == null) { return null; } Result r = (Result) agent.getContentManager() .extractContent(inform); return (String) r.getValue(); } catch (CodecException e) { e.printStackTrace(); } catch (OntologyException e) { e.printStackTrace(); } catch (FIPAException e) { e.printStackTrace(); } return null; } public static void saveResult(Agent agent, Task t) { SaveResults sr = new SaveResults(); sr.setTask(t); ACLMessage request = new ACLMessage(ACLMessage.REQUEST); request.addReceiver(new AID("dataManager", false)); request.setOntology(MessagesOntology.getInstance().getName()); request.setLanguage(codec.getName()); request.setProtocol(FIPANames.InteractionProtocol.FIPA_REQUEST); Action a = new Action(); a.setActor(agent.getAID()); a.setAction(sr); try { agent.getContentManager().fillContent(request, a); FIPAService.doFipaRequestClient(agent, request); } catch (CodecException e) { e.printStackTrace(); } catch (OntologyException e) { e.printStackTrace(); } catch (FIPAException e) { e.printStackTrace(); } } public static void saveMetadata(Agent agent, Metadata m) { SaveMetadata saveMetadata = new SaveMetadata(); saveMetadata.setMetadata(m); ACLMessage request = new ACLMessage(ACLMessage.REQUEST); request.addReceiver(new AID("dataManager", false)); request.setOntology(MessagesOntology.getInstance().getName()); request.setLanguage(codec.getName()); request.setProtocol(FIPANames.InteractionProtocol.FIPA_REQUEST); Action a = new Action(); a.setActor(agent.getAID()); a.setAction(saveMetadata); try { agent.getContentManager().fillContent(request, a); FIPAService.doFipaRequestClient(agent, request); } catch (CodecException e) { e.printStackTrace(); } catch (OntologyException e) { e.printStackTrace(); } catch (FIPAException e) { e.printStackTrace(); } } public static List getAllMetadata(Agent agent) { ACLMessage request = new ACLMessage(ACLMessage.REQUEST); request.addReceiver(new AID("dataManager", false)); request.setOntology(MessagesOntology.getInstance().getName()); request.setLanguage(codec.getName()); request.setProtocol(FIPANames.InteractionProtocol.FIPA_REQUEST); Action a = new Action(); a.setActor(agent.getAID()); a.setAction(new GetAllMetadata()); try { agent.getContentManager().fillContent(request, a); ACLMessage inform = FIPAService.doFipaRequestClient(agent, request); Result r = (Result) agent.getContentManager() .extractContent(inform); List allMetadata = (List) r.getValue(); return allMetadata; } catch (CodecException e) { e.printStackTrace(); } catch (OntologyException e) { e.printStackTrace(); } catch (FIPAException e) { e.printStackTrace(); } return null; } public static pikater.ontology.messages.Agent getTheBestAgent(Agent agent, String fileName) { GetTheBestAgent g = new GetTheBestAgent(); g.setNearest_file_name(fileName); ACLMessage request = new ACLMessage(ACLMessage.REQUEST); request.addReceiver(new AID("dataManager", false)); request.setOntology(MessagesOntology.getInstance().getName()); request.setLanguage(codec.getName()); request.setProtocol(FIPANames.InteractionProtocol.FIPA_REQUEST); Action a = new Action(); a.setActor(agent.getAID()); a.setAction(g); try { agent.getContentManager().fillContent(request, a); ACLMessage inform = FIPAService.doFipaRequestClient(agent, request); if (inform.getPerformative() == ACLMessage.FAILURE) { return null; } Result r = (Result) agent.getContentManager() .extractContent(inform); pikater.ontology.messages.Agent bestAgent = (pikater.ontology.messages.Agent) r .getValue(); return bestAgent; } catch (CodecException e) { e.printStackTrace(); } catch (OntologyException e) { e.printStackTrace(); } catch (FIPAException e) { e.printStackTrace(); } return null; } public static ArrayList getFilesInfo(Agent agent, int userID) { GetFileInfo gfi = new GetFileInfo(); gfi.setUserID(userID); ACLMessage request = new ACLMessage(ACLMessage.REQUEST); request.addReceiver(new AID("dataManager", false)); request.setOntology(MessagesOntology.getInstance().getName()); request.setLanguage(codec.getName()); request.setProtocol(FIPANames.InteractionProtocol.FIPA_REQUEST); Action a = new Action(); a.setActor(agent.getAID()); a.setAction(gfi); try { agent.getContentManager().fillContent(request, a); ACLMessage inform = FIPAService.doFipaRequestClient(agent, request); if (inform == null) { return null; } Result r = (Result) agent.getContentManager() .extractContent(inform); return (ArrayList) r.getValue(); } catch (CodecException e) { e.printStackTrace(); } catch (OntologyException e) { e.printStackTrace(); } catch (FIPAException e) { e.printStackTrace(); } return null; } public static void updateMetadata(Agent agent, Metadata m) { UpdateMetadata updateMetadata = new UpdateMetadata(); updateMetadata.setMetadata(m); ACLMessage request = new ACLMessage(ACLMessage.REQUEST); request.addReceiver(new AID("dataManager", false)); request.setOntology(MessagesOntology.getInstance().getName()); request.setLanguage(codec.getName()); request.setProtocol(FIPANames.InteractionProtocol.FIPA_REQUEST); Action a = new Action(); a.setActor(agent.getAID()); a.setAction(updateMetadata); try { agent.getContentManager().fillContent(request, a); FIPAService.doFipaRequestClient(agent, request); } catch (CodecException e) { e.printStackTrace(); } catch (OntologyException e) { e.printStackTrace(); } catch (FIPAException e) { e.printStackTrace(); } } public static ArrayList getFiles(Agent agent, int userID) { GetFiles gfi = new GetFiles(); gfi.setUserID(userID); ACLMessage request = new ACLMessage(ACLMessage.REQUEST); request.addReceiver(new AID("dataManager", false)); request.setOntology(MessagesOntology.getInstance().getName()); request.setLanguage(codec.getName()); request.setProtocol(FIPANames.InteractionProtocol.FIPA_REQUEST); Action a = new Action(); a.setActor(agent.getAID()); a.setAction(gfi); try { agent.getContentManager().fillContent(request, a); ACLMessage inform = FIPAService.doFipaRequestClient(agent, request); if (inform == null) { return null; } Result r = (Result) agent.getContentManager() .extractContent(inform); return (ArrayList) r.getValue(); } catch (CodecException e) { e.printStackTrace(); } catch (OntologyException e) { e.printStackTrace(); } catch (FIPAException e) { e.printStackTrace(); } return null; } }