diff --git a/Projet_POO/src/clavardage/test.java b/Projet_POO/src/clavardage/test.java index b0ca1ce..6c267c9 100644 --- a/Projet_POO/src/clavardage/test.java +++ b/Projet_POO/src/clavardage/test.java @@ -51,8 +51,8 @@ public class test { public static void main(String[] args) { GestionnaireListeUtilisateur glu = GestionnaireListeUtilisateur.instance(); ArrayList list = new ArrayList(); - list.add(new TypeListeUtilisateur("10", "User1", "localhost", "online", true)); - list.add(new TypeListeUtilisateur("11", "User2", "localhost", "online", true)); + list.add(new TypeListeUtilisateur("10", "User1", "localhost", "online")); + list.add(new TypeListeUtilisateur("11", "User2", "localhost", "online")); glu.setListeUtilisateur(list); GestionnaireNom gn = GestionnaireNom.instance(); gn.setId("11"); diff --git a/Projet_POO/src/liste/TraitementCmdListe.java b/Projet_POO/src/liste/TraitementCmdListe.java index b8be538..439fa72 100644 --- a/Projet_POO/src/liste/TraitementCmdListe.java +++ b/Projet_POO/src/liste/TraitementCmdListe.java @@ -8,7 +8,7 @@ import ui.ListUI; public class TraitementCmdListe implements Runnable{ - private String[] cmd; //ordre$$$id$$$nom$$$ip$$$dedans + private String[] cmd; //ordre$$$id$$$nom$$$ip$$$statut private Semaphore semaphore; //Constructeur @@ -27,11 +27,11 @@ public class TraitementCmdListe implements Runnable{ public void run() { try { //On décompose la cmd - String ordre = cmd[0]; + String ordre = cmd[0]; // add / delete / listRequest / statut String id = cmd[1]; String nom = cmd[2]; String ip = cmd[3]; - String dedans = cmd[4]; + String statut = cmd[4]; if (ordre.equals("listRequest")) { for (int i = 2000; i<2010; i++) envoyerNom2(i); // à changer, debug //TODO @@ -47,7 +47,7 @@ public class TraitementCmdListe implements Runnable{ if (ordre.equals("add") && !nom.equals("null")) { - ajouteUtilisateur(id, nom, ip, dedans); //TODO + ajouteUtilisateur(id, nom, ip, statut); //TODO //debug @@ -59,6 +59,10 @@ public class TraitementCmdListe implements Runnable{ } + if (ordre.equals("statut")) { + changeStatut(id, statut); + } + //System.out.println("libéré"); semaphore.release(); @@ -91,7 +95,7 @@ public class TraitementCmdListe implements Runnable{ //Ajoute les utilisateurs à la listeUtilisateur - private void ajouteUtilisateur(String id, String nom, String ip, String dedans) { + private void ajouteUtilisateur(String id, String nom, String ip, String statut) { boolean inListe = false; ArrayList listeUtilisateur = GestionnaireListeUtilisateur.instance().getListeUtilisateur(); @@ -108,13 +112,7 @@ public class TraitementCmdListe implements Runnable{ //s'il n'est pas dans la liste on la rajoute if (!inListe) { - if (dedans.equals("true")) { - listeUtilisateur.add(new TypeListeUtilisateur(id, nom, ip, null, true)); - } - else { - listeUtilisateur.add(new TypeListeUtilisateur(id, nom, ip, null, false)); - } - + listeUtilisateur.add(new TypeListeUtilisateur(id, nom, ip, statut)); } @@ -138,4 +136,19 @@ public class TraitementCmdListe implements Runnable{ //mise à jour des graphismes ListUI.update(); } + + + // Met à jour le Statut d'un utilisateur + private void changeStatut(String id, String statut) { + for (TypeListeUtilisateur user : GestionnaireListeUtilisateur.instance().getListeUtilisateur()) { + if (user.id.equals(id)) { + user.statut = statut; + break; + } + } + + //mise à jour des graphismes + ListUI.update(); + + } } diff --git a/Projet_POO/src/liste/TypeListeUtilisateur.java b/Projet_POO/src/liste/TypeListeUtilisateur.java index e3f4847..61a8dc4 100644 --- a/Projet_POO/src/liste/TypeListeUtilisateur.java +++ b/Projet_POO/src/liste/TypeListeUtilisateur.java @@ -6,14 +6,12 @@ public class TypeListeUtilisateur { public String id; public String ip; public String statut; - public boolean dedans; - public TypeListeUtilisateur(String id, String nom, String ip, String statut, boolean dedans) { + public TypeListeUtilisateur(String id, String nom, String ip, String statut) { this.id = id; this.nom = nom; this.ip = ip; this.statut = statut; - this.dedans = dedans; } } diff --git a/Projet_POO/src/liste/UdpBroadcastServer.java b/Projet_POO/src/liste/UdpBroadcastServer.java index c245b4e..57ffbca 100644 --- a/Projet_POO/src/liste/UdpBroadcastServer.java +++ b/Projet_POO/src/liste/UdpBroadcastServer.java @@ -30,7 +30,7 @@ public class UdpBroadcastServer implements Runnable{ serverSocket.receive(datagramPacket); String receivedMessage = new String(datagramPacket.getData(), 0, datagramPacket.getLength()); - System.out.println(receivedMessage); + System.out.println(receivedMessage); //debug Thread t = new Thread( new TraitementCmdListe(receivedMessage, semaphore) ); t.start(); diff --git a/Projet_POO/src/ui/ListUI.java b/Projet_POO/src/ui/ListUI.java index 82160d8..95ca9ec 100644 --- a/Projet_POO/src/ui/ListUI.java +++ b/Projet_POO/src/ui/ListUI.java @@ -236,9 +236,12 @@ public class ListUI extends JFrame implements Runnable{ public void connect() { try{ if (list.getSelectedValue() != null) { - String nom = list.getSelectedValue().nom; - gestionnaireClavardage gc = gestionnaireClavardage.instance(); - gc.createSession(nom); + if(!list.getSelectedValue().statut.equals("offline")) { + String nom = list.getSelectedValue().nom; + gestionnaireClavardage gc = gestionnaireClavardage.instance(); + gc.createSession(nom); + } + } }catch (Exception e) { System.out.println("Erreur : connect ListUI"); @@ -287,7 +290,7 @@ public class ListUI extends JFrame implements Runnable{ GestionnaireNom.instance().setStatut(item); // on envoie l'info à la servlet try { - Post.sendPOST("nom$$$" + GestionnaireNom.instance().getId() + "$$$" + GestionnaireNom.instance().getNom()+ "$$$" + Post.sendPOST("statut$$$" + GestionnaireNom.instance().getId() + "$$$" + GestionnaireNom.instance().getNom()+ "$$$" + GestionnaireNom.instance().getIp() + "$$$" + GestionnaireNom.instance().getDansReseau() + "$$$" + GestionnaireNom.instance().getStatut() ); } catch (IOException ex) { diff --git a/Projet_POO/src/ui/NomUI.java b/Projet_POO/src/ui/NomUI.java index e54fc61..ee30ef2 100644 --- a/Projet_POO/src/ui/NomUI.java +++ b/Projet_POO/src/ui/NomUI.java @@ -135,12 +135,23 @@ public class NomUI extends JFrame implements Runnable{ if (GestionnaireNom.instance().verifierDisponibiliteNom(nom)) { //Celui-ci ne peut pas être "vide" if (!nom.isBlank()) { + + boolean nouvelUtilisateur = (GestionnaireNom.instance().getNom() == null); + GestionnaireNom.instance().nommer2(nom); //enlever le 2 à la fin //TODO // on envoie l'info à la servlet try { - Post.sendPOST("nom$$$" + GestionnaireNom.instance().getId() + "$$$" + GestionnaireNom.instance().getNom()+ "$$$" - + GestionnaireNom.instance().getIp() + "$$$" + GestionnaireNom.instance().getDansReseau() + "$$$" - + GestionnaireNom.instance().getStatut() ); + if (nouvelUtilisateur) { + Post.sendPOST("new$$$" + GestionnaireNom.instance().getId() + "$$$" + GestionnaireNom.instance().getNom()+ "$$$" + + GestionnaireNom.instance().getIp() + "$$$" + GestionnaireNom.instance().getDansReseau() + "$$$" + + GestionnaireNom.instance().getStatut() ); // online par defaut ? + } else { + Post.sendPOST("name$$$" + GestionnaireNom.instance().getId() + "$$$" + GestionnaireNom.instance().getNom()+ "$$$" + + GestionnaireNom.instance().getIp() + "$$$" + GestionnaireNom.instance().getDansReseau() + "$$$" + + GestionnaireNom.instance().getStatut() ); + } + + } catch (IOException e) { e.printStackTrace(); }