From 4f472905421b93dd92d380056549805e594bd1cc Mon Sep 17 00:00:00 2001 From: alartigu Date: Sat, 30 Jan 2021 13:49:03 +0100 Subject: [PATCH] Nettoyage du code --- .../main/java/chatapp/Controller/ChatApp.java | 42 ++-- .../chatapp/src/main/java/chatapp/Main.java | 19 +- .../src/main/java/chatapp/Model/DataBase.java | 237 +++++++++--------- .../java/chatapp/Model/ListUtilisateurs.java | 14 +- .../java/chatapp/Model/MessageHorodate.java | 31 ++- .../main/java/chatapp/Model/Utilisateur.java | 13 +- .../java/chatapp/Protocol/HttpEchange.java | 10 +- .../chatapp/Protocol/RunnerEcouteTCP.java | 13 +- .../chatapp/Protocol/RunnerEcouteUDP.java | 2 +- .../chatapp/Protocol/SessionClavardage.java | 74 +++--- .../java/chatapp/Protocol/UDPEchange.java | 66 +++-- .../java/chatapp/View/ChangementPseudo.java | 7 +- .../main/java/chatapp/View/Clavardage.java | 7 +- .../java/chatapp/View/ConnexionScreen.java | 9 +- .../java/chatapp/View/DemarrerSession.java | 2 + .../java/chatapp/View/FenetreSession.java | 18 +- .../src/main/java/chatapp/View/View_Menu.java | 24 +- .../java/chatapp/View/View_Utilisateurs.java | 6 +- 18 files changed, 318 insertions(+), 276 deletions(-) diff --git a/Implementation/chatapp/src/main/java/chatapp/Controller/ChatApp.java b/Implementation/chatapp/src/main/java/chatapp/Controller/ChatApp.java index 3fa8584..5641e2a 100644 --- a/Implementation/chatapp/src/main/java/chatapp/Controller/ChatApp.java +++ b/Implementation/chatapp/src/main/java/chatapp/Controller/ChatApp.java @@ -1,6 +1,5 @@ package chatapp.Controller; -import chatapp.Model.DataBase; import chatapp.Model.ListUtilisateurs; import chatapp.Model.Utilisateur; import chatapp.Protocol.*; @@ -30,20 +29,34 @@ public class ChatApp implements PropertyChangeListener { /* Liste des utilisateurs actifs */ private ListUtilisateurs actifUsers ; - private boolean isExterne; // TRUE si l'utilisateur est externe au reseau FALSE s'il est interne + /* TRUE si l'utilisateur est externe au reseau FALSE s'il est interne */ + private boolean isExterne; + private HttpEchange externeEchange; + /* ChatApp est associe a un utilisateur */ private Utilisateur me; /* ChatApp est associe a une application qui le lance et que chatapp doit fermer a la fin */ private Application main; + /* Instance de ChatApp */ private static ChatApp chatapp = null; + + /* Gérer les multiples connexions en TCP. */ private RunnerEcouteTCP runnerEcouteTCP; + + /* Gérer les multiples connexions en UDP. */ private RunnerEcouteUDP runnerEcouteUDP; + + /* TRUE si l'utilisateur est connecte au reseau FALSE sinon */ private boolean connecte; + + /* Acces a la base de donnée */ //private DataBase db; - public ArrayList ListeCommunication = new ArrayList<>(); + + /* Variable stockant les communications grâce aux IDs des utilisateurs */ + public ArrayList listeCommunication = new ArrayList<>(); /** *

Getter : Connecte @@ -62,8 +75,7 @@ public class ChatApp implements PropertyChangeListener { */ public ChatApp(String pseudo, Integer port, Application main){ this.actifUsers = new ListUtilisateurs() ; - // Recuperer adresse IP de l'utilisateur - InetAddress ip = UDPEchange.getCurrentIp(); + InetAddress ip = UDPEchange.getCurrentIp(); // Recuperer adresse IP de l'utilisateur this.me = new Utilisateur(pseudo,port,ip); this.actifUsers.addList(getMe()); this.main = main; @@ -144,9 +156,9 @@ public class ChatApp implements PropertyChangeListener { * @return False si modiferPseudo a échoué, True sinon */ public Boolean modifierPseudoInterne(String nouveau) throws IOException { - // Message que l'on envoie à tous les utilisateurs actifs + // Message que l'on envoie à tous les utilisateurs actifs String broadcastMessage = "Demande Modification Pseudo\n" + this.getMe().toString() + "\n" + nouveau + "\n"; - UDPEchange.EnvoiBroadcast(broadcastMessage); + UDPEchange.envoiBroadcast(broadcastMessage); try { Thread.sleep(2000); /* L'utilisateur doit attendre la reponse de tous les utilisateurs connectes @@ -159,7 +171,7 @@ public class ChatApp implements PropertyChangeListener { System.out.println("Modification pseudo reussi"); //Envoi un msg en broadcast a tout les utilisateurs pour les prevenir de son nouveau pseudo// broadcastMessage = "Modification pseudo reussi\n" + this.getMe().toString() + "\n" + nouveau + "\n"; - UDPEchange.EnvoiBroadcast(broadcastMessage); + UDPEchange.envoiBroadcast(broadcastMessage); //-------Change son propre nom d'utilisateur-------// this.getActifUsers().modifierList(this.getMe().getPseudo(), nouveau); this.getMe().setPseudo(nouveau); @@ -226,10 +238,10 @@ public class ChatApp implements PropertyChangeListener { * @throws IOException */ public Boolean connexionInterne(String pseudo) throws IOException { - // Message que l'on envoie à tous les utilisateurs actifs + // Message que l'on envoie à tous les utilisateurs actifs this.me.setPseudo(pseudo); String broadcastMessage = "Connexion\n" + this.getMe().toString() ; - UDPEchange.EnvoiBroadcast(broadcastMessage); + UDPEchange.envoiBroadcast(broadcastMessage); try { Thread.sleep(2000); // L'utilisateur doit attendre la reponse de tous les utilisateurs connectes } catch (InterruptedException e) { @@ -297,8 +309,7 @@ public class ChatApp implements PropertyChangeListener { * */ private void deconnexionExterne() throws IOException{ - // A IMPLEMENTER - System.out.println("Deco lancee"); + System.out.println("Deconnexion lancee"); boolean deco = false; try { deco = externeEchange.sendPost("Deconnexion"); @@ -320,7 +331,6 @@ public class ChatApp implements PropertyChangeListener { } Platform.exit(); System.exit(0); - } @@ -330,9 +340,9 @@ public class ChatApp implements PropertyChangeListener { * @throws IOException */ public void deconnexionInterne() throws IOException { - // Message que l'on envoie à tous les utilisateurs actifs + // Message que l'on envoie à tous les utilisateurs actifs String broadcastMessage = "Deconnexion\n" + this.getMe().toString() ; - UDPEchange.EnvoiBroadcast(broadcastMessage); + UDPEchange.envoiBroadcast(broadcastMessage); //db.majUtilisateursActifs(false,this.me.getId()); this.connecte=false; try { @@ -422,7 +432,7 @@ public class ChatApp implements PropertyChangeListener { public ArrayList createListeCommunicationPossible(){ ArrayList communication = new ArrayList<>(); for ( Utilisateur element : this.actifUsers.getActifUsers()){ - if ( ! this.ListeCommunication.contains(element.getId())){ + if ( ! this.listeCommunication.contains(element.getId())){ communication.add(element); } } diff --git a/Implementation/chatapp/src/main/java/chatapp/Main.java b/Implementation/chatapp/src/main/java/chatapp/Main.java index 6264b0c..0e4457f 100644 --- a/Implementation/chatapp/src/main/java/chatapp/Main.java +++ b/Implementation/chatapp/src/main/java/chatapp/Main.java @@ -4,14 +4,16 @@ import chatapp.Controller.ChatApp; import javafx.application.Application; import javafx.application.Platform; import javafx.fxml.FXMLLoader; -import javafx.geometry.Rectangle2D; import javafx.scene.Scene; -import javafx.stage.Screen; import javafx.stage.Stage; -import java.io.IOException; - +/** + * Cette classe extends Application. + *
Elle va permettre de faire le lien avec JavaFX. + */ public class Main extends Application { + + /* Instance de ChatApp */ ChatApp chatapp; /** @@ -21,7 +23,6 @@ public class Main extends Application { */ @Override public void start(Stage primaryStage) throws Exception { - //Rectangle2D tailleEcran = Screen.getPrimary().getBounds(); this.chatapp = ChatApp.getInstance("Null",1234,this); FXMLLoader fichier = new FXMLLoader(getClass().getResource("/fenetres/ConnexionScreen.fxml")); Scene scene1 = new Scene(fichier.load(),600,400); @@ -29,15 +30,10 @@ public class Main extends Application { primaryStage.setTitle("ChatApp"); primaryStage.setMinWidth(600); primaryStage.setMinHeight(400); - //primaryStage.setMaxWidth(600); - //primaryStage.setMaxHeight(400); - /*primaryStage.setMaxWidth(tailleEcran.getWidth()); - primaryStage.setMaxHeight(tailleEcran.getHeight());*/ primaryStage.show(); primaryStage.centerOnScreen(); chatapp.activerEcouteTCP(); chatapp.activerEcouteUDP(); - } /** @@ -48,8 +44,7 @@ public class Main extends Application { public void stop() throws Exception { if(chatapp.isConnecte()){ chatapp.deconnexion(); - } - else { + } else { super.stop(); Platform.exit(); System.exit(0); diff --git a/Implementation/chatapp/src/main/java/chatapp/Model/DataBase.java b/Implementation/chatapp/src/main/java/chatapp/Model/DataBase.java index d3f46ca..fa77ab1 100644 --- a/Implementation/chatapp/src/main/java/chatapp/Model/DataBase.java +++ b/Implementation/chatapp/src/main/java/chatapp/Model/DataBase.java @@ -26,12 +26,21 @@ import java.sql.*; *
- Date d'envoi : Date a laquelle Source a envoyé le message à destinataire */ public class DataBase { - private final String DBurl = "jdbc:mysql://srv-bdens.insa-toulouse.fr:3306/tp_servlet_006?" ; + + /* URL pour accéder à la BDD */ + private final String dBurl = "jdbc:mysql://srv-bdens.insa-toulouse.fr:3306/tp_servlet_006?" ; + + /* Connection avec la BDD */ private Connection connection = null; + + /* Login pour se connecter à la BDD */ private final String login = "tp_servlet_006"; + + /* Mdp pour se connecter à la BDD */ private final String pswd = "baePh9ei"; - private static final DataBase instance = null; // Singleton + /* Singleton */ + private static final DataBase instance = null; /** * Constructeur de la database @@ -52,7 +61,7 @@ public class DataBase { //this.connection = DriverManager.getConnection("jdbc:mysql://localhost/POO_AL_NM?allowPublicKeyRetrieval=true&useSSL=false", "root", "1234"); // Auriane : DECOMMENTER CETTE LIGNE //this.connection = DriverManager.getConnection("jdbc:mysql://localhost:8889/POO_AL_NM?allowPublicKeyRetrieval=true&useSSL=false", "root", "root"); - this.connection = DriverManager.getConnection(this.DBurl,login,pswd); + this.connection = DriverManager.getConnection(this.dBurl,login,pswd); System.out.println("Connexion Etablie"); } catch (SQLException e) { e.printStackTrace(); @@ -72,29 +81,29 @@ public class DataBase { /** * Methode permettant de créer une table pour stocker les messages entre deux utilisateurs - * @param ID1 Id du premier utilisateur - * @param ID2 Id du second utilisateur + * @param iD1 Id du premier utilisateur + * @param iD2 Id du second utilisateur */ - public void CreationTableHistorique(String ID1 , String ID2) { + public void creationTableHistorique(String iD1 , String iD2) { // Pour eviter d'avoir les tables en double String petit; String grand; - int comparaison = ID1.compareTo(ID2); + int comparaison = iD1.compareTo(iD2); if (comparaison < 0) { - petit = ID1; - grand = ID2 ; + petit = iD1; + grand = iD2 ; } else { - petit = ID2; - grand = ID1 ; + petit = iD2; + grand = iD1 ; } String nomTable = "Chat_" + petit + "_" + grand ; - String Requete = "CREATE TABLE IF NOT EXISTS`" + nomTable +"` (\n" + "`Destinataire` varchar(100) NOT NULL,\n" + " `Source` varchar(100) NOT NULL,\n" + " `Envoi` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\n" + " `Message` text NOT NULL\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ;"; - System.out.println(Requete); - PreparedStatement Ps = null ; + String requete = "CREATE TABLE IF NOT EXISTS`" + nomTable +"` (\n" + "`Destinataire` varchar(100) NOT NULL,\n" + " `Source` varchar(100) NOT NULL,\n" + " `Envoi` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,\n" + " `Message` text NOT NULL\n" + ") ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 ;"; + System.out.println(requete); + PreparedStatement ps = null ; //Statement est utilisé pour envoyer une requete SQL à la base de donnee try { - Ps = connection.prepareStatement(Requete); + ps = connection.prepareStatement(requete); System.out.println("Statement cree"); } catch (SQLException e) { e.printStackTrace(); @@ -102,8 +111,8 @@ public class DataBase { } //Execute la donnée SQL statement passe en parametre try { - assert Ps != null; - Ps.executeUpdate(); + assert ps != null; + ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); System.out.println(" Echec executeUpdate "); @@ -112,17 +121,17 @@ public class DataBase { /** * Méthode permettant de mettre a jour le pseudo d'un utilisateur en fonction de son ID dans la base de donnee - * @param ID Id de l'utilisateur qui vient de changer de pseudo - * @param Pseudo Nouveau Pseudo de l'utilisateur + * @param iD Id de l'utilisateur qui vient de changer de pseudo + * @param pseudo Nouveau Pseudo de l'utilisateur */ - public void majPseudo( String ID , String Pseudo) { + public void majPseudo( String iD , String pseudo) { String requete= "UPDATE `Utilisateurs` SET `Pseudo`=? WHERE id=?"; - PreparedStatement Ps = null ; + PreparedStatement ps = null ; //Statement est utilisé pour envoyer une requete SQL à la base de donnee try { - Ps = connection.prepareStatement(requete); - Ps.setString(1, Pseudo); // ? n°1 devient la valeur contenu dans Pseudo - Ps.setString(2, ID); // ? n°2 devient la valeur contenu dans ID + ps = connection.prepareStatement(requete); + ps.setString(1, pseudo); // ? n°1 devient la valeur contenu dans Pseudo + ps.setString(2, iD); // ? n°2 devient la valeur contenu dans ID System.out.println("Statement cree"); } catch (SQLException e) { e.printStackTrace(); @@ -130,8 +139,8 @@ public class DataBase { } //Execute la donnée SQL statement passe en parametre try { - assert Ps != null; - Ps.executeUpdate(); + assert ps != null; + ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); System.out.println(" Echec executeUpdate "); @@ -142,31 +151,31 @@ public class DataBase { /** * Méthode permettant de mettre a jour le pseudo d'un utilisateur en fonction de son ID dans la base de donnée - * @param IDdest Id de l'utilisateur Destinataire du message - * @param IDsrc Id de celui qui envoi le message - * @param Msg Message envoye entre les deux utilisateurs + * @param iDdest Id de l'utilisateur Destinataire du message + * @param iDsrc Id de celui qui envoi le message + * @param msg Message envoye entre les deux utilisateurs */ - public void ajoutHistorique(String IDdest , String IDsrc, String Msg) { + public void ajoutHistorique(String iDdest , String iDsrc, String msg) { String petit; String grand; - int comparaison = IDdest.compareTo(IDsrc); + int comparaison = iDdest.compareTo(iDsrc); if (comparaison < 0) { - petit = IDdest; - grand = IDsrc ; + petit = iDdest; + grand = iDsrc ; } else { - petit = IDsrc; - grand = IDdest ; + petit = iDsrc; + grand = iDdest ; } String nomTable = "Chat_" + petit + "_" + grand ; String requete= "INSERT INTO `"+ nomTable +"`(`Destinataire`, `Source`, `Message`) VALUES ( ? , ? , ?)"; - PreparedStatement Ps = null ; + PreparedStatement ps = null ; //Statement est utilisé pour envoyer une requete SQL à la base de donnee try { - Ps = connection.prepareStatement(requete); - Ps.setString(1, IDdest); // ? n°1 devient la valeur contenu dans IDdest - Ps.setString(2, IDsrc); // ? n°2 devient la valeur contenu dans IDsrc - Ps.setString(3, Msg); // ? n°3 devient la valeur contenu dans Msg + ps = connection.prepareStatement(requete); + ps.setString(1, iDdest); // ? n°1 devient la valeur contenu dans IDdest + ps.setString(2, iDsrc); // ? n°2 devient la valeur contenu dans IDsrc + ps.setString(3, msg); // ? n°3 devient la valeur contenu dans Msg //La date de l'envoi n'a pas besoin d'être renseigné, elle est automatique System.out.println("Statement cree"); } catch (SQLException e) { @@ -175,8 +184,8 @@ public class DataBase { } //Execute la donnée SQL statement passe en parametre try { - assert Ps != null; - Ps.executeUpdate(); + assert ps != null; + ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); System.out.println(" Echec executeUpdate "); @@ -186,23 +195,23 @@ public class DataBase { /** * Méthode permettant d'ajouter un utilisateur dans la base de donnée si celui-ci n'existe pas déjà - * @param ID Id de l'utilisateur que l'on veut rajouter - * @param Pseudo Pseudo actuelle de l'utilisateur + * @param iD Id de l'utilisateur que l'on veut rajouter + * @param pseudo Pseudo actuelle de l'utilisateur */ - public void ajoutUtilisateurs(String ID , String Pseudo ) { - if(this.idExiste(ID)){ - this.majPseudo(ID, Pseudo); + public void ajoutUtilisateurs(String iD , String pseudo ) { + if(this.idExiste(iD)){ + this.majPseudo(iD, pseudo); } else { // L'utilisateur n'existe pas , on va le rajouter. - System.out.println("On rajoute l'utilisateur " + Pseudo); + System.out.println("On rajoute l'utilisateur " + pseudo); String requete = "INSERT INTO `Utilisateurs` (`ID`, `Pseudo`, `Actif`) VALUES ( ? , ? , '1')"; - PreparedStatement Ps = null; + PreparedStatement ps = null; //Statement est utilisé pour envoyer une requete SQL à la base de donnee try { - Ps = connection.prepareStatement(requete); - Ps.setString(1, ID); // ? n°1 devient la valeur contenu dans ID - Ps.setString(2, Pseudo); // ? n°2 devient la valeur contenu dans Pseudo + ps = connection.prepareStatement(requete); + ps.setString(1, iD); // ? n°1 devient la valeur contenu dans ID + ps.setString(2, pseudo); // ? n°2 devient la valeur contenu dans Pseudo System.out.println("Statement cree"); } catch (SQLException e) { e.printStackTrace(); @@ -210,8 +219,8 @@ public class DataBase { } //Execute la donnée SQL statement passe en parametre try { - assert Ps != null; - Ps.executeUpdate(); + assert ps != null; + ps.executeUpdate(); } catch (SQLException e) { e.printStackTrace(); System.out.println(" Echec executeUpdate "); @@ -250,23 +259,23 @@ public class DataBase { /** * Méthode permettant de récupérer les N derniers messages envoyés entre 2 utilisateurs - * @param ID Utilisateur associé a ChatApp - * @param IDdestinataire Celui avec qui correspond ID - * @param N Le nombre de messages souhaités + * @param iD Utilisateur associé a ChatApp + * @param iDdestinataire Celui avec qui correspond ID + * @param n Le nombre de messages souhaités * @return Les N derniers Messages */ - public String recupNMsg(String ID, String IDdestinataire, int N) { - StringBuilder Msg = new StringBuilder(); + public String recupNMsg(String iD, String iDdestinataire, int n) { + StringBuilder msg = new StringBuilder(); String petit; String grand; - int comparaison = ID.compareTo(IDdestinataire); + int comparaison = iD.compareTo(iDdestinataire); if (comparaison < 0) { - petit = ID; - grand = IDdestinataire; + petit = iD; + grand = iDdestinataire; } else { - petit = IDdestinataire; - grand = ID ; + petit = iDdestinataire; + grand = iD ; } String nomTable = "Chat_" + petit + "_" + grand ; String requete = "SELECT * FROM `"+ nomTable +"`"; @@ -283,23 +292,23 @@ public class DataBase { } catch (SQLException throwables) { throwables.printStackTrace(); } - Integer Taille = tailleBDD(nomTable); - if(Taille < N ){ - N = Taille ; + Integer taille = tailleBDD(nomTable); + if(taille < n ){ + n = taille ; } - for(int i = 0 ; i < N; i++){ + for(int i = 0 ; i < n; i++){ try { assert rs != null; if( rs.next()){ - String IDSource = rs.getString("Source"); - String Envoi = rs.getTimestamp("Envoi").toString(); - String Message = rs.getString("Message"); - if (IDSource.equals(ID)) Msg.append("Moi (").append(Envoi).append(") : ").append(Message); + String iDSource = rs.getString("Source"); + String envoi = rs.getTimestamp("Envoi").toString(); + String message = rs.getString("Message"); + if (iDSource.equals(iD)) msg.append("Moi (").append(envoi).append(") : ").append(message); else { - String PseudoSource = getPseudo(IDSource) ; - Msg.append(PseudoSource).append(" (").append(Envoi).append(") : ").append(Message); + String pseudoSource = getPseudo(iDSource) ; + msg.append(pseudoSource).append(" (").append(envoi).append(") : ").append(message); } - Msg.append('\n'); + msg.append('\n'); } // MSG de la forme : // Source (Date) : Texte @@ -307,7 +316,7 @@ public class DataBase { throwables.printStackTrace(); } } - return Msg.toString(); + return msg.toString(); } /** @@ -316,7 +325,7 @@ public class DataBase { * @return Pseudo actuel */ private String getPseudo(String idSource) { - String Pseudo = "" ; + String pseudo = "" ; String requete= "SELECT * FROM `Utilisateurs` WHERE `ID` LIKE '" + idSource + "'"; Statement stmt = null; ResultSet rs = null ; @@ -334,34 +343,34 @@ public class DataBase { try { assert rs != null; if (rs.next()){ - Pseudo = rs.getString("Pseudo") ; + pseudo = rs.getString("Pseudo") ; } } catch (SQLException throwables) { throwables.printStackTrace(); } - return Pseudo ; + return pseudo ; } /** * Méthode permettant de récupérer les messages d'une plage de donnée [deb,fin] envoyés entre 2 utilisateurs - * @param ID Utilisateur associé a ChatApp - * @param IDdestinataire Celui avec qui correspond ID + * @param iD Utilisateur associé a ChatApp + * @param iDdestinataire Celui avec qui correspond ID * @param deb On veut les messages à partir de l'indice deb * @param fin On veut les messages jusqu'a l'indice fin * @return Les messages d'une plage de donnée [deb,fin] */ - public String recupMsg(String ID, String IDdestinataire, int deb , int fin) { - StringBuilder Msg = new StringBuilder(); + public String recupMsg(String iD, String iDdestinataire, int deb , int fin) { + StringBuilder msg = new StringBuilder(); String petit; String grand; - int comparaison = ID.compareTo(IDdestinataire); + int comparaison = iD.compareTo(iDdestinataire); if (comparaison < 0) { - petit = ID; - grand = IDdestinataire; + petit = iD; + grand = iDdestinataire; } else { - petit = IDdestinataire; - grand = ID ; + petit = iDdestinataire; + grand = iD ; } String nomTable = "Chat_" + petit + "_" + grand ; String requete = "SELECT * FROM `"+ nomTable+"`"; @@ -378,25 +387,25 @@ public class DataBase { } catch (SQLException throwables) { throwables.printStackTrace(); } - Integer Taille = tailleBDD(nomTable); - if(Taille < fin ){ - fin = Taille ; + Integer taille = tailleBDD(nomTable); + if(taille < fin ){ + fin = taille ; } for(int i = 0 ; i < fin; i++){ try { assert rs != null; if( rs.next()){ - String IDSource = rs.getString("Source"); - String Envoi = rs.getTimestamp("Envoi").toString(); - String Message = rs.getString("Message"); + String iDSource = rs.getString("Source"); + String envoi = rs.getTimestamp("Envoi").toString(); + String message = rs.getString("Message"); if (i >= deb) { - if (IDSource.equals(ID)) { - Msg.append("Moi (").append(Envoi).append(") : ").append(Message); + if (iDSource.equals(iD)) { + msg.append("Moi (").append(envoi).append(") : ").append(message); } else { - String PseudoSource = getPseudo(IDSource); - Msg.append(PseudoSource).append(" (").append(Envoi).append(") : ").append(Message); + String PseudoSource = getPseudo(iDSource); + msg.append(PseudoSource).append(" (").append(envoi).append(") : ").append(message); } - Msg.append('\n'); + msg.append('\n'); } } } catch (SQLException throwables) { @@ -404,7 +413,7 @@ public class DataBase { } } - return Msg.toString(); + return msg.toString(); } /** @@ -413,7 +422,7 @@ public class DataBase { * @return Taille de la BDD */ public Integer tailleBDD(String nomTable) { - Integer Taille = 0 ; + Integer taille = 0 ; String requete = "SELECT * FROM `"+nomTable+ "`"; Statement stmt = null; ResultSet rs = null ; @@ -435,20 +444,20 @@ public class DataBase { } catch (SQLException throwables) { throwables.printStackTrace(); } - Taille++; // on incremente Taille pour chaque solution trouvée + taille++; // on incremente Taille pour chaque solution trouvée } - return Taille; + return taille; } /** * Methode permettant de savoir si un utilisateur existe dans la base de donnée 'Utilisateurs' - * @param ID On recherche l'utilisateur dont l'ID est ID + * @param iD On recherche l'utilisateur dont l'ID est ID * @return True si l'utilisateur existe , False sinon */ - public boolean idExiste(String ID){ + public boolean idExiste(String iD){ boolean existe = false ; // Verification que l'utilisateur n'existe pas - String requete = "SELECT * FROM `Utilisateurs` WHERE `ID` LIKE '" + ID +"'"; + String requete = "SELECT * FROM `Utilisateurs` WHERE `ID` LIKE '" + iD +"'"; Statement stmt; ResultSet rs = null ; try { @@ -469,22 +478,22 @@ public class DataBase { /** * Méthode permettant de récupérer le nom de la table où sont stockés les messages de 2 utilisateurs. - * @param U1 Un des 2 utilisateurs - * @param U2 Le second utilisateur + * @param u1 Un des 2 utilisateurs + * @param u2 Le second utilisateur * @return Le nom de la table des historiques */ - public String getNomTable(Utilisateur U1, Utilisateur U2){ + public String getNomTable(Utilisateur u1, Utilisateur u2){ String petit; String grand; int comparaison; - comparaison = U1.getId().compareTo(U2.getId()); + comparaison = u1.getId().compareTo(u2.getId()); if (comparaison < 0) { - petit = U1.getId(); - grand = U2.getId(); + petit = u1.getId(); + grand = u2.getId(); } else { - petit = U2.getId() ; - grand = U1.getId() ; + petit = u2.getId() ; + grand = u1.getId() ; } return "Chat_" + petit + "_" + grand ; } diff --git a/Implementation/chatapp/src/main/java/chatapp/Model/ListUtilisateurs.java b/Implementation/chatapp/src/main/java/chatapp/Model/ListUtilisateurs.java index c584994..461a8a1 100644 --- a/Implementation/chatapp/src/main/java/chatapp/Model/ListUtilisateurs.java +++ b/Implementation/chatapp/src/main/java/chatapp/Model/ListUtilisateurs.java @@ -1,8 +1,6 @@ package chatapp.Model; -import chatapp.Controller.ChatApp; -import java.io.IOException; import java.net.InetAddress; import java.util.ArrayList; @@ -13,7 +11,7 @@ import java.util.ArrayList; */ public class ListUtilisateurs { - // On conserve dans cette liste tout les utilisateurs actuellement actifs + /* On conserve dans cette liste tout les utilisateurs actuellement actifs */ private ArrayList actifUsers ; /** @@ -30,7 +28,6 @@ public class ListUtilisateurs { public synchronized void addList(Utilisateur u) { if (! this.appartient(u)){ this.actifUsers.add(u); - //ListeCommunicationPossible.add(u); } } @@ -53,7 +50,7 @@ public class ListUtilisateurs { * Récupérer un utilisateur à partir de son addresse IP * @param ip Adresse IP de l'utilisateur que l'on souhaite retrouver * @return L'utilisateur associé à l'adresse IP - * @throws Exception + * @throws Exception No such user with this IP address */ public Utilisateur getIPList(InetAddress ip) throws Exception { for(Utilisateur elem: this.actifUsers) @@ -69,7 +66,7 @@ public class ListUtilisateurs { * Récupérer un utilisateur à partir de son ID * @param iD L'ID de l'utilisateur que l'on souhaite retrouver * @return L'utilisateur associé à l'adresse ID - * @throws Exception + * @throws Exception No such user with this ID */ public Utilisateur getIDList(String iD) throws Exception { for(Utilisateur elem: this.actifUsers) @@ -128,8 +125,9 @@ public class ListUtilisateurs { boolean appartient = false ; for(Utilisateur elem: this.actifUsers) { - if (elem.getId().equals(u.getId()) ) { - appartient = true ; + if (elem.getId().equals(u.getId())) { + appartient = true; + break; } } System.out.println("Test appartient : " + appartient); diff --git a/Implementation/chatapp/src/main/java/chatapp/Model/MessageHorodate.java b/Implementation/chatapp/src/main/java/chatapp/Model/MessageHorodate.java index 4ca0618..e07578f 100644 --- a/Implementation/chatapp/src/main/java/chatapp/Model/MessageHorodate.java +++ b/Implementation/chatapp/src/main/java/chatapp/Model/MessageHorodate.java @@ -16,10 +16,19 @@ import java.util.Date; *

*/ public class MessageHorodate implements Serializable { + /* Un message est toujours adressé à un destinataire */ private Utilisateur destinataire ; + + /* Un message est toujours associé à un utilisateur source */ private Utilisateur source ; + + /* La date d'horodatage du message */ private Date dateHorodatage ; - private int type; // 0 = debut de la communication, 1= message de communication, 2 = fin de la communicataion + + /* Le type d'un messge : 0 = debut de la communication, 1= message de communication, 2 = fin de la communicataion */ + private int type; + + /* Le corps du message */ private String Message; /** @@ -27,14 +36,14 @@ public class MessageHorodate implements Serializable { * Constructeur , le message va etre horodaté * @param destinataire - Destinataire du message * @param source - Source du message - * @param Message - Message envoyé + * @param message - Message envoyé * @param type - Le type du message *

*/ - public MessageHorodate(Utilisateur destinataire, Utilisateur source, String Message, int type) { + public MessageHorodate(Utilisateur destinataire, Utilisateur source, String message, int type) { this.setDestinataire(destinataire) ; this.setSource(source) ; - this.setMessage(Message) ; + this.setMessage(message) ; this.setDateHorodatage(new Date()); this.type = type; } @@ -56,13 +65,13 @@ public class MessageHorodate implements Serializable { */ @Override public String toString() { - String Msg = ""; - Msg += ("Destinataire::" + this.getDestinataire() + "\n") ; - Msg += ("Source::" + this.getSource()+ "\n") ; - Msg += ("Type::"+ this.type+ "\n"); - Msg += ("Date::" + this.dateToString() + "\n") ; - Msg += ("Message::" + this.getMessage() + "\n" ); - return Msg ; + String msg = ""; + msg += ("Destinataire::" + this.getDestinataire() + "\n") ; + msg += ("Source::" + this.getSource()+ "\n") ; + msg += ("Type::"+ this.type+ "\n"); + msg += ("Date::" + this.dateToString() + "\n") ; + msg += ("Message::" + this.getMessage() + "\n" ); + return msg ; } /** diff --git a/Implementation/chatapp/src/main/java/chatapp/Model/Utilisateur.java b/Implementation/chatapp/src/main/java/chatapp/Model/Utilisateur.java index 6212136..0ed8f80 100644 --- a/Implementation/chatapp/src/main/java/chatapp/Model/Utilisateur.java +++ b/Implementation/chatapp/src/main/java/chatapp/Model/Utilisateur.java @@ -16,14 +16,23 @@ import java.net.UnknownHostException; */ public class Utilisateur { + /* Un utilisateur possede un pseudo unique */ private String pseudo ; + + /* Un port (utilisé lors de nos premiers tests pour tester le broadcast) */ private Integer port; + + /* Un utilisateur est associé à une adresse IP */ private final InetAddress ip ; + + /* Chaque utilisateur possede un ID unique */ private final String id ; + /* La taille maximum d'un ID */ Integer TAILLE_MAX = 5; + /** - * Constructeur : Utilisateur + * Constructeur : Utilisateur (3 paramètres) * @param pseudo Le pseudo associé * @param port Le port * @param ip L'adresse IP @@ -39,7 +48,7 @@ public class Utilisateur { } /** - * Constructeur : Utilisateur + * Constructeur : Utilisateur (4 paramètres) * @param pseudo Le pseudo associé * @param port Le port * @param ip L'adresse IP diff --git a/Implementation/chatapp/src/main/java/chatapp/Protocol/HttpEchange.java b/Implementation/chatapp/src/main/java/chatapp/Protocol/HttpEchange.java index 9d03cb5..812822c 100644 --- a/Implementation/chatapp/src/main/java/chatapp/Protocol/HttpEchange.java +++ b/Implementation/chatapp/src/main/java/chatapp/Protocol/HttpEchange.java @@ -17,8 +17,13 @@ import java.util.HashMap; */ public class HttpEchange { - private String url = "http://192.168.1.72:8080/JavaEEHelloWorld_war_exploded/"; //Correspond à l'url de notre serveur de presence - private static boolean connecte = false; // True si l'utilisateur peut se connecter avec ce nom d'utilisateur , False sinon + /* URL de notre serveur de presence */ + private String url = "http://192.168.1.72:8080/JavaEEHelloWorld_war_exploded/"; + + /* True si l'utilisateur peut se connecter avec ce nom d'utilisateur , False sinon */ + private static boolean connecte = false; + + /* Une instance de chatapp */ private ChatApp chatapp; /** @@ -140,7 +145,6 @@ public class HttpEchange { } - /** * Getter : Connecte * @return Le boolean connecté (True s'il peut se connecter avec ce nom d'utilisateur , False sinon) diff --git a/Implementation/chatapp/src/main/java/chatapp/Protocol/RunnerEcouteTCP.java b/Implementation/chatapp/src/main/java/chatapp/Protocol/RunnerEcouteTCP.java index f8ad914..fa7c7e9 100644 --- a/Implementation/chatapp/src/main/java/chatapp/Protocol/RunnerEcouteTCP.java +++ b/Implementation/chatapp/src/main/java/chatapp/Protocol/RunnerEcouteTCP.java @@ -15,10 +15,13 @@ import java.util.ArrayList; *

*/ public class RunnerEcouteTCP extends Thread { + /* Une instance de ChaAapp */ public ChatApp app ; + private PropertyChangeSupport pcs; - // on conserve les sessions actives dans un attribut liste - private ArrayList ListeSessions = new ArrayList<>(); + + /* on conserve les sessions actives dans un attribut liste */ + private ArrayList listeSessions = new ArrayList<>(); /** * Constructeur @@ -54,7 +57,7 @@ public class RunnerEcouteTCP extends Thread { System.out.println("Attente Session de clavardage"); Socket link = ss.accept(); // Blocante SessionClavardage session = new SessionClavardage(link,app); - this.ListeSessions.add(session); + this.listeSessions.add(session); pcs.firePropertyChange("NouvelleSession",false,true); } } @@ -68,7 +71,7 @@ public class RunnerEcouteTCP extends Thread { * @param session Session Active que l'on souhaite rajouter */ public void addSession(SessionClavardage session){ - this.ListeSessions.add(session); + this.listeSessions.add(session); pcs.firePropertyChange("NouvelleSession",false,true); } @@ -77,7 +80,7 @@ public class RunnerEcouteTCP extends Thread { * @return Premiere Session Active */ public SessionClavardage getSessionClavardage() { - return(this.ListeSessions.remove(0)); + return(this.listeSessions.remove(0)); } /** diff --git a/Implementation/chatapp/src/main/java/chatapp/Protocol/RunnerEcouteUDP.java b/Implementation/chatapp/src/main/java/chatapp/Protocol/RunnerEcouteUDP.java index 9218860..17133e7 100644 --- a/Implementation/chatapp/src/main/java/chatapp/Protocol/RunnerEcouteUDP.java +++ b/Implementation/chatapp/src/main/java/chatapp/Protocol/RunnerEcouteUDP.java @@ -20,7 +20,7 @@ public class RunnerEcouteUDP extends Thread { /** * Méthode qui vient ecraser la méthode run de la classe Thread. - * La méthode 'ecouteUDP' est appelé. + *
La méthode 'ecouteUDP' est appelé. */ @Override public void run() { diff --git a/Implementation/chatapp/src/main/java/chatapp/Protocol/SessionClavardage.java b/Implementation/chatapp/src/main/java/chatapp/Protocol/SessionClavardage.java index 03ea64a..3135c2f 100644 --- a/Implementation/chatapp/src/main/java/chatapp/Protocol/SessionClavardage.java +++ b/Implementation/chatapp/src/main/java/chatapp/Protocol/SessionClavardage.java @@ -1,28 +1,26 @@ package chatapp.Protocol; -import java.beans.PropertyChangeListener; -import java.beans.PropertyChangeSupport; -import java.io.IOException; -import java.io.InputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.io.OutputStream; -import java.net.Socket; -import java.util.ArrayList; - import chatapp.Controller.ChatApp; -import chatapp.Model.DataBase; import chatapp.Model.MessageHorodate; import chatapp.Model.Utilisateur; import chatapp.View.FenetreSession; import javafx.application.Platform; +import java.beans.PropertyChangeListener; +import java.beans.PropertyChangeSupport; +import java.io.IOException; +import java.io.ObjectInputStream; +import java.io.ObjectOutputStream; +import java.net.Socket; +import java.util.ArrayList; + /** *

* Classe représentant une session de clavardage. *
La classe hérite de la classe Thread et dispose de 2 constructeurs selon que l'on initie une demande de session ou que l'on recoit une demande. *
Elle possède en attribut: - *
- link: la socket associée à la session de clavardage + *
- link : la socket associée à la session de clavardage + *
- app : L'instance de chatapp *
- u2: l'utilisateur avec lequel on communique *
- out: le flux de donnees sortant *
- in: le flux de donnees entrant @@ -31,14 +29,27 @@ import javafx.application.Platform; *

*/ public class SessionClavardage extends Thread { + + /* la socket associée à la session de clavardage */ private Socket link; + + /* L'instance de chatapp */ private ChatApp app; + + /* l'utilisateur avec lequel on communique */ private Utilisateur u2; + + /* le flux de donnees sortant */ private ObjectOutputStream out; + + /* le flux de donnees entrant */ private ObjectInputStream in; + + /* Le PropertyChangeSupport permettant d'envoyer les notifications de MessageRecu et de FindeSession */ private PropertyChangeSupport pcs; - private ArrayList derniersMsg; // on met temporairement les derniers msgs pour éviter les pb de synchro inter-threads - private int SessionID; + + /* On met temporairement les derniers msgs pour éviter les pb de synchro inter-threads */ + private ArrayList derniersMsg; /** *

Ce constructeur crée une session de clavardage quand on recoit une requete

@@ -54,8 +65,7 @@ public class SessionClavardage extends Thread { }catch(Exception e) { e.getStackTrace(); } - this.derniersMsg = new ArrayList(); - this.SessionID = 2; + this.derniersMsg = new ArrayList<>(); this.pcs = new PropertyChangeSupport(this); this.start(); } @@ -77,7 +87,7 @@ public class SessionClavardage extends Thread { e.printStackTrace(); } - this.derniersMsg = new ArrayList(); + this.derniersMsg = new ArrayList<>(); this.pcs = new PropertyChangeSupport(this); this.start(); this.initierSession(); @@ -103,13 +113,13 @@ public class SessionClavardage extends Thread { try { getOut().writeObject(msgh.toString()); } catch (IOException e) { - //e.printStackTrace(); + e.printStackTrace(); } finally { try { link.close(); } catch (IOException e) { - + e.printStackTrace(); } } } @@ -123,15 +133,16 @@ public class SessionClavardage extends Thread { isExterne="true"; // on indiquera dans le message si l'on est externe ou interne } System.out.println("Ajout d'un utilisateur dans communication"); - app.ListeCommunication.add(getU2().getId()); - System.out.println(app.ListeCommunication.size()); + app.listeCommunication.add(getU2().getId()); + System.out.println(app.listeCommunication.size()); MessageHorodate msgh = new MessageHorodate(getU2(),getApp().getMe(),isExterne,3); try { getOut().writeObject(msgh.toString()); } catch (IOException e) { - //e.printStackTrace(); + e.printStackTrace(); } } + /** * Methode transformant prenant un string pour le transmettre sous la forme d'un message horodate a l'utilisateur distant * @param msg Le texte du message à envoyer @@ -161,10 +172,10 @@ public class SessionClavardage extends Thread { *

Methode lancee par le thread, permet de receptionner les messages horodates recus et d'agir en conséquence selon le type de message recu

*/ public void run() { - String plaintext = null; + String plaintext; MessageHorodate msg = null; System.out.println("Session demarre"); - //app.getDb().CreationTableHistorique(app.getMe().getId(), u2.getId()); + //app.getDb().creationTableHistorique(app.getMe().getId(), u2.getId()); while(true) { try { plaintext = (String) getIn().readObject(); @@ -175,7 +186,7 @@ public class SessionClavardage extends Thread { e.printStackTrace(); } catch (IOException e) { pcs.firePropertyChange("FinDeLaSession", false, true); - app.ListeCommunication.remove(u2.getId()); + app.listeCommunication.remove(u2.getId()); break; } if(msg.getType() == 2) { @@ -185,13 +196,13 @@ public class SessionClavardage extends Thread { } catch (IOException e) { break; } - app.ListeCommunication.remove(u2.getId()); + app.listeCommunication.remove(u2.getId()); break; } else if(msg.getType() == 3) { System.out.println("Session Initiee"); this.u2 = msg.getSource() ; - app.ListeCommunication.add(u2.getId()); + app.listeCommunication.add(u2.getId()); Platform.runLater( () -> new FenetreSession(this) ); @@ -199,7 +210,6 @@ public class SessionClavardage extends Thread { else{ derniersMsg.add(msg); pcs.firePropertyChange("MessageRecu",false,true);} - } } @@ -275,12 +285,4 @@ public class SessionClavardage extends Thread { this.u2 = u2; } - /** - * Getter : SessionID - * @return SessionID - */ - public int getSessionID() { - return SessionID; - } - } diff --git a/Implementation/chatapp/src/main/java/chatapp/Protocol/UDPEchange.java b/Implementation/chatapp/src/main/java/chatapp/Protocol/UDPEchange.java index 5108e5c..270b6ec 100644 --- a/Implementation/chatapp/src/main/java/chatapp/Protocol/UDPEchange.java +++ b/Implementation/chatapp/src/main/java/chatapp/Protocol/UDPEchange.java @@ -24,10 +24,8 @@ import chatapp.Model.*; */ public class UDPEchange { + /* True si l'utilisateur peut se connecter avec ce nom d'utilisateur , False sinon */ private static Boolean Connecte = true; - // True si l'utilisateur peut se connecter avec ce nom d'utilisateur , False sinon - - private static Boolean EcouteEnCours = false; /** * Getter : Connecte @@ -64,7 +62,6 @@ public class UDPEchange { PseudoValide = value ; } - /**

* Getter : Ip *
Permet de recuperer l'adresse de l'hote sur le reseau au format IPv4. @@ -94,6 +91,7 @@ public class UDPEchange { } return null; } + /** *

* Méthode permettant d'envoyer un message à tout les utilisateurs à l'aide du protocole UDP @@ -101,9 +99,9 @@ public class UDPEchange { * @param broadcastMessage Message à transmettre aux utilisateurs * @throws IOException */ - public static void EnvoiBroadcast(String broadcastMessage) throws IOException { + public static void envoiBroadcast(String broadcastMessage) throws IOException { int port = 1234 ; - // Envoie en broadcast à tous les utilsateurs + // Envoie en broadcast à tous les utilisateurs for (InetAddress broadcastAddr : listAllBroadcastAddresses()) { DatagramSocket socket = new DatagramSocket(); socket.setBroadcast(true); @@ -127,8 +125,7 @@ public class UDPEchange { *

* @param app L'application de chat de l'utilisateur qui receptionne le message */ - public static void ecouteUDP(ChatApp app) - { + public static void ecouteUDP(ChatApp app) { DatagramSocket socket = null; ExecutorService exec = Executors.newFixedThreadPool(1000); try { @@ -157,22 +154,22 @@ public class UDPEchange { * Méthode permettant d'envoyer un message a utilisateur en particulier * a l'aide du protocole UDP *

- * @param Adress L'adresse IP de l'utilisateur - * @param Message Message message à transmettre a l'utilisateur + * @param address L'adresse IP de l'utilisateur + * @param message Message message à transmettre a l'utilisateur * @throws IOException */ - public static void envoiUnicast( InetAddress Adress , String Message ) throws IOException { + public static void envoiUnicast( InetAddress address , String message ) throws IOException { if (ChatApp.getInstance().isConnecte()){ DatagramSocket socket = new DatagramSocket(); - byte[]buffer = Message.getBytes(); - DatagramPacket packet = new DatagramPacket( buffer, buffer.length, Adress, 1234 ); + byte[]buffer = message.getBytes(); + DatagramPacket packet = new DatagramPacket( buffer, buffer.length, address, 1234 ); socket.send(packet); socket.close(); System.out.println("***********Message envoye***********"); - System.out.println("Dest Ip: " + Adress.toString()); + System.out.println("Dest Ip: " + address.toString()); System.out.println("Dest port: " + String.valueOf(1234)); System.out.println("Contenu: "); - System.out.println(Message); + System.out.println(message); System.out.println("************************************"); } } @@ -215,6 +212,11 @@ class RunnerUDP implements Runnable { final DatagramPacket data ; ChatApp app ; + /** + * Constructeur RunnerUDP + * @param data Un datagramPacket + * @param app Instance de chatapp + */ public RunnerUDP(DatagramPacket data, ChatApp app) { this.data= data; this.app = app ; @@ -310,19 +312,19 @@ class RunnerUDP implements Runnable { //******************************************************************************************************************* if (Type.equals("Demande Modification Pseudo")) { - Utilisateur Source = Utilisateur.stringToUtilisateur(received.split("\n")[1]); - if (! Source.equals(this.app.getMe())) { // On envoit en broadcast mais on ne souhaite pas recevoir de message de nous même + Utilisateur source = Utilisateur.stringToUtilisateur(received.split("\n")[1]); + if (! source.equals(this.app.getMe())) { // On envoit en broadcast mais on ne souhaite pas recevoir de message de nous même String nouveau = received.split("\n")[2] ; - String Message = ""; + String message = ""; if(( app.getActifUsers() ).verifierUnicite(nouveau)) { - Message = "Bon Choix Pseudo\n" + nouveau ; + message = "Bon Choix Pseudo\n" + nouveau ; } else { - Message = "Mauvais Choix Pseudo\n" ; + message = "Mauvais Choix Pseudo\n" ; } - System.out.println(Message); + System.out.println(message); try { - UDPEchange.envoiUnicast(Source.getIp(),Message); + UDPEchange.envoiUnicast(source.getIp(),message); } catch (IOException e) { e.printStackTrace(); } @@ -335,18 +337,18 @@ class RunnerUDP implements Runnable { //************************************************************************************************************ if (Type.equals("Modification pseudo reussi")) { - Utilisateur Source = Utilisateur.stringToUtilisateur(received.split("\n")[1]); - if (! Source.equals(this.app.getMe())) { // On envoit en broadcast mais on ne souhaite pas recevoir de message de nous même + Utilisateur source = Utilisateur.stringToUtilisateur(received.split("\n")[1]); + if (! source.equals(this.app.getMe())) { // On envoit en broadcast mais on ne souhaite pas recevoir de message de nous même String nouveau = received.split("\n")[2] ; System.out.println("Je rentre ici"); - if(app.getActifUsers().appartient(Source)) { // On verifie d'abord que Source appartient bien a la liste des utilisateurs actifs - System.out.println(Source.getPseudo() + " va etre changer en : " + nouveau); - app.getActifUsers().modifierList(Source.getPseudo(), nouveau); + if(app.getActifUsers().appartient(source)) { // On verifie d'abord que Source appartient bien a la liste des utilisateurs actifs + System.out.println(source.getPseudo() + " va etre changer en : " + nouveau); + app.getActifUsers().modifierList(source.getPseudo(), nouveau); } else { - System.out.println(Source.getPseudo() + " va etre ajouter en : " + nouveau); + System.out.println(source.getPseudo() + " va etre ajouter en : " + nouveau); // Suite a une perte d'un message lors d'une connexion l'utilisateur Source n'apparait pas dans la liste - Source.setPseudo(nouveau); - app.getActifUsers().addList(Source); + source.setPseudo(nouveau); + app.getActifUsers().addList(source); } } } @@ -390,8 +392,4 @@ class RunnerUDP implements Runnable { app.getActifUsers().addList(nouveau); } } - - - - } diff --git a/Implementation/chatapp/src/main/java/chatapp/View/ChangementPseudo.java b/Implementation/chatapp/src/main/java/chatapp/View/ChangementPseudo.java index 6dc5ae0..82e41ff 100644 --- a/Implementation/chatapp/src/main/java/chatapp/View/ChangementPseudo.java +++ b/Implementation/chatapp/src/main/java/chatapp/View/ChangementPseudo.java @@ -41,12 +41,8 @@ public class ChangementPseudo { @FXML // fx:id="MenuButton" private Button MenuButton; // Value injected by FXMLLoader + /* Une instance de chatApp */ private ChatApp chatApp; - @FXML - void nouveauPseudo(ActionEvent event) { - - } - @FXML /** @@ -100,6 +96,5 @@ public class ChangementPseudo { chatApp = ChatApp.getInstance(); pseudonyme1.setText(chatApp.getMe().getPseudo()); this.validationButton.setDefaultButton(true); - //System.out.println(this.validationButton.isDefaultButton()); } } \ No newline at end of file diff --git a/Implementation/chatapp/src/main/java/chatapp/View/Clavardage.java b/Implementation/chatapp/src/main/java/chatapp/View/Clavardage.java index dcc4d5e..413d4be 100644 --- a/Implementation/chatapp/src/main/java/chatapp/View/Clavardage.java +++ b/Implementation/chatapp/src/main/java/chatapp/View/Clavardage.java @@ -9,7 +9,6 @@ import java.text.SimpleDateFormat; import java.util.Date; import java.util.ResourceBundle; -import chatapp.Controller.ChatApp; import chatapp.Model.MessageHorodate; import chatapp.Model.Utilisateur; import chatapp.Protocol.SessionClavardage; @@ -52,9 +51,15 @@ public class Clavardage implements Initializable, PropertyChangeListener { @FXML // fx:id="MenuButton" + /* L'utilisateur destinataire */ private Utilisateur u2; + + /* Une session de clavardage */ private SessionClavardage session; + + /* Le nom de la table dans la BDD stockant l'historique des messages */ private String nomTable; + @FXML /** *

Handler gerant l'envoi du message contenu dans le TextField AEnvoyer et sur pression du bouton EnvoyerButton

diff --git a/Implementation/chatapp/src/main/java/chatapp/View/ConnexionScreen.java b/Implementation/chatapp/src/main/java/chatapp/View/ConnexionScreen.java index f3fa2cc..d3c0996 100644 --- a/Implementation/chatapp/src/main/java/chatapp/View/ConnexionScreen.java +++ b/Implementation/chatapp/src/main/java/chatapp/View/ConnexionScreen.java @@ -24,10 +24,16 @@ import javafx.stage.Stage; */ public class ConnexionScreen { + /* Bouton de connexion */ public Button connexionButton; + /* Zone de texte où inserer le pseudonyme souhaité */ public TextField pseudonyme; + + /* RadioButton : l'utilisateur est distant */ public RadioButton remoteButton; + + /* RadioButton : l'utilisateur est local */ public RadioButton localButton; @FXML // ResourceBundle that was given to the FXMLLoader @@ -38,8 +44,7 @@ public class ConnexionScreen { @FXML // This method is called by the FXMLLoader when initialization is complete void initialize() { - connexionButton.setDefaultButton(true); - + connexionButton.setDefaultButton(true); // Appuyer sur entrée equivaut a cliquer sur le bouton de connexion } /** diff --git a/Implementation/chatapp/src/main/java/chatapp/View/DemarrerSession.java b/Implementation/chatapp/src/main/java/chatapp/View/DemarrerSession.java index 4459e4f..fd90aca 100644 --- a/Implementation/chatapp/src/main/java/chatapp/View/DemarrerSession.java +++ b/Implementation/chatapp/src/main/java/chatapp/View/DemarrerSession.java @@ -39,6 +39,8 @@ public class DemarrerSession { @FXML // fx:id="MenuButton" private Button MenuButton; // Value injected by FXMLLoader + + /* Instance de chatApp */ private ChatApp chatApp; /** diff --git a/Implementation/chatapp/src/main/java/chatapp/View/FenetreSession.java b/Implementation/chatapp/src/main/java/chatapp/View/FenetreSession.java index cc43ca1..4726061 100644 --- a/Implementation/chatapp/src/main/java/chatapp/View/FenetreSession.java +++ b/Implementation/chatapp/src/main/java/chatapp/View/FenetreSession.java @@ -1,22 +1,18 @@ package chatapp.View; import chatapp.Protocol.SessionClavardage; -import javafx.event.EventHandler; import javafx.fxml.FXMLLoader; import javafx.scene.Parent; import javafx.scene.Scene; import javafx.stage.Stage; -import javafx.stage.WindowEvent; -import java.beans.PropertyChangeListener; -import java.io.IOException; /** *

* Classe permettant d'ouvrir une nouvelle fenetre afin de clavarder avec un utilisateur. *

*/ public class FenetreSession extends Stage { - SessionClavardage session; + /** *

Permet l'ouverture de la fenetre associee a la session de clavardage

* @param session Un objet FenetreSession est attribué avec un objet de type SessionClavardage @@ -26,24 +22,16 @@ public class FenetreSession extends Stage { try{ Parent rootchat = fichier.load(); Clavardage controller = fichier.getController(); - System.out.println("Session id "+session.getSessionID()); - //controller.printsalut(); controller.setSession(session); - Scene scene1 = null; + Scene scene1; scene1 = new Scene(rootchat,600,400); this.setScene(scene1); this.setTitle("Session avec "+session.getU2().getPseudo()); this.setMinWidth(600); this.setMinHeight(400); - //this.setMaxWidth(600); - //this.setMaxHeight(400); this.show(); this.centerOnScreen(); - this.setOnCloseRequest(new EventHandler() { - public void handle(WindowEvent we) { - session.arretSession(); - } - }); + this.setOnCloseRequest(we -> session.arretSession()); } catch (Exception e) { e.printStackTrace(); } diff --git a/Implementation/chatapp/src/main/java/chatapp/View/View_Menu.java b/Implementation/chatapp/src/main/java/chatapp/View/View_Menu.java index 5b61e5d..8fecbe8 100644 --- a/Implementation/chatapp/src/main/java/chatapp/View/View_Menu.java +++ b/Implementation/chatapp/src/main/java/chatapp/View/View_Menu.java @@ -1,12 +1,7 @@ package chatapp.View; -import java.io.IOException; -import java.net.URL; -import java.util.ResourceBundle; - import chatapp.Controller.ChatApp; -import javafx.application.Platform; import javafx.event.ActionEvent; import javafx.fxml.FXML; import javafx.fxml.FXMLLoader; @@ -15,6 +10,11 @@ import javafx.scene.Scene; import javafx.scene.control.MenuItem; import javafx.scene.text.Text; import javafx.stage.Stage; + +import java.io.IOException; +import java.net.URL; +import java.util.ResourceBundle; + /** *

* Classe representant la page d'accueil. Elle est composé d'un menu en haut a gauche. @@ -23,13 +23,24 @@ import javafx.stage.Stage; */ public class View_Menu { + /* Le pseudo de l'utilisateur */ public Text pseudonyme; + + /* Choix dans la bar de menu : Connaitre les utilisateurs actifs */ public MenuItem utilsActifsButton; + + /* Choix dans la bar de menu : Demarrer une session de clavardage */ public MenuItem demarrerSessionButton; + + /* Choix dans la bar de menu : Changer de pseudo */ public MenuItem changerPseudoButton; + @FXML // ResourceBundle that was given to the FXMLLoader private ResourceBundle resources; + + /* Une instance de chatApp */ private ChatApp chatapp; + @FXML // URL location of the FXML file that was given to the FXMLLoader private URL location; @@ -97,9 +108,6 @@ public class View_Menu { public void deconnexion(ActionEvent actionEvent) { try { chatapp.deconnexion(); - /*chatapp.getMain().stop(); - Platform.exit(); - System.exit(0);*/ } catch (IOException e) { e.printStackTrace(); } catch (Exception e) { diff --git a/Implementation/chatapp/src/main/java/chatapp/View/View_Utilisateurs.java b/Implementation/chatapp/src/main/java/chatapp/View/View_Utilisateurs.java index d7ebf3a..4fb4bef 100644 --- a/Implementation/chatapp/src/main/java/chatapp/View/View_Utilisateurs.java +++ b/Implementation/chatapp/src/main/java/chatapp/View/View_Utilisateurs.java @@ -22,8 +22,12 @@ import javafx.stage.Stage; */ public class View_Utilisateurs { + /* La zone d'affichage des utilisateurs actifs */ public TextArea ListeUtilisateurs; + + /* Bouton de retour au menu */ public Button MenuButton; + @FXML // ResourceBundle that was given to the FXMLLoader private ResourceBundle resources; @@ -38,8 +42,6 @@ public class View_Utilisateurs { ListeUtilisateurs.appendText( " - " +elem.getPseudo() + '\n'); } ListeUtilisateurs.setEditable(false); - - } /**