/* Channel.java */ import java.util.*; /** * Classe structurant un Channel (Nom, Topic, liste des Users) */ class Channel { private Vector listeUsers; private TreeMap arbreUsers; private String leNomChannel; private String leTopic = ""; private Mode leMode; /** * @param telNomChannel Nom du channel a créer */ public Channel(String telNomChannel) { leNomChannel = telNomChannel; listeUsers = new Vector(); arbreUsers = new TreeMap(); leMode = new Mode(); } /** * Permet d'ajouter un leMode au channel * @param telMode Mode à ajouter */ public void setMode(char telMode) { leMode.set(telMode); } /** * Permet de supprimer un leMode * @param telMode Mode à supprimer */ public void unsetMode(char telMode) { leMode.unset(telMode); } /** * Permet de récupérer le mode du channel * @return Retourne le mode du channel */ public Mode getMode() { return leMode; } /** * Permet de définir le leTopic du channel * @param telTopic Nouveau leTopic pour le channel */ public void setTopic(String telTopic) { leTopic = telTopic; } /** * Permet de récupérer le leTopic du channel * @return Retourne le leTopic du channel */ public String getTopic() { return leTopic; } /** * Permet de trier les users */ public void trier() { Collections.sort(listeUsers); } /** * Permet d'ajouter un User au channel * @param telUser User à ajouter */ public void ajouterUser(User telUser) { listeUsers.add(telUser); trier(); arbreUsers.put(telUser.getNick(), telUser); } /** * Permet de supprimer un user * @param User à supprimer */ public void supprimerUser(User telUser) { arbreUsers.remove(telUser.getNick()); listeUsers.remove(telUser); } /** * Permet de supprimer un user, connaissant son nick * @param Nick du user à supprimer */ public void supprimerUser(String telNick) { listeUsers.remove(arbreUsers.get(telNick)); arbreUsers.remove(telNick); } /** * Permet de récupérer le nom du channel * @return Retourne le nom du channel */ public String getNomChannel() { return leNomChannel; } /** * Permet de récupérer un User à partir de son nick * @param Nick du user * @return Retourne le User correspondant */ public User getUser(String telNick) { return arbreUsers.get(telNick); } /** * Permet de vérifier qu'un user est présent sur le channel * @param Nick du user * @return Retourne true si le user est présent sur le channel */ public Boolean contientUser(String telNick) { return arbreUsers.containsKey(telNick); } /** * Permt de récupérer la liste de tous les users du channel * @return Retourne la liste de tous les users du channel */ public Vector getListeUsers() { return listeUsers; } /** * Permet de modifier le nick d'un user tout en gardant l'arbre des users * du channel cohérent (changement de la clef) * @param telAncienNick Ancien nick du user * @param telNouveauNick Nouveau nick du user */ public void modifierNick(String telAncienNick, String telNouveauNick) { User tmpUser = getUser(telAncienNick); if(tmpUser != null) { tmpUser.setNick(telNouveauNick); arbreUsers.remove(telAncienNick); arbreUsers.put(telNouveauNick, tmpUser); } } }