/*
|
* Click nbfs://nbhost/SystemFileSystem/Templates/Licenses/license-default.txt to change this license
|
* Click nbfs://nbhost/SystemFileSystem/Templates/Classes/Class.java to edit this template
|
*/
|
package com.megatim.fdxconsultation.model.message.systeme;
|
|
import com.megatim.fdxconsultation.model.administration.User;
|
import java.io.IOException;
|
import java.util.ArrayList;
|
import java.util.HashMap;
|
import java.util.Iterator;
|
import java.util.List;
|
import javax.websocket.EncodeException;
|
import javax.websocket.Session;
|
|
/**
|
*
|
* @author Lenovo P53
|
*/
|
public class UserSesionApplication {
|
|
private static UserSesionApplication userSesion;
|
private static HashMap<String, UserWebSocket> users;
|
|
public static UserSesionApplication getInstance() {
|
if (userSesion == null) {
|
userSesion = new UserSesionApplication();
|
users = new HashMap<String, UserWebSocket>();
|
}
|
return userSesion;
|
}
|
|
public synchronized static HashMap<String, UserWebSocket> getUsers() {
|
return users;
|
}
|
|
public static void setUsers(HashMap<String, UserWebSocket> users) {
|
UserSesionApplication.users = users;
|
}
|
|
public void addSession(User utilidateur, Session session, String type) {
|
this.users.put(session.getId(), new UserWebSocket(session, utilidateur, type));
|
}
|
|
public void removeSession(Session session) {
|
this.users.remove(session.getId());
|
}
|
|
public void send(Session session, ApplicationData message) throws IOException, EncodeException {
|
session.getBasicRemote().sendObject(message);
|
}
|
|
public static boolean siUtilisateurConnecte(User user) {
|
boolean etat = false;
|
UserWebSocket userSession = null;
|
Iterator<String> iterator = UserSesionApplication.getInstance().getUsers().keySet().iterator();
|
while(iterator.hasNext()){
|
userSession = UserSesionApplication.getInstance().getUsers().get(iterator.next());
|
if((userSession != null && userSession.getUtilisateur() != null)
|
&& user != null
|
&& userSession.getUtilisateur().getId() == user.getId()){
|
etat = true;
|
break;
|
}
|
}
|
return etat;
|
}
|
|
public void removeAllSessionsForUser(User user) {
|
|
//Variables
|
List<String> sessionsId = new ArrayList();
|
|
//On parcourt la liste des sessions
|
UserSesionApplication.getInstance().getUsers().forEach((sessionId, userSession) -> {
|
|
//Si l'utilisateur non null
|
if((userSession != null && userSession.getUtilisateur() != null)
|
&& user != null
|
&& userSession.getUtilisateur().getId() == user.getId()){
|
|
//On recuoère les sessions de l'utilisateur
|
sessionsId.add(sessionId);
|
|
}
|
});
|
|
//On retire les sessions de l'utilisateur
|
for(String sessionId : sessionsId){
|
|
//On retire la session
|
this.users.remove(sessionId);
|
|
System.out.println("=============================removeAllSessionsForUser=====================================>");
|
|
}
|
|
}
|
|
}
|