From 08a801f0778340fb7d078d63096f630bbb181269 Mon Sep 17 00:00:00 2001 From: Cavailles Kevin Date: Mon, 21 Dec 2020 17:01:13 +0100 Subject: [PATCH] communication static -> private --- POO/src/communication/CommunicationUDP.java | 89 ++++++++++++++++++++- POO/src/communication/UDPServer.java | 8 +- POO/src/main/Message.java | 13 --- POO/src/standard/ControleurStandard.java | 22 +++-- POO/src/standard/VueStandard.java | 16 +++- 5 files changed, 120 insertions(+), 28 deletions(-) delete mode 100644 POO/src/main/Message.java diff --git a/POO/src/communication/CommunicationUDP.java b/POO/src/communication/CommunicationUDP.java index d487845..3ea40a4 100644 --- a/POO/src/communication/CommunicationUDP.java +++ b/POO/src/communication/CommunicationUDP.java @@ -6,17 +6,21 @@ import java.net.UnknownHostException; import java.util.ArrayList; import java.util.Arrays; +import main.Observer; import main.Utilisateur; +import standard.VueStandard; import messages.*; -public class CommunicationUDP extends Communication { +public class CommunicationUDP extends Thread { // public enum Mode {PREMIERE_CONNEXION, CHANGEMENT_PSEUDO, DECONNEXION}; private UDPClient client; private int portServer; private ArrayList portOthers; + private static ArrayList users = new ArrayList(); + private Observer observer; public CommunicationUDP(int portClient, int portServer, int[] portsOther) throws IOException { this.portServer = portServer; @@ -24,7 +28,8 @@ public class CommunicationUDP extends Communication { new UDPServer(portServer, this).start(); this.client = new UDPClient(portClient); } - + + private ArrayList getArrayListFromArray(int ports[]) { ArrayList tmp = new ArrayList(); for (int port : ports) { @@ -34,6 +39,86 @@ public class CommunicationUDP extends Communication { return tmp; } + + public void setObserver (Observer obs) { + this.observer=obs; + } + + protected static boolean containsUserFromID(String id) { + for(Utilisateur u : users) { + if(u.getId().equals(id) ) { + return true; + } + } + return false; + } + + public static boolean containsUserFromPseudo(String pseudo) { + for(Utilisateur u : users) { + if(u.getPseudo().equals(pseudo) ) { + return true; + } + } + + return false; + } + + public static int getPortFromPseudo(String pseudo) { + for(int i=0; i < users.size() ; i++) { + + if(users.get(i).getPseudo().equals(pseudo) ) { + return users.get(i).getPort(); + } + } + return -1; + } + + private static int getIndexFromID(String id) { + for(int i=0; i < users.size() ; i++) { + if(users.get(i).getId().equals(id) ) { + return i; + } + } + return -1; + } + + private static int getIndexFromIP(InetAddress ip) { + for(int i=0; i < users.size() ; i++) { + if(users.get(i).getIp().equals(ip)) { + return i; + } + } + return -1; + } + + + protected synchronized void addUser(String idClient, String pseudoClient, InetAddress ipClient, int port) throws IOException { + users.add(new Utilisateur(idClient, pseudoClient, ipClient, port)); + observer.update(this, users); + + } + + protected synchronized void changePseudoUser(String idClient, String pseudoClient, InetAddress ipClient, int port) { + int index = getIndexFromID(idClient); + users.get(index).setPseudo(pseudoClient); + observer.update(this, users); + } + + + protected synchronized void removeUser(String idClient, String pseudoClient,InetAddress ipClient, int port) { + int index = getIndexFromIP(ipClient); + if( index != -1) { + users.remove(index); + } + observer.update(this, users); + } + + public void removeAll(){ + int oSize = users.size(); + for(int i=0; i users = (ArrayList) arg; + ArrayList pseudos = new ArrayList(); + for (Utilisateur u : users) { + pseudos.add(u.getPseudo()); + } + this.vue.setActiveUsersList(pseudos); + } + } diff --git a/POO/src/standard/VueStandard.java b/POO/src/standard/VueStandard.java index 6289fba..54de864 100644 --- a/POO/src/standard/VueStandard.java +++ b/POO/src/standard/VueStandard.java @@ -44,7 +44,7 @@ public class VueStandard extends Vue { private JButton seDeconnecter; private ControleurStandard c; private HashMap sessions; - public static DefaultListModel userList = new DefaultListModel(); + private DefaultListModel userList = new DefaultListModel(); public VueStandard(String title, int portClientUDP, int portServerUDP, int[] portsOther, int portServerTCP) throws IOException { @@ -114,7 +114,7 @@ public class VueStandard extends Vue { }); //--------Panel milieu liste utilisateurs--------// - this.activeUsersList = new JList(VueStandard.userList); + this.activeUsersList = new JList(this.userList); this.activeUsersList.setSelectionMode(ListSelectionModel.SINGLE_SELECTION); this.activeUsersList.setLayoutOrientation(JList.VERTICAL); this.activeUsersList.addListSelectionListener(this.c); @@ -192,10 +192,20 @@ public class VueStandard extends Vue { this.addWindowListener(c); } - public JList getActiveUsersList(){ + protected JList getActiveUsersList(){ return this.activeUsersList; } + protected void setActiveUsersList(ArrayList users) { + this.removeAllUsers(); + this.userList.addAll(users); + } + + + protected void removeAllUsers() { + this.userList.removeAllElements(); + } + protected JButton getButtonModifierPseudo() { return this.modifierPseudo;