Correction : Un utilisateur ne peut pas communiquer plusieurs fois en même temps avec la même personne

This commit is contained in:
Auriane Lartigue 2021-01-30 12:31:41 +01:00
parent f56866329d
commit 7103a2b584
7 changed files with 62 additions and 34 deletions

View file

@ -1,5 +1,30 @@
chatapp/Model/Utilisateur.java
chatapp.Model.Utilisateur
chatapp/Launcher.java
chatapp.Launcher
chatapp/Model/MessageHorodate.java
chatapp.Model.MessageHorodate
chatapp/Model/DataBase.java
chatapp.Model.DataBase
chatapp/Model/ListUtilisateurs.java
chatapp.Model.ListUtilisateurs
chatapp/Protocol/SessionClavardage.java
chatapp.Protocol.SessionClavardage
chatapp/Protocol/HttpEchange.java
chatapp.Protocol.HttpEchange
chatapp/View/View_Menu.java
chatapp.View.View_Menu
chatapp/View/ChangementPseudo.java
chatapp.View.ChangementPseudo
chatapp/Protocol/RunnerEcouteUDP.java
chatapp.Protocol.RunnerEcouteUDP
chatapp/Protocol/UDPEchange.java
chatapp.Protocol.RunnerUDP
chatapp.Protocol.UDPEchange
chatapp/Main.java
chatapp.Main
chatapp/View/View_Utilisateurs.java
chatapp.View.View_Utilisateurs
chatapp/View/ConnexionScreen.java
chatapp.View.ConnexionScreen
chatapp/Protocol/RunnerEcouteTCP.java
@ -9,33 +34,8 @@ chatapp/View/FenetreSession.java
chatapp.View.FenetreSession$1
chatapp/Controller/ChatApp.java
chatapp.Controller.ChatApp
chatapp/Model/DataBase.java
chatapp.Model.DataBase
chatapp/View/ChangementPseudo.java
chatapp.View.ChangementPseudo
chatapp/Protocol/RunnerEcouteUDP.java
chatapp.Protocol.RunnerEcouteUDP
chatapp/Model/ListUtilisateurs.java
chatapp.Model.ListUtilisateurs
chatapp/Protocol/UDPEchange.java
chatapp.Protocol.RunnerUDP
chatapp.Protocol.UDPEchange
chatapp/Model/MessageHorodate.java
chatapp.Model.MessageHorodate
chatapp/Main.java
chatapp.Main
chatapp/View/Clavardage.java
chatapp.View.Clavardage
chatapp.View.Clavardage$1
chatapp/Protocol/SessionClavardage.java
chatapp.Protocol.SessionClavardage
chatapp/View/View_Utilisateurs.java
chatapp.View.View_Utilisateurs
chatapp/Model/Utilisateur.java
chatapp.Model.Utilisateur
chatapp/View/View_Menu.java
chatapp.View.View_Menu
chatapp/Protocol/HttpEchange.java
chatapp.Protocol.HttpEchange
chatapp/View/DemarrerSession.java
chatapp.View.DemarrerSession

View file

@ -6,10 +6,12 @@ import chatapp.Model.Utilisateur;
import chatapp.Protocol.*;
import javafx.application.Application;
import javafx.application.Platform;
import java.beans.PropertyChangeEvent;
import java.beans.PropertyChangeListener;
import java.io.IOException;
import java.net.InetAddress;
import java.util.ArrayList;
/**
* <p> Controller de l'application. C'est par cette méthode que chaque connexion et chaque session sont entamées.
@ -41,6 +43,7 @@ public class ChatApp implements PropertyChangeListener {
private RunnerEcouteUDP runnerEcouteUDP;
private boolean connecte;
//private DataBase db;
public ArrayList<String> ListeCommunication = new ArrayList<>();
/**
* <p> Getter : Connecte
@ -407,4 +410,22 @@ public class ChatApp implements PropertyChangeListener {
public void setExterne(boolean externe) {
isExterne = externe;
}
/**
* <p>
* Un utilisateur ne peut pas ouvrir plusieurs sessions de clavardage avec le même utilisateur.
* <br> Cette methode compare les communications en cours pour retourner une liste d'utilisateurs avec
* lesquels les communications sont possibles
* </p>
* @return Une liste d'utilisateurs avec lesquels il peut communiquer
*/
public ArrayList<Utilisateur> createListeCommunicationPossible(){
ArrayList<Utilisateur> communication = new ArrayList<>();
for ( Utilisateur element : this.actifUsers.getActifUsers()){
if ( ! this.ListeCommunication.contains(element.getId())){
communication.add(element);
}
}
return communication;
}
}

View file

@ -21,7 +21,7 @@ public class Main extends Application {
*/
@Override
public void start(Stage primaryStage) throws Exception {
Rectangle2D tailleEcran = Screen.getPrimary().getBounds();
//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);

View file

@ -1,5 +1,7 @@
package chatapp.Model;
import chatapp.Controller.ChatApp;
import java.io.IOException;
import java.net.InetAddress;
import java.util.ArrayList;
@ -28,6 +30,7 @@ public class ListUtilisateurs {
public synchronized void addList(Utilisateur u) {
if (! this.appartient(u)){
this.actifUsers.add(u);
//ListeCommunicationPossible.add(u);
}
}

View file

@ -122,6 +122,9 @@ public class SessionClavardage extends Thread {
if(this.app.isExterne()){
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());
MessageHorodate msgh = new MessageHorodate(getU2(),getApp().getMe(),isExterne,3);
try {
getOut().writeObject(msgh.toString());
@ -165,12 +168,14 @@ public class SessionClavardage extends Thread {
while(true) {
try {
plaintext = (String) getIn().readObject();
System.out.println("Message reçu");
msg = MessageHorodate.stringToMessageHorodate(plaintext);
System.out.println(msg.getMessage());
} catch (ClassNotFoundException e) {
e.printStackTrace();
} catch (IOException e) {
pcs.firePropertyChange("FinDeLaSession", false, true);
app.ListeCommunication.remove(u2.getId());
break;
}
if(msg.getType() == 2) {
@ -180,11 +185,13 @@ public class SessionClavardage extends Thread {
} catch (IOException e) {
break;
}
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());
Platform.runLater( () ->
new FenetreSession(this)
);

View file

@ -6,6 +6,7 @@ package chatapp.View;
import java.io.IOException;
import java.net.URL;
import java.util.ArrayList;
import java.util.ResourceBundle;
import chatapp.Controller.ChatApp;
@ -45,9 +46,7 @@ public class DemarrerSession {
* @param event L'utilisateur vient de selectionner un utilisateur
*/
@FXML
void demarrerSessionAvec(ActionEvent event) {
chatApp.demarrerSession(choixContact.getValue());
}
void demarrerSessionAvec(ActionEvent event) { chatApp.demarrerSession(choixContact.getValue()); }
/**
* <p> Handler permettant de retourner au menu principal sur pression du MenuButton</p>
@ -73,10 +72,9 @@ public class DemarrerSession {
@FXML // This method is called by the FXMLLoader when initialization is complete
void initialize() {
this.chatApp = ChatApp.getInstance();
ListUtilisateurs utils = chatApp.getActifUsers();
for(Utilisateur u : utils.getActifUsers()){
ArrayList<Utilisateur> Com = chatApp.createListeCommunicationPossible();
for(Utilisateur u : Com ){
choixContact.getItems().add(u.getPseudo());
}
}
}

View file

@ -33,7 +33,6 @@ public class View_Utilisateurs {
@FXML // This method is called by the FXMLLoader when initialization is complete
void initialize() {
ListUtilisateurs utilisateurs = ChatApp.getInstance().getActifUsers();
ListeUtilisateurs.setText("");
for(Utilisateur elem : utilisateurs.getActifUsers()) {
ListeUtilisateurs.appendText( " - " +elem.getPseudo() + '\n');