package com.megatim.fdxconsultation.dao.impl.administration; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import com.bekosoftware.genericdaolayer.dao.impl.AbstractGenericDAO; import com.bekosoftware.genericdaolayer.dao.tools.RestrictionsContainer; import com.megatim.commons.tools.CommonsTools; import com.megatim.fdxcommons.model.enumeration.TypeOperation; import com.megatim.fdxconsultation.dao.ifaces.administration.UserDAO; import com.megatim.fdxconsultation.model.administration.Role; import com.megatim.fdxconsultation.model.administration.User; import java.util.ArrayList; import java.util.List; import java.util.Optional; import javax.enterprise.context.Dependent; @Dependent public class UserDAOImpl extends AbstractGenericDAO implements UserDAO { @PersistenceContext(unitName = "fdxConsultationPersistenceUnit") protected EntityManager em; public UserDAOImpl() { } @Override public EntityManager getEntityManager() { return em; } @Override public Class getManagedEntityClass() { return (User.class); } @Override public User getById(Long id) { Optional optional = em.createQuery("SELECT u from User u" + " LEFT JOIN FETCH u.typeFichiers " + " WHERE u.id = :id") .setParameter("id", id) .getResultList() .stream() .findFirst();; return optional.isPresent() ? optional.get() : null; } @Override public User getCurrentUser() { RestrictionsContainer requeteur = RestrictionsContainer.newInstance(); requeteur.addEq("typeOperation", TypeOperation.AJOUTER); return filter(requeteur.getPredicats(), null, null, 0, 1).stream().findAny().orElse(null); } @Override public User recuperUtilisateur(String username, String motDePasse) { //Variables List resutlats = null; User user = null; boolean isCorrect = false; RestrictionsContainer requeteur = RestrictionsContainer.newInstance(); //On construit la requete requeteur.addEq("userName", username); requeteur.addEq("typeOperation", TypeOperation.AJOUTER); //On execute la requte resutlats = filter(requeteur.getPredicats(), null, null, 0, 1); //Si liste non vide if (resutlats != null && !resutlats.isEmpty()) { try { //On recupere le user user = resutlats.get(0); //On verifie si le mot de passe est correct isCorrect = CommonsTools.validerMotDePasse(motDePasse, user.getPwd()); //Si incorrect if (!isCorrect) { //Utilisateur non trouvé user = null; } } catch (Exception ex) { //On affiche l'erreur ex.printStackTrace(); } } return user; } @Override public User recuperUtilisateur(String username) { Optional optional = em.createQuery("SELECT u from User u" + " LEFT JOIN FETCH u.typeFichiers " + " LEFT JOIN FETCH u.participants " + " WHERE u.userName = :username AND u.typeOperation = :typeOperation") .setParameter("username", username) .setParameter("typeOperation", TypeOperation.AJOUTER) .getResultList() .stream() .findFirst(); return optional.isPresent() ? optional.get() : null; } @Override public List obtenirListeUtilisateursRole(Role role) { //variables List utilisateurs = null; RestrictionsContainer requeteur = RestrictionsContainer.newInstance(); //On construit la requete requeteur.addEq("role", role); requeteur.addEq("typeOperation", TypeOperation.AJOUTER); //On execute la requte utilisateurs = filter(requeteur.getPredicats(), null, null, 0, -1); //Si liste null if (utilisateurs == null) { //On crée une instance vide utilisateurs = new ArrayList(); } return utilisateurs; } }