realizzare sistemi multi- agente con jade - seconda parte - corso di reti di calcolatori a.a....
TRANSCRIPT
![Page 1: Realizzare Sistemi Multi- Agente con JADE - Seconda Parte - Corso di Reti di Calcolatori A.A. 2004-2005 Ing. Domenico Rosaci](https://reader035.vdocuments.site/reader035/viewer/2022070306/55161120550346a2308b52e4/html5/thumbnails/1.jpg)
Realizzare Sistemi Multi-Realizzare Sistemi Multi-Agente con JADEAgente con JADE- Seconda Parte -- Seconda Parte -
Corso di Reti di CalcolatoriCorso di Reti di Calcolatori
A.A. 2004-2005A.A. 2004-2005
Ing. Domenico RosaciIng. Domenico Rosaci
![Page 2: Realizzare Sistemi Multi- Agente con JADE - Seconda Parte - Corso di Reti di Calcolatori A.A. 2004-2005 Ing. Domenico Rosaci](https://reader035.vdocuments.site/reader035/viewer/2022070306/55161120550346a2308b52e4/html5/thumbnails/2.jpg)
L’ambiente JBuilderL’ambiente JBuilder
![Page 3: Realizzare Sistemi Multi- Agente con JADE - Seconda Parte - Corso di Reti di Calcolatori A.A. 2004-2005 Ing. Domenico Rosaci](https://reader035.vdocuments.site/reader035/viewer/2022070306/55161120550346a2308b52e4/html5/thumbnails/3.jpg)
Il componente jPanelIl componente jPanel
![Page 4: Realizzare Sistemi Multi- Agente con JADE - Seconda Parte - Corso di Reti di Calcolatori A.A. 2004-2005 Ing. Domenico Rosaci](https://reader035.vdocuments.site/reader035/viewer/2022070306/55161120550346a2308b52e4/html5/thumbnails/4.jpg)
Il componente jDBTextIl componente jDBText
![Page 5: Realizzare Sistemi Multi- Agente con JADE - Seconda Parte - Corso di Reti di Calcolatori A.A. 2004-2005 Ing. Domenico Rosaci](https://reader035.vdocuments.site/reader035/viewer/2022070306/55161120550346a2308b52e4/html5/thumbnails/5.jpg)
Il componente jButtonIl componente jButton
![Page 6: Realizzare Sistemi Multi- Agente con JADE - Seconda Parte - Corso di Reti di Calcolatori A.A. 2004-2005 Ing. Domenico Rosaci](https://reader035.vdocuments.site/reader035/viewer/2022070306/55161120550346a2308b52e4/html5/thumbnails/6.jpg)
jButton: il metodo actionPerformedjButton: il metodo actionPerformed
![Page 7: Realizzare Sistemi Multi- Agente con JADE - Seconda Parte - Corso di Reti di Calcolatori A.A. 2004-2005 Ing. Domenico Rosaci](https://reader035.vdocuments.site/reader035/viewer/2022070306/55161120550346a2308b52e4/html5/thumbnails/7.jpg)
Dentro actionPerformedDentro actionPerformed // Button Registrati per aprire il pannello di registrazione// Button Registrati per aprire il pannello di registrazione void jButtonRegistrati_actionPerformed(ActionEvent e) {void jButtonRegistrati_actionPerformed(ActionEvent e) { jDbTextUserName.setText("");jDbTextUserName.setText(""); jPasswordField.setText("");jPasswordField.setText(""); cardLayout2.show(jPanelRegistrati,"jPanelRegistraDati");cardLayout2.show(jPanelRegistrati,"jPanelRegistraDati"); }}
![Page 8: Realizzare Sistemi Multi- Agente con JADE - Seconda Parte - Corso di Reti di Calcolatori A.A. 2004-2005 Ing. Domenico Rosaci](https://reader035.vdocuments.site/reader035/viewer/2022070306/55161120550346a2308b52e4/html5/thumbnails/8.jpg)
jPanel “Registra Dati”jPanel “Registra Dati”
![Page 9: Realizzare Sistemi Multi- Agente con JADE - Seconda Parte - Corso di Reti di Calcolatori A.A. 2004-2005 Ing. Domenico Rosaci](https://reader035.vdocuments.site/reader035/viewer/2022070306/55161120550346a2308b52e4/html5/thumbnails/9.jpg)
Entriamo del pulsante OKEntriamo del pulsante OK void jButtonInsertRegistrazione_actionPerformed(ActionEvent e) {void jButtonInsertRegistrazione_actionPerformed(ActionEvent e) { String Cognome = jdbTextFieldCognome.getText();String Cognome = jdbTextFieldCognome.getText(); String Nome = jdbTextFieldNome.getText();String Nome = jdbTextFieldNome.getText(); String Cdl = jdbTextFieldCdl.getText();String Cdl = jdbTextFieldCdl.getText(); String UserName = jdbTextFieldUserName.getText();String UserName = jdbTextFieldUserName.getText(); String Password = jPasswordFieldRegistra.getText();String Password = jPasswordFieldRegistra.getText();
parameterRowControllaRegistrazione.setString("Username", UserName);parameterRowControllaRegistrazione.setString("Username", UserName); queryDataSetParametriCorretti.executeQuery();queryDataSetParametriCorretti.executeQuery();
// UserName e Password diversi da quelli già presenti nel database// UserName e Password diversi da quelli già presenti nel database if (queryDataSetParametriCorretti.isEmpty()){if (queryDataSetParametriCorretti.isEmpty()){ parameterRowRegistrazione.setString("Cognome", Cognome);parameterRowRegistrazione.setString("Cognome", Cognome); parameterRowRegistrazione.setString("Nome", Nome);parameterRowRegistrazione.setString("Nome", Nome); parameterRowRegistrazione.setString("CorsodiLaurea", Cdl);parameterRowRegistrazione.setString("CorsodiLaurea", Cdl); parameterRowRegistrazione.setString("Username", UserName);parameterRowRegistrazione.setString("Username", UserName); parameterRowRegistrazione.setString("Password", Password);parameterRowRegistrazione.setString("Password", Password); try{try{ queryDataSetRegistrazione.executeQuery();queryDataSetRegistrazione.executeQuery(); }} catch (DataSetException ex) {catch (DataSetException ex) { }} jDbTextUserName.setText(UserName);jDbTextUserName.setText(UserName); jPasswordField.setText(Password);jPasswordField.setText(Password); cardLayout2.show(jPanelRegistrati,"jPanel8");cardLayout2.show(jPanelRegistrati,"jPanel8"); jButtonRegistrati.setEnabled(false);jButtonRegistrati.setEnabled(false); }} else{else{ DialogMsg Msg = new DialogMsg();DialogMsg Msg = new DialogMsg(); String Message="Attenzione. Username non utilizzabile";String Message="Attenzione. Username non utilizzabile"; Msg.SetMsg(Message);Msg.SetMsg(Message); Msg.Visible();Msg.Visible(); }} }}
![Page 10: Realizzare Sistemi Multi- Agente con JADE - Seconda Parte - Corso di Reti di Calcolatori A.A. 2004-2005 Ing. Domenico Rosaci](https://reader035.vdocuments.site/reader035/viewer/2022070306/55161120550346a2308b52e4/html5/thumbnails/10.jpg)
Eseguire una query su un databaseEseguire una query su un database
![Page 11: Realizzare Sistemi Multi- Agente con JADE - Seconda Parte - Corso di Reti di Calcolatori A.A. 2004-2005 Ing. Domenico Rosaci](https://reader035.vdocuments.site/reader035/viewer/2022070306/55161120550346a2308b52e4/html5/thumbnails/11.jpg)
La parameter rowLa parameter row
![Page 12: Realizzare Sistemi Multi- Agente con JADE - Seconda Parte - Corso di Reti di Calcolatori A.A. 2004-2005 Ing. Domenico Rosaci](https://reader035.vdocuments.site/reader035/viewer/2022070306/55161120550346a2308b52e4/html5/thumbnails/12.jpg)
Il DBMS jDataStoreIl DBMS jDataStore
![Page 13: Realizzare Sistemi Multi- Agente con JADE - Seconda Parte - Corso di Reti di Calcolatori A.A. 2004-2005 Ing. Domenico Rosaci](https://reader035.vdocuments.site/reader035/viewer/2022070306/55161120550346a2308b52e4/html5/thumbnails/13.jpg)
Il collegamento remotoIl collegamento remoto
![Page 14: Realizzare Sistemi Multi- Agente con JADE - Seconda Parte - Corso di Reti di Calcolatori A.A. 2004-2005 Ing. Domenico Rosaci](https://reader035.vdocuments.site/reader035/viewer/2022070306/55161120550346a2308b52e4/html5/thumbnails/14.jpg)
La query per la registrazioneLa query per la registrazione
![Page 15: Realizzare Sistemi Multi- Agente con JADE - Seconda Parte - Corso di Reti di Calcolatori A.A. 2004-2005 Ing. Domenico Rosaci](https://reader035.vdocuments.site/reader035/viewer/2022070306/55161120550346a2308b52e4/html5/thumbnails/15.jpg)
Il bottone “Entra”Il bottone “Entra” // Button Entra controlli su username e password// Button Entra controlli su username e password void jButtonEntra_actionPerformed(ActionEvent e) {void jButtonEntra_actionPerformed(ActionEvent e) { UserName = jDbTextUserName.getText();UserName = jDbTextUserName.getText(); Password = jPasswordField.getText();Password = jPasswordField.getText(); if (UserName.length()!=0 && Password.length()!=0){if (UserName.length()!=0 && Password.length()!=0){ parameterRowControllaRegistrazione.setString("Username", UserName);parameterRowControllaRegistrazione.setString("Username", UserName); parameterRowControllaRegistrazione.setString("Password", Password);parameterRowControllaRegistrazione.setString("Password", Password); // controlla se username e password sono corretti// controlla se username e password sono corretti queryDataSetControllaRegistrazione.executeQuery();queryDataSetControllaRegistrazione.executeQuery(); if (!queryDataSetControllaRegistrazione.isEmpty()){if (!queryDataSetControllaRegistrazione.isEmpty()){ cardLayout1.show(contentPane,"jTabbedPane1");cardLayout1.show(contentPane,"jTabbedPane1"); jLabelNomeUtente.setText("Nick Name: "+UserName);jLabelNomeUtente.setText("Nick Name: "+UserName); parameterRowMostraAppunti.setString("username",UserName);parameterRowMostraAppunti.setString("username",UserName); queryDataSetMostraAppunti.executeQuery();queryDataSetMostraAppunti.executeQuery(); Agente = new ClientAgent(UserName,this);Agente = new ClientAgent(UserName,this); Entrato=true;Entrato=true; }} else{else{ DialogMsg Msg = new DialogMsg();DialogMsg Msg = new DialogMsg(); String Message="Username e Password non riconosciuti. Se non sei registrato fallo ora!!";String Message="Username e Password non riconosciuti. Se non sei registrato fallo ora!!"; Msg.SetMsg(Message);Msg.SetMsg(Message); Msg.Visible();Msg.Visible(); jButtonRegistrati.setEnabled(true);jButtonRegistrati.setEnabled(true); }} }} else{else{ DialogMsg Msg = new DialogMsg();DialogMsg Msg = new DialogMsg(); String Message="Attenzione devi immettere username e password";String Message="Attenzione devi immettere username e password"; Msg.SetMsg(Message);Msg.SetMsg(Message); Msg.Visible();Msg.Visible(); }} }}
![Page 16: Realizzare Sistemi Multi- Agente con JADE - Seconda Parte - Corso di Reti di Calcolatori A.A. 2004-2005 Ing. Domenico Rosaci](https://reader035.vdocuments.site/reader035/viewer/2022070306/55161120550346a2308b52e4/html5/thumbnails/16.jpg)
Mostrare gli appuntiMostrare gli appunti
![Page 17: Realizzare Sistemi Multi- Agente con JADE - Seconda Parte - Corso di Reti di Calcolatori A.A. 2004-2005 Ing. Domenico Rosaci](https://reader035.vdocuments.site/reader035/viewer/2022070306/55161120550346a2308b52e4/html5/thumbnails/17.jpg)
Il bottone “Sfoglia”Il bottone “Sfoglia” void jButtonSfoglia_actionPerformed(ActionEvent e) {void jButtonSfoglia_actionPerformed(ActionEvent e) { if (JFileChooser.APPROVE_OPTION == jFileChooser1.showOpenDialog(this)) {if (JFileChooser.APPROVE_OPTION == jFileChooser1.showOpenDialog(this)) {
nome = jFileChooser1.getSelectedFile().getName();nome = jFileChooser1.getSelectedFile().getName(); percorso = jFileChooser1.getSelectedFile().getPath();percorso = jFileChooser1.getSelectedFile().getPath();
int lunghezza = nome.length();int lunghezza = nome.length(); int suffisso = 4;int suffisso = 4; int prefisso = lunghezza-suffisso;int prefisso = lunghezza-suffisso; nomefile = nome.substring(0,prefisso);nomefile = nome.substring(0,prefisso); estensione = nome.substring(prefisso+1,lunghezza);estensione = nome.substring(prefisso+1,lunghezza);
// Display the name of the opened directory+file in the TextField.// Display the name of the opened directory+file in the TextField. jdbTextFieldPathAppunto.setText(jFileChooser1.getSelectedFile().getPath());jdbTextFieldPathAppunto.setText(jFileChooser1.getSelectedFile().getPath()); // Code will need to go here to actually load text// Code will need to go here to actually load text // from file into TextArea.// from file into TextArea. }} }}
![Page 18: Realizzare Sistemi Multi- Agente con JADE - Seconda Parte - Corso di Reti di Calcolatori A.A. 2004-2005 Ing. Domenico Rosaci](https://reader035.vdocuments.site/reader035/viewer/2022070306/55161120550346a2308b52e4/html5/thumbnails/18.jpg)
Il bottone “Share”Il bottone “Share” // Condivide l'appunto inserendolo nel database remoto// Condivide l'appunto inserendolo nel database remoto void jButtonShare_actionPerformed(ActionEvent e) {void jButtonShare_actionPerformed(ActionEvent e) { try {try { // change the values in the parameter row// change the values in the parameter row // and refresh the display// and refresh the display parameterRowRemoto.setString("percorso",percorso);parameterRowRemoto.setString("percorso",percorso); parameterRowRemoto.setString("file", nome);parameterRowRemoto.setString("file", nome); parameterRowRemoto.setString("titolo",nomefile);parameterRowRemoto.setString("titolo",nomefile); parameterRowRemoto.setString("formato",estensione);parameterRowRemoto.setString("formato",estensione); parameterRowRemoto.setString("dimensioni",jdbTextFieldDimensioneFile.getText());parameterRowRemoto.setString("dimensioni",jdbTextFieldDimensioneFile.getText()); parameterRowRemoto.setString("pagine",jdbTextFieldPagineFile.getText());parameterRowRemoto.setString("pagine",jdbTextFieldPagineFile.getText()); parameterRowRemoto.setString("materia",jdbTextFieldMateria.getText());parameterRowRemoto.setString("materia",jdbTextFieldMateria.getText()); parameterRowRemoto.setString("settore",jdbTextFieldSSD.getText());parameterRowRemoto.setString("settore",jdbTextFieldSSD.getText()); parameterRowRemoto.setString("annoacc",jdbTextFieldAnno.getText());parameterRowRemoto.setString("annoacc",jdbTextFieldAnno.getText()); parameterRowRemoto.setString("username",UserName);parameterRowRemoto.setString("username",UserName); queryDataSetInsertRemoto.executeQuery();queryDataSetInsertRemoto.executeQuery(); }} catch (DataSetException ex) {catch (DataSetException ex) { }} try{try{ parameterRowMostraAppunti.setString("username",UserName);parameterRowMostraAppunti.setString("username",UserName); queryDataSetMostraAppunti.executeQuery();queryDataSetMostraAppunti.executeQuery(); }} catch (DataSetException ex) {catch (DataSetException ex) { ex.printStackTrace(); }ex.printStackTrace(); } jdbTextFieldPathAppunto.setText("");jdbTextFieldPathAppunto.setText(""); jdbTextFieldDimensioneFile.setText("");jdbTextFieldDimensioneFile.setText(""); jdbTextFieldPagineFile.setText("");jdbTextFieldPagineFile.setText(""); jdbTextFieldMateria.setText("");jdbTextFieldMateria.setText(""); jdbTextFieldSSD.setText("");jdbTextFieldSSD.setText(""); jdbTextFieldAnno.setText("");jdbTextFieldAnno.setText(""); }}
![Page 19: Realizzare Sistemi Multi- Agente con JADE - Seconda Parte - Corso di Reti di Calcolatori A.A. 2004-2005 Ing. Domenico Rosaci](https://reader035.vdocuments.site/reader035/viewer/2022070306/55161120550346a2308b52e4/html5/thumbnails/19.jpg)
queryDataSetInsertRemotoqueryDataSetInsertRemoto
![Page 20: Realizzare Sistemi Multi- Agente con JADE - Seconda Parte - Corso di Reti di Calcolatori A.A. 2004-2005 Ing. Domenico Rosaci](https://reader035.vdocuments.site/reader035/viewer/2022070306/55161120550346a2308b52e4/html5/thumbnails/20.jpg)
La chatLa chat
![Page 21: Realizzare Sistemi Multi- Agente con JADE - Seconda Parte - Corso di Reti di Calcolatori A.A. 2004-2005 Ing. Domenico Rosaci](https://reader035.vdocuments.site/reader035/viewer/2022070306/55161120550346a2308b52e4/html5/thumbnails/21.jpg)
Il bottone “utenti on line”Il bottone “utenti on line”
// Button CercaAgenti Cerca gli agenti attivi// Button CercaAgenti Cerca gli agenti attivi void jButtonCercaAgenti_actionPerformed(ActionEvent void jButtonCercaAgenti_actionPerformed(ActionEvent
e) {e) { FillAgentComboBox();FillAgentComboBox(); }}
![Page 22: Realizzare Sistemi Multi- Agente con JADE - Seconda Parte - Corso di Reti di Calcolatori A.A. 2004-2005 Ing. Domenico Rosaci](https://reader035.vdocuments.site/reader035/viewer/2022070306/55161120550346a2308b52e4/html5/thumbnails/22.jpg)
Il metodo Il metodo FillAgentComboBox()FillAgentComboBox()
// Riempie il comboBox degli agenti attivi// Riempie il comboBox degli agenti attivi void FillAgentComboBox(){void FillAgentComboBox(){ String [][] Lista = Agente.searchAgents();String [][] Lista = Agente.searchAgents(); jComboBoxCercaAgenti.removeAllItems();jComboBoxCercaAgenti.removeAllItems(); for (int i=0; i<Lista.length; i++){for (int i=0; i<Lista.length; i++){ jComboBoxCercaAgenti.addItem(Lista [i] [0]);jComboBoxCercaAgenti.addItem(Lista [i] [0]); }} }}
Agente è l’oggetto creato al momento del login (vedi slide Agente è l’oggetto creato al momento del login (vedi slide 15)15)
![Page 23: Realizzare Sistemi Multi- Agente con JADE - Seconda Parte - Corso di Reti di Calcolatori A.A. 2004-2005 Ing. Domenico Rosaci](https://reader035.vdocuments.site/reader035/viewer/2022070306/55161120550346a2308b52e4/html5/thumbnails/23.jpg)
Agente.searchAgents()Agente.searchAgents() // Ricerca agenti attivi presso il DF// Ricerca agenti attivi presso il DF public String [][] searchAgents() {public String [][] searchAgents() {
DFAgentDescription dfd = new DFAgentDescription();DFAgentDescription dfd = new DFAgentDescription(); ServiceDescription sd = new ServiceDescription();ServiceDescription sd = new ServiceDescription(); AID DfName=getDefaultDF();AID DfName=getDefaultDF(); try {try { DFAgentDescription[] result = DFService.search(this, DfName, dfd);DFAgentDescription[] result = DFService.search(this, DfName, dfd); String [][] out= new String [result.length] [2];String [][] out= new String [result.length] [2]; for (int i=0; i<result.length; i++) {for (int i=0; i<result.length; i++) { out [i] [0] = result[i].getName().getLocalName();out [i] [0] = result[i].getName().getLocalName(); out [i] [1] = result[i].getName().getHap();out [i] [1] = result[i].getName().getHap(); }} return out;return out; }} catch (FIPAException e) {catch (FIPAException e) { return null;return null; }} }}