Kenmegne
7 days ago 23a46b4be35277e06ec89f48730eeb694e686be8
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
/*
 * 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=====================================>");
            
        }
        
    }
 
}