br.com.hslife.imobiliaria.dao.impl.AluguelDao.java Source code

Java tutorial

Introduction

Here is the source code for br.com.hslife.imobiliaria.dao.impl.AluguelDao.java

Source

/*** 
    
Copyright (c) 2011, 2014 Hrcules S. S. Jos
    
    
Este arquivo  parte do programa ImobiliriaWeb.
    
ImobiliriaWeb  um software livre; voc pode redistribui-lo e/ou 
    
modific-lo dentro dos termos da Licena Pblica Geral Menor GNU como 
    
publicada pela Fundao do Software Livre (FSF); na verso 2.1 da 
    
Licena.
    
    
Este programa  distribudo na esperana que possa ser util, 
    
mas SEM NENHUMA GARANTIA; sem uma garantia implicita de ADEQUAO a qualquer
    
MERCADO ou APLICAO EM PARTICULAR. Veja a Licena Pblica Geral Menor GNU em 
    
portugus para maiores detalhes.
    
    
Voc deve ter recebido uma cpia da Licena Pblica Geral Menor GNU sob o 
    
nome de "LICENSE.TXT" junto com este programa, se no, acesse o site HSlife no 
    
endereco www.hslife.com.br ou escreva para a Fundao do Software Livre(FSF) Inc., 
    
51 Franklin St, Fifth Floor, Boston, MA  02110-1301, USA.
    
    
Para mais informaes sobre o programa ImobiliriaWeb e seus autores acesso o 
    
endereo hslife.com.br, pelo e-mail contato@hslife.com.br ou escreva para 
    
Hrcules S. S. Jos, Av. Ministro Lafaeyte de Andrade, 1683 - Bl. 3 Apt 404, 
    
Marco II - Nova Iguau, RJ, Brasil.
    
 ***/

package br.com.hslife.imobiliaria.dao.impl;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;
import java.util.Map;

import org.hibernate.Criteria;
import org.hibernate.criterion.Criterion;
import org.hibernate.criterion.MatchMode;
import org.hibernate.criterion.Order;
import org.hibernate.criterion.Restrictions;

import br.com.hslife.imobiliaria.dao.IAluguelDao;
import br.com.hslife.imobiliaria.db.HibernateUtility;
import br.com.hslife.imobiliaria.model.Aluguel;

public class AluguelDao extends HibernateGenericDao implements IAluguelDao {

    @SuppressWarnings("unchecked")
    @Override
    public List<Aluguel> buscarPorContrato(Long idContrato) {
        Map<String, Object> params = new HashMap<String, Object>();
        params.put("idContrato", idContrato);
        return queryList("aluguel.buscarPorContrato", params);
    }

    @SuppressWarnings("unchecked")
    public List<Aluguel> listByExample(Aluguel example) {
        List<Criterion> criterios = new ArrayList<Criterion>();
        if (example.getContrato() != null) {
            criterios.add(Restrictions.eq("contrato.id", example.getContrato().getId()));
        }
        if (example.getPeriodo() > 0) {
            criterios.add(Restrictions.eq("periodo", example.getPeriodo()));
        }
        if (example.getAno() > 0) {
            criterios.add(Restrictions.eq("ano", example.getAno()));
        }
        return listByCriteria(Aluguel.class, criterios);
    }

    @SuppressWarnings("unchecked")
    @Override
    public List<Aluguel> listByContratoOrPeriodoOrAnoBeforeDataAndPago(Long idContrato, Integer periodo,
            Integer ano, Date data, Boolean pago) {
        List<Criterion> criterios = new ArrayList<Criterion>();
        if (idContrato != null) {
            criterios.add(Restrictions.eq("contrato.id", idContrato));
        }
        if (periodo != null) {
            criterios.add(Restrictions.eq("periodo", periodo));
        }
        if (ano != null) {
            criterios.add(Restrictions.eq("ano", ano));
        }
        if (data != null) {
            criterios.add(Restrictions.le("vencimento", data));
        }
        if (pago != null) {
            if (pago) {
                criterios.add(Restrictions.isNotNull("pagamento"));
            } else {
                criterios.add(Restrictions.isNull("pagamento"));
            }
        }
        return listByCriteria(Aluguel.class, criterios);
    }

    @SuppressWarnings("unchecked")
    @Override
    public List<Aluguel> listByNomeLocatarioOrContratoOrPeriodoOrAnoBeforeDataAndPago(String nomeLocatario,
            Long idContrato, Integer periodo, Integer ano, Date data, Boolean pago) {
        Criteria criteria = HibernateUtility.getSession().createCriteria(Aluguel.class, "aluguel")
                .createAlias("aluguel.contrato", "contrato").createAlias("contrato.locatario", "locatario");
        if (nomeLocatario != null && !nomeLocatario.trim().isEmpty()) {
            criteria.add(Restrictions.ilike("locatario.nome", nomeLocatario, MatchMode.ANYWHERE));
        }
        if (idContrato != null) {
            criteria.add(Restrictions.eq("contrato.id", idContrato));
        }
        if (periodo != null) {
            criteria.add(Restrictions.eq("aluguel.periodo", periodo));
        }
        if (ano != null) {
            criteria.add(Restrictions.eq("aluguel.ano", ano));
        }
        if (data != null) {
            criteria.add(Restrictions.le("aluguel.vencimento", data));
        }
        if (pago != null) {
            if (pago) {
                criteria.add(Restrictions.isNotNull("aluguel.pagamento"));
            } else {
                criteria.add(Restrictions.isNull("aluguel.pagamento"));
            }
        }
        criteria.addOrder(Order.asc("aluguel.vencimento"));
        return criteria.list();
    }
}