/* * 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.service.impl.sockets; /** * * @author Lenovo P53 */ import com.bekosoftware.genericdaolayer.dao.tools.RestrictionsContainer; import com.megatim.fdxcommons.model.enumeration.EtatOperation; import com.megatim.fdxcommons.model.enumeration.TypeOperation; import com.megatim.fdxconsultation.core.ifaces.administration.RoleManager; import com.megatim.fdxconsultation.core.ifaces.administration.UserManager; import com.megatim.fdxconsultation.model.administration.User; import com.megatim.fdxconsultation.model.dto.AdministrationNumberDto; import com.megatim.fdxconsultation.model.dto.InformationGeneraleDto; import com.megatim.fdxconsultation.model.dto.UserDto; import com.megatim.fdxconsultation.model.message.systeme.ApplicationData; import com.megatim.fdxconsultation.model.message.systeme.UserSesionApplication; import com.megatim.fdxconsultation.tools.context.AppCommonContext; import java.util.ArrayList; import java.util.Iterator; import java.util.List; import javax.annotation.PostConstruct; import javax.ejb.LocalBean; import javax.ejb.Schedule; import javax.ejb.Singleton; import javax.ejb.Startup; import javax.inject.Inject; import javax.websocket.Session; @Singleton @Startup @LocalBean public class AdministrationCronBean { @Inject private UserManager userManager; @Inject private RoleManager roleManager; @PostConstruct public void init() { } // @Schedule(second = "*/1", minute = "*", hour = "*", persistent = false) public void refreshDatas() { //Variables ApplicationData message = new ApplicationData(); InformationGeneraleDto informationGeneraleDto = null; AdministrationNumberDto administrationNumberDto = null; Iterator iterateur = null; String idSession = null; Session session = null; User utilisateur = null; User utilisateurBD = null; try { //On crée une instance de l'iterateur iterateur = UserSesionApplication.getInstance().getUsers().keySet().iterator(); //On construit l'objet AdministrationNumberDto administrationNumberDto = new AdministrationNumberDto(); administrationNumberDto.setUtilisateursEnAttenteValidation(countUsers(EtatOperation.ATTENTE_VALIDATION)); administrationNumberDto.setRolesEnAttenteValidation(countRoles(EtatOperation.ATTENTE_VALIDATION)); //On construit l'objet InformationGeneraleDto informationGeneraleDto = new InformationGeneraleDto(); //On parcourt la liste des sessions while (iterateur.hasNext()) { //On recupère l'id de la session idSession = iterateur.next(); //On filtre par type if (UserSesionApplication.getInstance().getUsers() != null && UserSesionApplication.getInstance().getUsers().get(idSession) != null && (UserSesionApplication.getInstance().getUsers().get(idSession).getType() != null && UserSesionApplication.getInstance().getUsers().get(idSession).getType().equalsIgnoreCase(AppCommonContext.CODE_WEB_SOCKET_PATH_APPLICATION_MESSAGE))) { //On recupère la session session = UserSesionApplication.getInstance().getUsers().get(idSession).getSession(); //On recupère l'utilisateur associé à cette session utilisateur = UserSesionApplication.getInstance().getUsers().get(idSession).getUtilisateur(); utilisateurBD = userManager.findById(utilisateur.getId()); //Si non null if (utilisateurBD != null) { //On set la clé de la session informationGeneraleDto.setSessionKeyUser(utilisateurBD.getCleSession()); } //On hydrate le message message.setInformationGeneraleDto(informationGeneraleDto); message.setAdministrationNumberDto(administrationNumberDto); message.setUtlisateursConnectes(obtenirListeUtilisateursConnectes()); //On envoie le message UserSesionApplication.getInstance().send(session, message); } } } catch (Exception ex) { //On affiche les erreurs ex.printStackTrace(); } } /** * Methode permettant de recuperer la liste des utilisateurs connectés * * @return */ private List obtenirListeUtilisateursConnectes() { List liste = new ArrayList(); String idSession = null; Iterator iterateur = null; UserDto userDto = null; iterateur = UserSesionApplication.getInstance().getUsers().keySet().iterator(); while (iterateur.hasNext()) { idSession = iterateur.next(); userDto = new UserDto(); userDto.setUserName(UserSesionApplication.getInstance().getUsers().get(idSession).getUtilisateur().getUserName()); liste.add(userDto); } return liste; } private long countUsers(EtatOperation etatOperation) { RestrictionsContainer requeteur = RestrictionsContainer.newInstance(); requeteur.addEq("typeOperation", TypeOperation.AJOUTER); requeteur.addEq("etatOperation", etatOperation); return userManager.count(requeteur.getPredicats()); } private long countRoles(EtatOperation etatOperation) { RestrictionsContainer requeteur = RestrictionsContainer.newInstance(); requeteur.addEq("typeOperation", TypeOperation.AJOUTER); requeteur.addEq("etatOperation", etatOperation); return roleManager.count(requeteur.getPredicats()); } }