diff --git a/Implementation/chatapp/build/tmp/compileJava/source-classes-mapping.txt b/Implementation/chatapp/build/tmp/compileJava/source-classes-mapping.txt index acaf915..1c6d54d 100644 --- a/Implementation/chatapp/build/tmp/compileJava/source-classes-mapping.txt +++ b/Implementation/chatapp/build/tmp/compileJava/source-classes-mapping.txt @@ -13,14 +13,15 @@ chatapp/Protocol/RunnerEcouteTCP.java chatapp/View/FenetreSession.java chatapp.View.FenetreSession chatapp.View.FenetreSession$1 -chatapp/Protocol/HttpEchange.java - chatapp.Protocol.HttpEchange +chatapp/Controller/ChatApp.java + chatapp.Controller.ChatApp chatapp/View/ChangementPseudo.java chatapp.View.ChangementPseudo -chatapp/View/View_Menu.java - chatapp.View.View_Menu -chatapp/View/DemarrerSession.java - chatapp.View.DemarrerSession +chatapp/Protocol/RunnerEcouteUDP.java + chatapp.Protocol.RunnerEcouteUDP +chatapp/Protocol/UDPEchange.java + chatapp.Protocol.RunnerUDP + chatapp.Protocol.UDPEchange chatapp/Main.java chatapp.Main chatapp/View/Clavardage.java @@ -32,10 +33,9 @@ chatapp/View/ConnexionScreen.java chatapp.View.ConnexionScreen chatapp/View/View_Utilisateurs.java chatapp.View.View_Utilisateurs -chatapp/Protocol/UDPEchange.java - chatapp.Protocol.RunnerUDP - chatapp.Protocol.UDPEchange -chatapp/Controller/ChatApp.java - chatapp.Controller.ChatApp -chatapp/Protocol/RunnerEcouteUDP.java - chatapp.Protocol.RunnerEcouteUDP +chatapp/View/View_Menu.java + chatapp.View.View_Menu +chatapp/Protocol/HttpEchange.java + chatapp.Protocol.HttpEchange +chatapp/View/DemarrerSession.java + chatapp.View.DemarrerSession diff --git a/Implementation/chatapp/src/main/java/chatapp/Controller/ChatApp.java b/Implementation/chatapp/src/main/java/chatapp/Controller/ChatApp.java index 1ec0daf..c07ccd2 100644 --- a/Implementation/chatapp/src/main/java/chatapp/Controller/ChatApp.java +++ b/Implementation/chatapp/src/main/java/chatapp/Controller/ChatApp.java @@ -110,7 +110,24 @@ public class ChatApp implements PropertyChangeListener { * @return False si modiferPseudo a echoue, True sinon */ private boolean modifierPseudoExterne(String nouveau) { - return false; + boolean reussi = false; + try { + if(externeEchange.sendPost("Pseudo " + nouveau)){ + reussi = true ; + this.getMe().setPseudo(nouveau); + db.majPseudo(this.me.getId(),nouveau); + System.out.println("Changement pseudo accepte, nouvelle liste des utilisateurs actifs:"); + this.getActifUsers().afficherListeUtilisateurs(); + } + else{ + System.out.println("Echec changement de pseudo"); + } + } catch (IOException e) { + e.printStackTrace(); + } catch (InterruptedException e) { + e.printStackTrace(); + } + return reussi; } /** @@ -183,7 +200,15 @@ public class ChatApp implements PropertyChangeListener { */ private boolean connexionExterne(String pseudo) throws IOException, InterruptedException{ this.me.setPseudo(pseudo); - return externeEchange.sendPost("Connexion"); + if(externeEchange.sendPost("Connexion")){ + this.connecte=true; + this.db.ajoutUtilisateurs(this.me.getId(),pseudo); + this.db.majUtilisateursActifs(true,this.me.getId()); + return true; + } + else{ + return false; + } } @@ -214,7 +239,7 @@ public class ChatApp implements PropertyChangeListener { else { System.out.println("Connexion echoue"); - UDPEchange.setConnecte(false); + UDPEchange.setConnecte(true); return false ; } } @@ -265,8 +290,31 @@ public class ChatApp implements PropertyChangeListener { * Il va prevenir le serveur de presence de son depart.

* */ - private void deconnexionExterne() { + private void deconnexionExterne() throws IOException{ // A IMPLEMENTER + System.out.println("Deco lancee"); + boolean deco = false; + try { + deco = externeEchange.sendPost("Deconnexion"); + } catch (InterruptedException e) { + e.printStackTrace(); + } + if(deco){ + System.out.print("Deconnexion reussie"); + } + else{ + System.out.println("Deconnexion echouee"); + } + db.majUtilisateursActifs(false,this.me.getId()); + this.connecte=false; + try { + main.stop(); + } catch (Exception e) { + e.printStackTrace(); + } + Platform.exit(); + System.exit(0); + } diff --git a/Implementation/chatapp/src/main/java/chatapp/Protocol/HttpEchange.java b/Implementation/chatapp/src/main/java/chatapp/Protocol/HttpEchange.java index 396bad2..c89d43a 100644 --- a/Implementation/chatapp/src/main/java/chatapp/Protocol/HttpEchange.java +++ b/Implementation/chatapp/src/main/java/chatapp/Protocol/HttpEchange.java @@ -37,6 +37,7 @@ public class HttpEchange { */ public boolean sendPost(String type) throws IOException, InterruptedException{ boolean reussi = false ; + /*---------------------------------CONNEXION---------------------------------*/ if (type.equals("Connexion")){ System.out.println("Tentative de connexion distante"); HttpClient client = HttpClient.newHttpClient(); @@ -63,6 +64,60 @@ public class HttpEchange { } } } + /*---------------------------------DECONNEXION---------------------------------*/ + else if(type.equals("Deconnexion")){ + System.out.println("Tentative de deconnexion distante"); + HttpClient client = HttpClient.newHttpClient(); + String requestBody = "Deconnexion\n" + this.chatapp.getMe().toString() ; + HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create(url)) + .POST(HttpRequest.BodyPublishers.ofString(requestBody)) + .build(); + + HttpResponse response = client.send(request, + HttpResponse.BodyHandlers.ofString()); + + if(response.body().equals("")){ + System.out.println("Reponse recue vide"); + } + else { + System.out.println(response.body()); + if(response.body().contains("Deconnexion")){ + reussi = true; + System.out.println("Deconnexion acceptee"); + } + } + } + /*---------------------------------PSEUDO---------------------------------*/ + /*---------------------------Le nouveau pseudo----------------------------*/ + else if(type.contains("Pseudo")){ + String nouveau = type.split(" ")[1]; + System.out.println("Tentative de modification de pseudo d'un hote distant"); + HttpClient client = HttpClient.newHttpClient(); + String requestBody = "Pseudo\n" + this.chatapp.getMe().toString() + "\n" + nouveau; + HttpRequest request = HttpRequest.newBuilder() + .uri(URI.create(url)) + .POST(HttpRequest.BodyPublishers.ofString(requestBody)) + .build(); + + HttpResponse response = client.send(request, + HttpResponse.BodyHandlers.ofString()); + + if(response.body().equals("")){ + System.out.println("Reponse recue vide"); + } + else { + System.out.println(response.body()); + switch (response.body().split("\n")[0]) { + case "Reponse Pseudo": + reussi = Boolean.parseBoolean(response.body().split("\n")[1]); + System.out.println("Connexion acceptee"); + break; + default: + System.out.println("Erreur dans le format de la réponse reçue"); + } + } + } else{ System.out.println("Erreur de type"); } diff --git a/Implementation/chatapp/src/main/java/chatapp/Protocol/UDPEchange.java b/Implementation/chatapp/src/main/java/chatapp/Protocol/UDPEchange.java index d0c8aac..7c7ab81 100644 --- a/Implementation/chatapp/src/main/java/chatapp/Protocol/UDPEchange.java +++ b/Implementation/chatapp/src/main/java/chatapp/Protocol/UDPEchange.java @@ -24,7 +24,7 @@ import chatapp.Model.*; */ public class UDPEchange { - private static Boolean Connecte = false; + private static Boolean Connecte = true; // True si l'utilisateur peut se connecter avec ce nom d'utilisateur , False sinon private static Boolean EcouteEnCours = false; @@ -160,7 +160,7 @@ public class UDPEchange { * @param Message correspond au message à transmettre a l'utilisateur */ public static void envoiUnicast( InetAddress Adress , String Message ) throws IOException { - if (UDPEchange.getConnecte()){ + if (ChatApp.getInstance().isConnecte()){ DatagramSocket socket = new DatagramSocket(); byte[]buffer = Message.getBytes(); DatagramPacket packet = new DatagramPacket( buffer, buffer.length, Adress, 1234 ); @@ -249,7 +249,7 @@ class RunnerUDP implements Runnable { reponse += "false\n"; } else { - if(! u.getPseudo().equals("root")){ + if(!u.getPseudo().equals("root")){ System.out.println("Ajout d'un nouvel utilisateur dans la liste des Utilisateurs"); ( app.getActifUsers() ).addList(u); reponse += "true\n"; @@ -279,7 +279,7 @@ class RunnerUDP implements Runnable { Utilisateur u = Utilisateur.stringToUtilisateur(received.split("\n")[2]); app.getActifUsers().addList(u); app.getActifUsers().afficherListeUtilisateurs(); - UDPEchange.setConnecte(true); + } else { System.out.println("Pseudo deja pris");