/*
|
* 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<String> 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<UserDto> obtenirListeUtilisateursConnectes() {
|
List<UserDto> liste = new ArrayList<UserDto>();
|
String idSession = null;
|
Iterator<String> 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());
|
}
|
|
}
|