Package chatapp.Controller

# 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

## 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
`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`

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