package com.dac2014equipe3.sujet2.model.dao; import com.dac2014equipe3.sujet2.model.entity.Member; import com.dac2014equipe3.sujet2.model.entity.MembercreatesProject; import com.dac2014equipe3.sujet2.model.entity.MembercreatesProjectPK; import com.dac2014equipe3.sujet2.model.entity.Project; import javax.persistence.EntityManager; import javax.persistence.NoResultException; import javax.persistence.NonUniqueResultException; import javax.persistence.Query; import java.util.List; /** * Created by chambon on 20/12/14. */ public class MembercreatesProjectDAO implements IDAO<MembercreatesProject> { private static MembercreatesProjectDAO instance; private static final String JPQL_SELECT_BY_CREATEDID_PROJECT = " SELECT p FROM Project p , MembercreatesProject m " + " WHERE "+ //"( p.projectIsSuppressed = :projectIsSuppressed ) AND" + " (m.membercreatesProjectPK.creatorId = :creatorId AND m.membercreatesProjectPK.projectId = p.projectId ) " ; private static final String PARAM_PROJECTSUPPRESSED = "projectIsSuppressed"; private static final String PARAM_PROJECTCLOSED = "projectIsClosed"; private static final String PARAM_CREATEDID = "creatorId"; public static synchronized MembercreatesProjectDAO getInstance() { if (instance == null) { instance = new MembercreatesProjectDAO(); } return instance; } @Override public void persist(MembercreatesProject entity, EntityManager em) { em.persist(entity); } @Override public MembercreatesProject find(Object idA, EntityManager em) { MembercreatesProjectPK id = ((MembercreatesProject)idA).getMembercreatesProjectPK(); Query query = em.createNamedQuery("MembercreatesProject.findByMembercreatesProjectPK") .setParameter("creatorId", id.getCreatorId()) .setParameter("projectId", id.getProjectId()); return (MembercreatesProject) query.getSingleResult(); } @Override public void update(MembercreatesProject entity, EntityManager em) { em.merge(entity); } @Override public void delete(Object id, EntityManager em) { MembercreatesProject mcp = find(id, em); em.remove(mcp); } @Override public List<MembercreatesProject> getList(EntityManager em) { Query query = em.createNamedQuery("MembercreatesProject.findAll"); List<MembercreatesProject> listMcP = query.getResultList(); return listMcP; } public List<MembercreatesProject> getListForCreator(Object idCreator, EntityManager em) { Integer id = (Integer) idCreator; Query query = em.createNamedQuery("MembercreatesProject.findByCreatorId") .setParameter("creatorId", id); List<MembercreatesProject> listMcP = query.getResultList(); return listMcP; } /** * recuperation des projets d'un utilisateur * @param memberId * @param em * @return */ public List<Project> getListCreatorProject(Integer memberId, EntityManager em) { List<Project> project = null; Query q = em.createQuery(JPQL_SELECT_BY_CREATEDID_PROJECT); q.setParameter(PARAM_CREATEDID, (Integer)memberId); //q.setParameter(PARAM_PROJECTSUPPRESSED, false); try { project = (List<Project>) q.getResultList(); } catch (NonUniqueResultException e) { } catch (NoResultException e) { } return project; } }