Nettoyage du code

Bu işleme şunda yer alıyor:
Auriane Lartigue 2021-01-30 13:49:03 +01:00
ebeveyn 7103a2b584
işleme 4f47290542
18 değiştirilmiş dosya ile 318 ekleme ve 276 silme

Dosyayı Görüntüle

@ -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<String> ListeCommunication = new ArrayList<>();
/* Variable stockant les communications grâce aux IDs des utilisateurs */
public ArrayList<String> listeCommunication = new ArrayList<>();
/**
* <p> 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<Utilisateur> createListeCommunicationPossible(){
ArrayList<Utilisateur> communication = new ArrayList<>();
for ( Utilisateur element : this.actifUsers.getActifUsers()){
if ( ! this.ListeCommunication.contains(element.getId())){
if ( ! this.listeCommunication.contains(element.getId())){
communication.add(element);
}
}

Dosyayı Görüntüle

@ -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.
* <br> 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);

Dosyayı Görüntüle

@ -26,12 +26,21 @@ import java.sql.*;
* <br> - 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 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 ;
}

Dosyayı Görüntüle

@ -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<Utilisateur> 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);

Dosyayı Görüntüle

@ -16,10 +16,19 @@ import java.util.Date;
* </p>
*/
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
* </p>
*/
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 ;
}
/**

Dosyayı Görüntüle

@ -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

Dosyayı Görüntüle

@ -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)

Dosyayı Görüntüle

@ -15,10 +15,13 @@ import java.util.ArrayList;
* </p>
*/
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<SessionClavardage> ListeSessions = new ArrayList<>();
/* on conserve les sessions actives dans un attribut liste */
private ArrayList<SessionClavardage> 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));
}
/**

Dosyayı Görüntüle

@ -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é.
* <br> La méthode 'ecouteUDP' est appelé.
*/
@Override
public void run() {

Dosyayı Görüntüle

@ -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;
/**
* <p>
* Classe représentant une session de clavardage.
* <br> 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.
* <br> Elle possède en attribut:
* <br> - link: la socket associée à la session de clavardage
* <br> - link : la socket associée à la session de clavardage
* <br> - app : L'instance de chatapp
* <br> - u2: l'utilisateur avec lequel on communique
* <br> - out: le flux de donnees sortant
* <br> - in: le flux de donnees entrant
@ -31,14 +29,27 @@ import javafx.application.Platform;
* </p>
*/
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<MessageHorodate> 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<MessageHorodate> derniersMsg;
/**
* <p> Ce constructeur crée une session de clavardage quand on recoit une requete</p>
@ -54,8 +65,7 @@ public class SessionClavardage extends Thread {
}catch(Exception e) {
e.getStackTrace();
}
this.derniersMsg = new ArrayList<MessageHorodate>();
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<MessageHorodate>();
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 {
* <p> Methode lancee par le thread, permet de receptionner les messages horodates recus et d'agir en conséquence selon le type de message recu</p>
*/
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;
}
}

Dosyayı Görüntüle

@ -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 ;
}
/**<p>
* Getter : Ip
* <br>Permet de recuperer l'adresse de l'hote sur le reseau au format IPv4.
@ -94,6 +91,7 @@ public class UDPEchange {
}
return null;
}
/**
* <p>
* 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 {
* </p>
* @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
* </p>
* @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);
}
}
}

Dosyayı Görüntüle

@ -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());
}
}

Dosyayı Görüntüle

@ -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
/**
* <p>Handler gerant l'envoi du message contenu dans le TextField AEnvoyer et sur pression du bouton EnvoyerButton</p>

Dosyayı Görüntüle

@ -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
}
/**

Dosyayı Görüntüle

@ -39,6 +39,8 @@ public class DemarrerSession {
@FXML // fx:id="MenuButton"
private Button MenuButton; // Value injected by FXMLLoader
/* Instance de chatApp */
private ChatApp chatApp;
/**

Dosyayı Görüntüle

@ -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;
/**
* <p>
* Classe permettant d'ouvrir une nouvelle fenetre afin de clavarder avec un utilisateur.
* </p>
*/
public class FenetreSession extends Stage {
SessionClavardage session;
/**
* <p> Permet l'ouverture de la fenetre associee a la session de clavardage</p>
* @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<WindowEvent>() {
public void handle(WindowEvent we) {
session.arretSession();
}
});
this.setOnCloseRequest(we -> session.arretSession());
} catch (Exception e) {
e.printStackTrace();
}

Dosyayı Görüntüle

@ -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;
/**
* <p>
* 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) {

Dosyayı Görüntüle

@ -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);
}
/**