package banco.DAO;
import java.util.Date;
import java.util.List;
import javax.persistence.Query;
import banco.connection.EclipseLinkConnection;
import banco.modelo.Duplicata;
import banco.utils.DuplicataUtils;
public class DuplicataDAO extends EclipseLinkConnection implements DuplicataUtils{
@Override
public void saveOrUpdate(Duplicata modelo) {
if(modelo.getId() != null)
merge(modelo);
else
persist(modelo);
}
@Override
public void delete(Duplicata modelo) {
remove(modelo);
}
@Override
public Duplicata find(Long id) {
Query q = getEntityManager().createQuery("select d from Duplicata d where d.id = :id");
q.setParameter("id", id);
return (Duplicata)q.getSingleResult();
}
@Override
public Duplicata findUltimaDuplicata() {
Query q = getEntityManager().createQuery("select d from Duplicata d where d.id = (" +
"select max(dup.id) from Duplicata dup)");
return (Duplicata) q.getSingleResult();
}
@Override
public Duplicata findByNumero(String numero) {
Query q = getEntityManager().createQuery("Select d from Duplicata d where d.numero like :numero and d.pago is false");
q.setParameter("numero", numero);
return (Duplicata) q.getSingleResult();
}
@SuppressWarnings("unchecked")
@Override
public List<Duplicata> findAll() {
Query q = getEntityManager().createQuery("select d from Duplicata d");
return q.getResultList();
}
@SuppressWarnings("unchecked")
@Override
public List<Duplicata> findAllByPagamento(boolean pago) {
Query q = getEntityManager().createQuery("select d from Duplicata d where d.pago = :pago");
q.setParameter("pago", pago);
return q.getResultList();
}
@SuppressWarnings("unchecked")
@Override
public List<Duplicata> findAllByPeriodoAndPagamento(Date dtInicial, Date dtFinal, Boolean pago) {
Query q = getEntityManager().createQuery("select d from Duplicata d where (d.dataVencimento between :dtInicial and :dtFinal) " +
"and (d.pago = :pago or :pago is null)");
q.setParameter("dtInicial", dtInicial)
.setParameter("dtFinal", dtFinal)
.setParameter("pago", pago);
return q.getResultList();
}
}