Class ChatApp

java.lang.Object
chatapp.Controller.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 envoie
    void activerEcouteUDP()
    Lance le thread pour réceptionner les requetes UDP
    boolean connexion​(java.lang.String pseudo)
    Méthode permettant d'appeler la fonction de connexion adequate selon que l'on est en externe ou en interne
    java.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-ci
    java.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 parametre
    ListUtilisateurs 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éalable
    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
    javafx.application.Application getMain()
    Getter : Main Permet de récuperer stage de l'interface graphique qui a crée l'instance
    Utilisateur getMe()
    Getter : Chatapp
    boolean 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 interne
    boolean 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 externe
    java.lang.Boolean modifierPseudoInterne​(java.lang.String nouveau)
    Modification du pseudo de l'utilisateur en INTERNE
    Envoie en broadcast ses informations utilisateurs et son nouveau pseudo
    void propertyChange​(java.beans.PropertyChangeEvent evt)
    Handler des différents évenements que chatapp écoute
    void setExterne​(boolean externe)
    Setter : Externe
    Permet de définir si on est un utilisateur externe ou non

    Methods inherited from class java.lang.Object

    clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
  • Field Details

  • 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'utilisateur
      port - Port de communication
      main - 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'utilisateur
      port - Le port auquel on souhaite réceptionner les requêtees UDP
      main - Le stage de l'interface graphique qui crée l'instance
      Returns:
      Une instance de chatapp
    • getInstance

      public static 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.IOException

      Methode 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.IOException

      Modification 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.IOException

      Mé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.IOException

      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-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.IOException

      Mé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.IOException

      Methode 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

      public Utilisateur getMe()
      Getter : Chatapp
      Returns:
      Utilisateur associée a ChatApp
    • getActifUsers

      public ListUtilisateurs 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 interface java.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

      public java.util.ArrayList<Utilisateur> 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