package com.megatim.fdxconsultation.dao.impl.referentiel; import com.megatim.fdxcommons.model.enumeration.StatutReferentiel; import com.megatim.fdxcommons.model.referentiel.Referentiel; import com.megatim.fdxconsultation.dao.ifaces.referentiel.ReferentielDAO; import java.util.List; import java.util.Optional; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; /** * * @author ASUS */ @Stateless public class ReferentielDAOImpl implements ReferentielDAO { @PersistenceContext(unitName = "fdxConsultationPersistenceUnit") protected EntityManager em; public ReferentielDAOImpl() { } @Override public EntityManager getEntityManager() { return em; } @Override public Class getManagedEntityClass() { return (Referentiel.class); } @Override public Referentiel getById(String id) { Query query = em.createQuery("SELECT r from Referentiel r" + " LEFT JOIN FETCH r.extensionFichiers LEFT JOIN FETCH r.applicationSources " + " LEFT JOIN FETCH r.routages LEFT JOIN FETCH r.participants" + " LEFT JOIN FETCH r.validateurFichierConfigurations LEFT JOIN FETCH r.noeuds" + " LEFT JOIN FETCH r.groupeParticipants LEFT JOIN FETCH r.groupeNoeuds" + " LEFT JOIN FETCH r.pays" + " WHERE r.version = :version"); query.setParameter("version", id); Optional optionalReferentiel = query.getResultList().stream().findFirst(); return optionalReferentiel.isPresent() ? optionalReferentiel.get() : null; } @Override public Referentiel getReferentielEnCours() { Query query = em.createQuery("SELECT r FROM Referentiel r where r.statutReferentiel = :param"); query.setParameter("param", StatutReferentiel.EN_COURS); Optional optionalRef = ((List) query.getResultList()).stream().findFirst(); return optionalRef.isPresent() ? optionalRef.get() : null; } @Override public List findByStatutReferentiel(StatutReferentiel statutReferentiel) { Query query = em.createQuery("SELECT r FROM Referentiel r where r.statutReferentiel = :param"); query.setParameter("param", statutReferentiel); return ((List) query.getResultList()); } @Override public void archiverReferentielEncours() { Query query = em.createQuery("UPDATE Referentiel r set statutReferentiel = :nouveauStatut where r.statutReferentiel = :param"); query.setParameter("nouveauStatut", StatutReferentiel.ARCHIVE); query.setParameter("param", StatutReferentiel.EN_COURS); int nb = query.executeUpdate(); System.out.println("Nb lines updated = " + nb); } }