/* * To change this template, choose Tools | Templates * and open the template in the editor. */ package br.uff.ic.oceano.ostra.dao.impl; import br.uff.ic.oceano.core.dao.controle.JPAUtil; import br.uff.ic.oceano.core.dao.controle.anotations.MetodoRecuperaLista; import br.uff.ic.oceano.core.dao.generics.JPADaoGenerico; import br.uff.ic.oceano.core.exception.MetodoInterceptadoException; import br.uff.ic.oceano.core.model.Metric; import br.uff.ic.oceano.core.model.Revision; import br.uff.ic.oceano.util.NumberUtil; import br.uff.ic.oceano.ostra.dao.VersionedItemMetricValueDao; import br.uff.ic.oceano.ostra.model.Item; import br.uff.ic.oceano.ostra.model.VersionedItemMetricValue; import java.util.List; import javax.persistence.Query; /** * * @author DanCastellani */ public class VersionedItemMetricValueDaoImpl extends JPADaoGenerico<VersionedItemMetricValue, Long> implements VersionedItemMetricValueDao { public VersionedItemMetricValueDaoImpl() { super(VersionedItemMetricValue.class); } public long countByRevisionAndMetric(Revision revision, Metric metric) { final String strQuery = "select count( distinct vimv.id ) " + "from ostra_VersionedItemMetricValue vimv " + "join ostra_VersionedItem vi on vi.id = vimv.idVersionedItem " + "join revision r on r.id = vi.idRevision " + "where r.idproject = ? and r.number = ? and vimv.idMetric = ?"; Query query = JPAUtil.getEntityManager().createNativeQuery(strQuery); query.setParameter(1, revision.getProject().getId()); query.setParameter(2, revision.getNumber()); query.setParameter(3, metric.getId()); return NumberUtil.longValueOf(query.getSingleResult()); } @MetodoRecuperaLista public List<VersionedItemMetricValue> getByRevisionAndMetric(Revision revision, Metric metric) { throw new MetodoInterceptadoException(); } @MetodoRecuperaLista public List<VersionedItemMetricValue> getByRevision(Revision revision) { throw new MetodoInterceptadoException(); } // @MetodoRecuperaPrimeiro public VersionedItemMetricValue getNewestByItemAndMetricUntilRevision(Item item, Metric metric, Long revisionNumber) { // throw new MetodoInterceptadoException(); final String strQuery = "select vimv " + " from VersionedItemMetricValue vimv " + " where vimv.versionedItem.item = ? " + " and vimv.metric = ? " + " and vimv.versionedItem.revision.number <= ? " + " order by vimv.versionedItem.revision.number desc"; Query query = JPAUtil.getEntityManager().createQuery(strQuery); query.setParameter(1, item); query.setParameter(2, metric); query.setParameter(3, revisionNumber); List resultList = query.getResultList(); return (VersionedItemMetricValue) (resultList == null || resultList.isEmpty() ? null : resultList.get(0)); } }