package com.megatim.apifdxweb.dao.impl.referentiel; import com.megatim.apifdxweb.dao.ifaces.referentiel.RoutageDAO; import com.megatim.fdxcommons.model.referentiel.Participant; import javax.ejb.Stateless; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; /** * * @author ASUS */ @Stateless public class RoutageDAOImpl implements RoutageDAO { @PersistenceContext(unitName = "fdxPU") protected EntityManager em; public RoutageDAOImpl() { } @Override public EntityManager getEntityManager() { return em; } @Override public Long countRoutageByReferentielTypeFichierForParticipantForReceive(String versionReferentiel, String codeTypeFichier, Participant participant) { return (Long) getEntityManager().createQuery("SELECT COALESCE(COUNT(r), 0) FROM Routage r " + "LEFT JOIN r.participantsReception p " + "LEFT JOIN r.noeudsReception n " + "LEFT JOIN r.groupeParticipantsReception gp LEFT JOIN gp.participants pa " + "LEFT JOIN r.groupeNoeudsReception gn LEFT JOIN gn.noeuds no " + "WHERE r.referentiel.version = :versionReferentiel AND r.typeFichier.code = :codeTypeFichier " + "AND (p = :participant OR pa = :participant OR n.participant = :participant OR no.participant = :participant)") .setParameter("versionReferentiel", versionReferentiel) .setParameter("codeTypeFichier", codeTypeFichier) .setParameter("participant", participant) .getSingleResult(); } @Override public Long countRoutageByReferentielTypeFichierForParticipantForSend(String versionReferentiel, String codeTypeFichier, Participant participant) { return (Long) getEntityManager().createQuery("SELECT COALESCE(COUNT(r), 0) FROM Routage r " + "LEFT JOIN r.participantsEnvoi p " + "LEFT JOIN r.noeudsEnvoi n " + "LEFT JOIN r.groupeParticipantsEnvoi gp LEFT JOIN gp.participants pa " + "LEFT JOIN r.groupeNoeudsEnvoi gn LEFT JOIN gn.noeuds no " + "WHERE r.referentiel.version = :versionReferentiel AND r.typeFichier.code = :codeTypeFichier " + "AND (p = :participant OR pa = :participant OR n.participant = :participant OR no.participant = :participant)") .setParameter("versionReferentiel", versionReferentiel) .setParameter("codeTypeFichier", codeTypeFichier) .setParameter("participant", participant) .getSingleResult(); } }