Class ChatApp
- All Implemented Interfaces:
java.beans.PropertyChangeListener
,java.util.EventListener
public class ChatApp
extends java.lang.Object
implements java.beans.PropertyChangeListener
Controller de l'application. C'est par cette méthode que chaque connexion et chaque session sont entamées.
Les différents attributs sont:
- actifsUsers: qui est la liste des utilisateurs actifs actuellement et connus par l'application
- me: qui est l'instance de la classe Utilisateur représentant l'utilisateur se connectant via cette instance de chatapp
- main: l'application de l'interface graphique qui s'occupe d'instancier chatapp
- runnerEcouteTCP: instance de runnerEcouteTCP, Thread permettant de recevoir des demandes de clavardage
- runnerEcouteUDP: instance de runnerEcouteUDP; Thread permettant de communiquer en UDP pour recevoir les demandes de connexion, deconnexion, changements de pseudo et leurs réponses associées
- connecte: booleen indiquant si l'on est connecté sur le reseau ou non
- db: instance permettant de se connecter à la base de donnees centralisée
-
Field Summary
Fields Modifier and Type Field Description java.util.ArrayList<java.lang.String>
listeCommunication
-
Constructor Summary
Constructors Constructor Description ChatApp(java.lang.String pseudo, java.lang.Integer port, javafx.application.Application main)
Constructeur de l'application de chat -
Method Summary
Modifier and Type Method Description void
activerEcouteTCP()
Lance un thread pour écouter les requêtes TCP
Informe le pcs que chatapp écoute les notifications qu'il envoievoid
activerEcouteUDP()
Lance le thread pour réceptionner les requetes UDPboolean
connexion(java.lang.String pseudo)
Méthode permettant d'appeler la fonction de connexion adequate selon que l'on est en externe ou en internejava.lang.Boolean
connexionInterne(java.lang.String pseudo)
Méthode appelée lors de la connexion de l'utilisateur en INTERNE,
Va prevenir les autres utlisateurs du réseau de l'arrivée de l'utilisateur sur celui-cijava.util.ArrayList<Utilisateur>
createListeCommunicationPossible()
Un utilisateur ne peut pas ouvrir plusieurs sessions de clavardage avec le même utilisateur.void
deconnexion()
Méthode appelée lors de la déconnexion de l'utilisateur.void
deconnexionInterne()
Methode appelee lors de la deconnexion en INTERNE de l'utilisateur.void
demarrerSession(java.lang.String pseudo)
Démarre une session de clavardage avec l'utilisateur dont le pseudo est entré en parametreListUtilisateurs
getActifUsers()
Getter : actifUsers (Liste des utilisateurs actifs)static ChatApp
getInstance()
Methode permettant de récupérer l'instance de chatapp qui a ete créée au préalablestatic ChatApp
getInstance(java.lang.String pseudo, java.lang.Integer port, javafx.application.Application main)
Methode permettant de créer qu'une seule instance de chatappjavafx.application.Application
getMain()
Getter : Main Permet de récuperer stage de l'interface graphique qui a crée l'instanceUtilisateur
getMe()
Getter : Chatappboolean
isConnecte()
Getter : Connecte
Permet de savoir si l'on est connectéboolean
isExterne()
Getter : Externe
Permet de savoir si on est en externe ou en interneboolean
modifierPseudo(java.lang.String nouveau)
Methode appelée pour modifier le pseudo et fait appel a la fonction adequate selon que l'on est en interne ou en externejava.lang.Boolean
modifierPseudoInterne(java.lang.String nouveau)
Modification du pseudo de l'utilisateur en INTERNE
Envoie en broadcast ses informations utilisateurs et son nouveau pseudovoid
propertyChange(java.beans.PropertyChangeEvent evt)
Handler des différents évenements que chatapp écoutevoid
setExterne(boolean externe)
Setter : Externe
Permet de définir si on est un utilisateur externe ou non
-
Field Details
-
listeCommunication
public java.util.ArrayList<java.lang.String> listeCommunication
-
-
Constructor Details
-
ChatApp
public ChatApp(java.lang.String pseudo, java.lang.Integer port, javafx.application.Application main)Constructeur de l'application de chat
- Parameters:
pseudo
- Pseudo de l'utilisateurport
- Port de communicationmain
- L'Application main
-
-
Method Details
-
isConnecte
public boolean isConnecte()Getter : Connecte
Permet de savoir si l'on est connecté- Returns:
- TRUE si connecté FALSE sinon
-
getInstance
public static ChatApp getInstance(java.lang.String pseudo, java.lang.Integer port, javafx.application.Application main)Methode permettant de créer qu'une seule instance de chatapp
- Parameters:
pseudo
- Le pseudonyme que l'on souhaite donner à l'utilisateurport
- Le port auquel on souhaite réceptionner les requêtees UDPmain
- Le stage de l'interface graphique qui crée l'instance- Returns:
- Une instance de chatapp
-
getInstance
Methode permettant de récupérer l'instance de chatapp qui a ete créée au préalable
- Returns:
- L'instance de chatapp
-
modifierPseudo
public boolean modifierPseudo(java.lang.String nouveau) throws java.io.IOExceptionMethode appelée pour modifier le pseudo et fait appel a la fonction adequate selon que l'on est en interne ou en externe
- Parameters:
nouveau
- Nouveau pseudo avec lequel on souhaite se renommer- Returns:
- TRUE si la modification du pseudo a réussi, FALSE sinon
- Throws:
java.io.IOException
-
modifierPseudoInterne
public java.lang.Boolean modifierPseudoInterne(java.lang.String nouveau) throws java.io.IOExceptionModification du pseudo de l'utilisateur en INTERNE
Envoie en broadcast ses informations utilisateurs et son nouveau pseudo- Parameters:
nouveau
- Le Nouveau pseudo- Returns:
- False si modiferPseudo a échoué, True sinon
- Throws:
java.io.IOException
-
connexion
public boolean connexion(java.lang.String pseudo) throws java.io.IOExceptionMéthode permettant d'appeler la fonction de connexion adequate selon que l'on est en externe ou en interne
- Parameters:
pseudo
- Le pseudo avec lequel l'on souhaite se connecter- Returns:
- True si la connexion a ete autorisée, false sinon
- Throws:
java.io.IOException
-
connexionInterne
public java.lang.Boolean connexionInterne(java.lang.String pseudo) throws java.io.IOExceptionMéthode appelée lors de la connexion de l'utilisateur en INTERNE,
Va prevenir les autres utlisateurs du réseau de l'arrivée de l'utilisateur sur celui-ci- Parameters:
pseudo
- Le pseudonyme avec lequel l'utilisateur souhaite se connecter- Returns:
- False si Connexion a échoué, True sinon
- Throws:
java.io.IOException
-
activerEcouteTCP
public void activerEcouteTCP()Lance un thread pour écouter les requêtes TCP
Informe le pcs que chatapp écoute les notifications qu'il envoie -
demarrerSession
public void demarrerSession(java.lang.String pseudo)Démarre une session de clavardage avec l'utilisateur dont le pseudo est entré en parametre
- Parameters:
pseudo
- Le pseudo de l'utilisateur avec lequel on souhaite communiquer
-
activerEcouteUDP
public void activerEcouteUDP()Lance le thread pour réceptionner les requetes UDP
-
deconnexion
public void deconnexion() throws java.io.IOExceptionMéthode appelée lors de la déconnexion de l'utilisateur.
La methode va appeler la fonction adequate selon que l'on est en interne ou en externe- Throws:
java.io.IOException
-
deconnexionInterne
public void deconnexionInterne() throws java.io.IOExceptionMethode appelee lors de la deconnexion en INTERNE de l'utilisateur.
Il va prevenir les utilisateurs du reseau de son depart.- Throws:
java.io.IOException
-
getMe
Getter : Chatapp- Returns:
- Utilisateur associée a ChatApp
-
getActifUsers
Getter : actifUsers (Liste des utilisateurs actifs)- Returns:
- Liste des utilisateurs actifs associée a ChatApp
-
propertyChange
public void propertyChange(java.beans.PropertyChangeEvent evt)Handler des différents évenements que chatapp écoute
- Specified by:
propertyChange
in interfacejava.beans.PropertyChangeListener
- Parameters:
evt
- L'évenement qui a ete indiqué par le pcs
-
getMain
public javafx.application.Application getMain()Getter : Main Permet de récuperer stage de l'interface graphique qui a crée l'instance
- Returns:
- Le stage de l'interface graphique qui a crée l'instance
-
isExterne
public boolean isExterne()Getter : Externe
Permet de savoir si on est en externe ou en interne- Returns:
- TRUE si Externe FALSE sinon
-
setExterne
public void setExterne(boolean externe)Setter : Externe
Permet de définir si on est un utilisateur externe ou non- Parameters:
externe
- TRUE si Externe FALSE sinon
-
createListeCommunicationPossible
Un utilisateur ne peut pas ouvrir plusieurs sessions de clavardage avec le même utilisateur.
Cette methode compare les communications en cours pour retourner une liste d'utilisateurs avec lesquels les communications sont possibles- Returns:
- Une liste d'utilisateurs avec lesquels il peut communiquer
-