Java tutorial
/* * 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.com.ateliens.repository; import br.com.ateliens.model.Cliente; import br.com.ateliens.model.Servico; import java.io.Serializable; import java.util.List; import javax.inject.Inject; import javax.persistence.EntityManager; import org.apache.commons.lang3.StringUtils; import org.hibernate.Criteria; import org.hibernate.Session; import org.hibernate.criterion.MatchMode; import org.hibernate.criterion.Order; import org.hibernate.criterion.Projections; import org.hibernate.criterion.Restrictions; /** * * @author Yvonei */ public class ClientesFiltrados implements Serializable { private static final long serialVersionUID = 1L; @Inject private EntityManager manager; @SuppressWarnings("unchecked") public List<Cliente> filtrados(FiltroCliente filtro) { Criteria criteria = criarCriteriaParaFiltro(filtro); criteria.setFirstResult(filtro.getPrimeiroRegistro()); criteria.setMaxResults(filtro.getQuantidadeRegistros()); if (filtro.isAscendente() && filtro.getPropriedadeOrdenacao() != null) { criteria.addOrder(Order.asc(filtro.getPropriedadeOrdenacao())); } else if (filtro.getPropriedadeOrdenacao() != null) { criteria.addOrder(Order.desc(filtro.getPropriedadeOrdenacao())); } return criteria.list(); } public int quantidadeFiltrados(FiltroCliente filtro) { Criteria criteria = criarCriteriaParaFiltro(filtro); criteria.setProjection(Projections.rowCount()); return ((Number) criteria.uniqueResult()).intValue(); } private Criteria criarCriteriaParaFiltro(FiltroCliente filtro) { Session session = manager.unwrap(Session.class); Criteria criteria = session.createCriteria(Cliente.class); if (StringUtils.isNotEmpty(filtro.getNome())) { criteria.add(Restrictions.ilike("nome", filtro.getNome(), MatchMode.ANYWHERE)); } return criteria; } }