package edu.harvard.iq.dataverse;
import edu.harvard.iq.dataverse.search.IndexServiceBean;
import java.util.List;
import java.util.logging.Logger;
import javax.ejb.EJB;
import javax.ejb.Stateless;
import javax.inject.Named;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;
/**
*
* @author skraffmiller
*/
@Stateless
@Named
public class TemplateServiceBean {
private static final Logger logger = Logger.getLogger(DatasetServiceBean.class.getCanonicalName());
@EJB
IndexServiceBean indexService;
@PersistenceContext(unitName = "VDCNet-ejbPU")
private EntityManager em;
public Template find(Object pk) {
return em.find(Template.class, pk);
}
public Template save(Template template) {
/*
if (template.getId() == null) {
em.persist(template);
return template;
} else {
return em.merge(template);
} */
return em.merge(template);
}
public Template findByDeafultTemplateOwnerId(Long ownerId) {
Query query = em.createQuery("select object(o.defaultTemplate) from Dataverse as o where o.owner.id =:ownerId order by o.name");
query.setParameter("ownerId", ownerId);
return (Template) query.getSingleResult();
}
public List<Dataverse> findDataversesByDefaultTemplateId(Long defaultTemplateId) {
Query query = em.createQuery("select object(o) from Dataverse as o where o.defaultTemplate.id =:defaultTemplateId order by o.name");
query.setParameter("defaultTemplateId", defaultTemplateId);
return query.getResultList();
}
public void incrementUsageCount(Long templateId) {
Long usageCount = (Long) em.createNativeQuery(
"select usageCount from Template "
+ "WHERE id=" + templateId
).getSingleResult();
usageCount++;
em.createNativeQuery(
"update Template SET usagecount = " + usageCount + " "
+ "WHERE id=" + templateId
).executeUpdate();
}
}