br.edu.ifrs.restinga.sgru.persistencia.RelatoriosDAO.java Source code

Java tutorial

Introduction

Here is the source code for br.edu.ifrs.restinga.sgru.persistencia.RelatoriosDAO.java

Source

/*
 * 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 br.edu.ifrs.restinga.sgru.persistencia;

import br.edu.ifrs.restinga.sgru.excessao.RecargaNaoEncontradaException;
import br.edu.ifrs.restinga.sgru.excessao.RelatorioException;
import br.edu.ifrs.restinga.sgru.modelo.Recarga;
import br.edu.ifrs.restinga.sgru.modelo.VendaAlmoco;
import java.util.Calendar;
import java.util.List;
import org.hibernate.Session;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

/**
 *
 * @author 10070187
 */
public class RelatoriosDAO {
    private final Session sessao;

    public RelatoriosDAO() {
        sessao = HibernateUtil.getSessionFactory().getCurrentSession();
    }

    /**
     * Lista as compras realizadas com carto em um determinado perodo
     * @param dataInicial A data inicial do perodo desejado
     * @param dataFinal A data final do perodo desejado
     * @return Uma lista de objetos VendaAlmoco
     * @throws br.edu.ifrs.restinga.sgru.excessao.RelatorioException Caso no sejam encontrados dados para o relatrio
     */
    public List<VendaAlmoco> gerarRelatorioComprasCartao(Calendar dataInicial, Calendar dataFinal)
            throws RelatorioException {

        List<VendaAlmoco> lstVendaAlmoco = sessao.createCriteria(VendaAlmoco.class)
                .add(Restrictions.isNotNull("cartao"))
                .add(Restrictions.between("dataVenda", dataInicial, dataFinal)).addOrder(Order.asc("dataVenda"))
                .list();

        if (lstVendaAlmoco.isEmpty()) {
            throw new RelatorioException("No foram encontradas compras no perodo informado");
        }
        return lstVendaAlmoco;
    }

    /**
     * Lista as compras realizadas com carto por um determinado tipo de cliente em um determinado perodo
     * @param dataInicial A data inicial do perodo desejado
     * @param dataFinal A data final do perodo desejado
     * @param codTipoCliente O cdigo do tipo de cliente pesquisado (Cliente.ALUNO e Cliente.PROFESSOR)
     * @return Uma lista de objetos VendaAlmoco
     * @throws br.edu.ifrs.restinga.sgru.excessao.RelatorioException Caso no sejam encontrados dados para o relatrio
     */
    public List<VendaAlmoco> gerarRelatorioComprasCartao(Calendar dataInicial, Calendar dataFinal,
            String codTipoCliente) throws RelatorioException {

        List<VendaAlmoco> lstVendaAlmoco = sessao.createCriteria(VendaAlmoco.class, "venda")
                .add(Restrictions.isNotNull("venda.cartao"))
                .add(Restrictions.between("venda.dataVenda", dataInicial, dataFinal))
                .createAlias("cartao", "cartao").createAlias("cartao.cliente", "cliente")
                .createAlias("cliente.tipoCliente", "tipocliente")
                .add(Restrictions.eq("tipocliente.codigo", codTipoCliente)).addOrder(Order.asc("venda.dataVenda"))
                .list();

        if (lstVendaAlmoco.isEmpty()) {
            throw new RelatorioException("No foram encontradas compras no perodo informado");
        }
        return lstVendaAlmoco;
    }

    /**
     * Lista as compras realizadas com carto por um determinado cliente em um determinado perodo
     * @param dataInicial A data inicial do perodo desejado
     * @param dataFinal A data final do perodo desejado     
     * @param idCliente O id do cliente a ser pesquisado    
     * @return Uma lista de objetos VendaAlmoco
     * @throws br.edu.ifrs.restinga.sgru.excessao.RelatorioException Caso no sejam encontrados dados para o relatrio
     */
    public List<VendaAlmoco> gerarRelatorioComprasCartao(Calendar dataInicial, Calendar dataFinal, int idCliente)
            throws RelatorioException {

        List<VendaAlmoco> lstVendaAlmoco = sessao.createCriteria(VendaAlmoco.class, "venda")
                .add(Restrictions.isNotNull("venda.cartao"))
                .add(Restrictions.between("venda.dataVenda", dataInicial, dataFinal))
                .createAlias("cartao", "cartao").createAlias("cartao.cliente", "cliente")
                .add(Restrictions.eq("cliente.id", idCliente)).addOrder(Order.asc("venda.dataVenda")).list();

        if (lstVendaAlmoco.isEmpty()) {
            throw new RelatorioException("No foram encontradas compras no perodo informado");
        }
        return lstVendaAlmoco;
    }

    /**
     * Lista as compras realizadas com ticket em um determinado perodo
     * @param dataInicial A data inicial do perodo desejado
     * @param dataFinal A data final do perodo desejado
     * @return Uma lista de objetos VendaAlmoco
     * @throws br.edu.ifrs.restinga.sgru.excessao.RelatorioException Caso no sejam encontrados dados para o relatrio
     */
    public List<VendaAlmoco> gerarRelatorioComprasTicket(Calendar dataInicial, Calendar dataFinal)
            throws RelatorioException {

        List<VendaAlmoco> lstVendaAlmoco = sessao.createCriteria(VendaAlmoco.class)
                .add(Restrictions.isNotNull("ticket"))
                .add(Restrictions.between("dataVenda", dataInicial, dataFinal)).addOrder(Order.asc("dataVenda"))
                .list();

        if (lstVendaAlmoco.isEmpty()) {
            throw new RelatorioException("No foram encontradas compras no perodo informado");
        }
        return lstVendaAlmoco;
    }

    /**
     * Lista as recargas realizadas em um determinado perodo
     * @param dataInicial A data inicial do perodo desejado
     * @param dataFinal A data final do perodo desejado
     * @return Uma lista de objetos Recarga
     * @throws RecargaNaoEncontradaException Caso no sejam encontradas recargas
     */
    public List<Recarga> gerarRelatorioRecargas(Calendar dataInicial, Calendar dataFinal)
            throws RecargaNaoEncontradaException {
        List<Recarga> lstRecargas = sessao.createCriteria(Recarga.class)
                .add(Restrictions.between("dataCredito", dataInicial, dataFinal)).addOrder(Order.asc("dataCredito"))
                .list();

        if (lstRecargas.isEmpty()) {
            throw new RecargaNaoEncontradaException("No foram encontradas recargas para o perodo informado");
        }
        return lstRecargas;
    }

    /**
     * Lista as recargas realizadas em um determinado perodo
     * @param dataInicial A data inicial do perodo desejado
     * @param dataFinal A data final do perodo desejado
     * @param codTipoCliente O cdigo do tipo de cliente a ser pesquisado
     * @return Uma lista de objetos Recarga
     * @throws RecargaNaoEncontradaException Caso no sejam encontradas recargas
     */
    public List<Recarga> gerarRelatorioRecargas(Calendar dataInicial, Calendar dataFinal, String codTipoCliente)
            throws RecargaNaoEncontradaException {
        List<Recarga> lstRecargas = sessao.createCriteria(Recarga.class)
                .add(Restrictions.between("dataCredito", dataInicial, dataFinal)).createAlias("cartao", "cartao")
                .createAlias("cartao.cliente", "cliente").createAlias("cliente.tipoCliente", "tipocliente")
                .add(Restrictions.eq("tipocliente.codigo", codTipoCliente)).addOrder(Order.asc("dataCredito"))
                .list();

        if (lstRecargas.isEmpty()) {
            throw new RecargaNaoEncontradaException("No foram encontradas recargas para o perodo informado");
        }
        return lstRecargas;
    }

    /**
     * Lista as recargas realizadas em um determinado perodo
     * @param dataInicial A data inicial do perodo desejado
     * @param dataFinal A data final do perodo desejado
     * @param idCliente O cdigo do cliente a ser pesquisado
     * @return Uma lista de objetos Recarga
     * @throws RecargaNaoEncontradaException Caso no sejam encontradas recargas
     */
    public List<Recarga> gerarRelatorioRecargas(Calendar dataInicial, Calendar dataFinal, int idCliente)
            throws RecargaNaoEncontradaException {
        List<Recarga> lstRecargas = sessao.createCriteria(Recarga.class)
                .add(Restrictions.between("dataCredito", dataInicial, dataFinal)).createAlias("cartao", "cartao")
                .createAlias("cartao.cliente", "cliente").add(Restrictions.eq("cliente.id", idCliente))
                .addOrder(Order.asc("dataCredito")).list();

        if (lstRecargas.isEmpty()) {
            throw new RecargaNaoEncontradaException("No foram encontradas recargas para o perodo informado");
        }
        return lstRecargas;
    }
}