Java tutorial
/*** Copyright (c) 2012 - 2020 Hrcules S. S. Jos Este arquivo parte do programa Oramento Domstico. Oramento Domstico 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 til, mas SEM NENHUMA GARANTIA; sem uma garantia implcita 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 do projeto no endereco https://github.com/herculeshssj/orcamento 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 Oramento Domstico e seu autor entre em contato pelo e-mail herculeshssj@outlook.com, ou ainda 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.orcamento.repository; import java.util.ArrayList; import java.util.List; import org.hibernate.Criteria; import org.hibernate.Query; import org.hibernate.criterion.MatchMode; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; import org.springframework.stereotype.Repository; import br.com.hslife.orcamento.entity.Favorecido; import br.com.hslife.orcamento.entity.Usuario; import br.com.hslife.orcamento.enumeration.TipoPessoa; @Repository public class FavorecidoRepository extends AbstractCRUDRepository<Favorecido> { public FavorecidoRepository() { super(new Favorecido()); } @SuppressWarnings("unchecked") public List<Favorecido> findByNomeAndUsuario(String nome, Usuario usuario) { Criteria criteria = getSession().createCriteria(Favorecido.class); criteria.add(Restrictions.ilike("nome", nome, MatchMode.ANYWHERE)); criteria.add(Restrictions.eq("usuario.id", usuario.getId())); return criteria.addOrder(Order.asc("nome")).list(); } @SuppressWarnings("unchecked") public List<Favorecido> findByUsuario(Usuario usuario) { Criteria criteria = getSession().createCriteria(Favorecido.class); criteria.add(Restrictions.eq("usuario.id", usuario.getId())); return criteria.addOrder(Order.asc("nome")).list(); } @SuppressWarnings("unchecked") public List<Favorecido> findEnabledByUsuario(Usuario usuario) { Criteria criteria = getSession().createCriteria(Favorecido.class); criteria.add(Restrictions.eq("ativo", true)); criteria.add(Restrictions.eq("usuario.id", usuario.getId())); return criteria.addOrder(Order.asc("nome")).list(); } @SuppressWarnings("unchecked") public List<Favorecido> findByNomeUsuarioAndAtivo(String nome, Usuario usuario, boolean ativo) { String hql = "FROM Favorecido favorecido WHERE favorecido.nome like '%" + nome + "%' AND favorecido.usuario.id = :idUsuario AND favorecido.ativo = :ativo ORDER BY favorecido.nome ASC"; Query query = getSession().createQuery(hql).setLong("idUsuario", usuario.getId()).setBoolean("ativo", ativo); return query.list(); } public void updateAllToNotDefault(Usuario usuario) { String sql = "update favorecido set padrao = false where idUsuario = " + usuario.getId(); Query query = getSession().createSQLQuery(sql); query.executeUpdate(); } @SuppressWarnings("unchecked") public Favorecido findDefaultByUsuario(Usuario usuario) { Criteria criteria = getSession().createCriteria(Favorecido.class); criteria.add(Restrictions.eq("padrao", true)); criteria.add(Restrictions.eq("usuario.id", usuario.getId())); List<Favorecido> resultado = criteria.list(); if (resultado != null && resultado.size() >= 1) { return resultado.get(0); } return null; } @SuppressWarnings("unchecked") public List<Favorecido> findTipoPessoaAndNomeAndAtivoByUsuario(TipoPessoa tipoPessoa, String nome, Boolean ativo, Usuario usuario) { StringBuilder hql = new StringBuilder(); hql.append("FROM Favorecido favorecido WHERE "); if (tipoPessoa != null) { hql.append("favorecido.tipoPessoa = :tipo AND "); } if (nome != null && !nome.isEmpty()) { hql.append("favorecido.nome LIKE '%"); hql.append(nome); hql.append("%' AND "); } if (ativo != null) { hql.append("favorecido.ativo = :ativo AND "); } hql.append("favorecido.usuario.id = :idUsuario ORDER BY favorecido.nome ASC"); Query hqlQuery = getQuery(hql.toString()); if (tipoPessoa != null) { hqlQuery.setParameter("tipo", tipoPessoa); } if (ativo != null) { hqlQuery.setParameter("ativo", ativo); } hqlQuery.setParameter("idUsuario", usuario.getId()); return hqlQuery.list(); } @SuppressWarnings("unchecked") public List<Favorecido> findTipoPessoaAndNomeAndAtivoByUsuario(TipoPessoa tipoPessoa, String nome, Boolean ativo, List<Usuario> usuarios) { StringBuilder hql = new StringBuilder(); hql.append("FROM Favorecido favorecido WHERE "); if (tipoPessoa != null) { hql.append("favorecido.tipoPessoa = :tipo AND "); } if (nome != null && !nome.isEmpty()) { hql.append("favorecido.nome LIKE '%"); hql.append(nome); hql.append("%' AND "); } if (ativo != null) { hql.append("favorecido.ativo = :ativo AND "); } hql.append("favorecido.usuario.id IN (:idUsuario) ORDER BY favorecido.nome ASC"); Query hqlQuery = getQuery(hql.toString()); if (tipoPessoa != null) { hqlQuery.setParameter("tipo", tipoPessoa); } if (ativo != null) { hqlQuery.setParameter("ativo", ativo); } // Resgata os IDs dos usurios List<Long> idsUsuarios = new ArrayList<>(); for (Usuario u : usuarios) { if (u != null && u.getId() != null) { idsUsuarios.add(u.getId()); } } hqlQuery.setParameterList("idUsuario", idsUsuarios); return hqlQuery.list(); } }