From a6b25652b7409e0c29861243e9a6890f310ab601 Mon Sep 17 00:00:00 2001
From: Nabzzz
Date: Wed, 20 Jan 2021 15:49:53 +0100
Subject: [PATCH] Correction erreur connexion
(ChatApp.getInstance().isConnecte() dans envoiUnicast() )
---
.../compileJava/source-classes-mapping.txt | 26 ++++-----
.../main/java/chatapp/Controller/ChatApp.java | 56 +++++++++++++++++--
.../java/chatapp/Protocol/HttpEchange.java | 55 ++++++++++++++++++
.../java/chatapp/Protocol/UDPEchange.java | 8 +--
4 files changed, 124 insertions(+), 21 deletions(-)
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");