diff --git a/POO_Server/src/communication/CommunicationUDP.java b/POO_Server/src/communication/CommunicationUDP.java
index 99cacc6..9d6a942 100644
--- a/POO_Server/src/communication/CommunicationUDP.java
+++ b/POO_Server/src/communication/CommunicationUDP.java
@@ -1,6 +1,7 @@
package communication;
import java.io.IOException;
+import java.io.PrintWriter;
import java.net.InetAddress;
import java.net.UnknownHostException;
import java.util.ArrayList;
@@ -103,6 +104,12 @@ public class CommunicationUDP extends Thread {
return -1;
}
+ public void printActiveUsersUDP(PrintWriter out) {
+ for (Utilisateur uIn : users) {
+ out.println("
" + uIn.getPseudo() + ", | ");
+ }
+ }
+
protected synchronized void addUser(String idClient, String pseudoClient, InetAddress ipClient, int port) throws IOException {
users.add(new Utilisateur(idClient, pseudoClient, ipClient, port));
diff --git a/POO_Server/src/main/ServletPresence.java b/POO_Server/src/main/ServletPresence.java
index 700efd8..2301cd0 100644
--- a/POO_Server/src/main/ServletPresence.java
+++ b/POO_Server/src/main/ServletPresence.java
@@ -22,8 +22,7 @@ import messages.Message.TypeMessage;
@WebServlet("/ServletPresence")
//Faire un publish (get) séparé en utilisant les cookies pour stocker les modifications : pose problème au niveau de la synchro des pseudos (à dire rapport)
-// BUG 1 : problème des conflits de pseudo
-//Transmission de la liste des locaux direct du serveur aux externes ? à voir (direct dans le doPost du coup)
+
public class ServletPresence extends HttpServlet implements Observer {
private static final long serialVersionUID = 1L;
@@ -65,6 +64,75 @@ public class ServletPresence extends HttpServlet implements Observer {
return false;
}
+ //Fonctions d'affichage
+
+ //Affiche la liste des utilisateurs actifs
+ private void printActiveUsers(PrintWriter out) {
+ out.println( "" );
+ out.println("Utilisateurs connectés : | ");
+ for (Utilisateur uExt : remoteUsers) {
+ out.println(" " + uExt.getPseudo() + ", | ");
+ }
+ comUDP.printActiveUsersUDP(out);
+ out.println( "
" );
+ }
+
+ //Affiche la liste des utilisateurs actifs, seule sur la page
+ private void printActiveUsersOnly(PrintWriter out) {
+ out.println( "" );
+ out.println( "");
+ out.println( "Serveur de présence" );
+ out.println( "" );
+ out.println( "" );
+ printActiveUsers(out);
+ out.println( "" );
+ out.println( "" );
+ }
+
+ //Affiche la page d'accueil
+ private void printHomePage(PrintWriter out) {
+ out.println( "" );
+ out.println( "");
+ out.println( "Serveur de présence - Accueil" );
+ out.println( "" );
+ out.println( "" );
+ out.println( "Bienvenue sur le service de connexion à distance
" );
+ out.println( "Vous pouvez taper votre requête dans la barre de navigation
" );
+ out.println( "Requêtes (à ajouter derrière l'URL) :
" );
+ out.println( "Se connecter : ?type=POST&id=[votre id]&pseudo=[pseudo voulu]&port=[port utilisé]
" );
+ out.println( "Se déconnecter : ?type=DELETE&id=[votre id]
" );
+ out.println( "Changer de pseudo : ?type=PUT&id=[votre id]&pseudo=[pseudo voulu]
" );
+ out.println( "" );
+ out.println( "" );
+ }
+
+ //Affiche un message d'erreur en cas de pseudo déjà utilisé
+ private void printErrorUsedPseudo(PrintWriter out){
+ out.println( "" );
+ out.println( "");
+ out.println( "Erreur pseudo déjà utilisé" );
+ out.println( "" );
+ out.println( "" );
+ out.println( "Erreur : Ce pseudo est déjà utilisé
" );
+ out.println( "Veuillez choisir un autre pseudo
" );
+ out.println( "" );
+ printActiveUsers(out);
+ out.println( "" );
+ }
+
+ //Affiche un message d'erreur en cas de requête invalide
+ private void printErrorInvalidRequest(PrintWriter out) {
+ out.println( "" );
+ out.println( "");
+ out.println( "Erreur requête invalide" );
+ out.println( "" );
+ out.println( "" );
+ out.println( "Erreur : nous n'avons pas compris votre requête
" );
+ out.println( "Veuillez vérifier votre syntaxe et réessayer
" );
+ out.println( "" );
+ out.println( "" );
+ }
+
//Informe de la modification de la liste tous les utilisateurs internes et externes
private void snotify(MessageSysteme message, Utilisateur user) {
@@ -93,20 +161,12 @@ public class ServletPresence extends HttpServlet implements Observer {
int port = Integer.parseInt(request.getParameter("port"));
InetAddress ip = InetAddress.getByName(request.getRemoteAddr());
+ response.setContentType( "text/html" );
+ PrintWriter out = response.getWriter();
+
//Si le pseudo est déjà pris : génère du html pour en informer l'utilisateur
if (comUDP.containsUserFromPseudo(pseudo)||remoteContainsUserFromPseudo(pseudo)) {
- response.setContentType( "text/html" );
- PrintWriter out = response.getWriter();
- out.println( "" );
- out.println( "");
- out.println( "Erreur pseudo déjà utilisé" );
- out.println( "" );
- out.println( "" );
- out.println( "Erreur : Ce pseudo est déjà utilisé
" );
- out.println( "Veuillez choisir un autre pseudo
" );
- out.println( "" );
- out.println( "" );
- out.close();
+ printErrorUsedPseudo(out);
}
//Sinon
@@ -119,7 +179,9 @@ public class ServletPresence extends HttpServlet implements Observer {
// TODO Auto-generated catch block
e.printStackTrace();
}
+ printActiveUsersOnly(out);
}
+ out.close();
}
protected void doDelete(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
@@ -133,6 +195,10 @@ public class ServletPresence extends HttpServlet implements Observer {
// TODO Auto-generated catch block
e.printStackTrace();
}
+ response.setContentType( "text/html" );
+ PrintWriter out = response.getWriter();
+ printHomePage(out);
+ out.close();
}
//Permet de dire si on a changé de pseudo (pour les utilisateurs externes)
@@ -141,20 +207,12 @@ public class ServletPresence extends HttpServlet implements Observer {
String pseudo = request.getParameter("pseudo");
int index = getIndexByID(id);
+ response.setContentType( "text/html" );
+ PrintWriter out = response.getWriter();
+
//Si le pseudo est déjà pris : génère du html pour en informer l'utilisateur
if (comUDP.containsUserFromPseudo(pseudo)||remoteContainsUserFromPseudo(pseudo)) {
- response.setContentType( "text/html" );
- PrintWriter out = response.getWriter();
- out.println( "" );
- out.println( "");
- out.println( "Erreur pseudo déjà utilisé" );
- out.println( "" );
- out.println( "" );
- out.println( "Erreur : Ce pseudo est déjà utilisé
" );
- out.println( "Veuillez choisir un autre pseudo
" );
- out.println( "" );
- out.println( "" );
- out.close();
+ printErrorUsedPseudo(out);
}
else {
@@ -166,7 +224,9 @@ public class ServletPresence extends HttpServlet implements Observer {
// TODO Auto-generated catch block
e.printStackTrace();
}
+ printActiveUsersOnly(out);
}
+ out.close();
}
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException{
@@ -191,15 +251,7 @@ public class ServletPresence extends HttpServlet implements Observer {
default :
response.setContentType( "text/html" );
PrintWriter out = response.getWriter();
- out.println( "" );
- out.println( "");
- out.println( "Erreur requête invalide" );
- out.println( "" );
- out.println( "" );
- out.println( "Erreur : nous n'avons pas compris votre requête
" );
- out.println( "Veuillez vérifier votre syntaxe et réessayer
" );
- out.println( "" );
- out.println( "" );
+ printErrorInvalidRequest(out);
out.close();
}
}
@@ -207,19 +259,7 @@ public class ServletPresence extends HttpServlet implements Observer {
catch (java.lang.NullPointerException e) {
response.setContentType( "text/html" );
PrintWriter out = response.getWriter();
- out.println( "" );
- out.println( "");
- out.println( "Serveur de présence - Accueil" );
- out.println( "" );
- out.println( "" );
- out.println( "Bienvenue sur le service de connexion à distance
" );
- out.println( "Vous pouvez taper votre requête dans la barre de navigation
" );
- out.println( "Requêtes (à ajouter derrière l'URL) :
" );
- out.println( "Se connecter : ?type=POST&id=[votre id]&pseudo=[pseudo voulu]&port=[port utilisé]
" );
- out.println( "Se déconnecter : ?type=DELETE&id=[votre id]
" );
- out.println( "Changer de pseudo : ?type=PUT&id=[votre id]&pseudo=[pseudo voulu]
" );
- out.println( "" );
- out.println( "" );
+ printHomePage(out);
out.close();
}