Java tutorial
/*** 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(); } }