/* * To change this license header, choose License Headers in Project Properties. * To change this template file, choose Tools | Templates * and open the template in the editor. */ package edu.harvard.iq.dataverse; import java.util.ArrayList; import java.util.List; import javax.ejb.EJB; import javax.ejb.Stateless; import javax.inject.Named; import javax.persistence.EntityManager; import javax.persistence.PersistenceContext; import javax.persistence.Query; import javax.persistence.TypedQuery; /** * * @author skraffmiller */ @Stateless @Named public class DataverseLinkingServiceBean implements java.io.Serializable { @PersistenceContext(unitName = "VDCNet-ejbPU") private EntityManager em; @EJB DataverseServiceBean dataverseService; public List<Dataverse> findLinkedDataverses(Long linkingDataverseId) { List<Dataverse> retList = new ArrayList(); Query query = em.createQuery("select object(o) from DataverseLinkingDataverse as o where o.linkingDataverse.id =:linkingDataverseId order by o.id"); query.setParameter("linkingDataverseId", linkingDataverseId); for (Object o : query.getResultList()) { DataverseLinkingDataverse convterted = (DataverseLinkingDataverse) o; retList.add(convterted.getDataverse()); } return retList; } public List<Dataverse> findLinkingDataverses(Long dataverseId) { List<Dataverse> retList = new ArrayList(); Query query = em.createQuery("select object(o) from DataverseLinkingDataverse as o where o.dataverse.id =:dataverseId order by o.id"); query.setParameter("dataverseId", dataverseId); for (Object o : query.getResultList()) { DataverseLinkingDataverse convterted = (DataverseLinkingDataverse) o; retList.add(convterted.getLinkingDataverse()); } return retList; } public void save(DataverseLinkingDataverse dataverseLinkingDataverse) { if (dataverseLinkingDataverse.getId() == null) { em.persist(dataverseLinkingDataverse); } else { em.merge(dataverseLinkingDataverse); } } public boolean alreadyLinked(Dataverse definitionPoint, Dataverse dataverseToLinkTo) { TypedQuery<DataverseLinkingDataverse> typedQuery = em.createQuery("SELECT OBJECT(o) FROM DataverseLinkingDataverse AS o WHERE o.linkingDataverse.id = :dataverseId AND o.dataverse.id = :dataverseToLinkTo", DataverseLinkingDataverse.class); typedQuery.setParameter("dataverseId", definitionPoint.getId()); typedQuery.setParameter("dataverseToLinkTo", dataverseToLinkTo.getId()); return !typedQuery.getResultList().isEmpty(); } }