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.math.BigInteger; 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.Banco; import br.com.hslife.orcamento.entity.CartaoCredito; import br.com.hslife.orcamento.entity.Conta; import br.com.hslife.orcamento.entity.Usuario; import br.com.hslife.orcamento.enumeration.TipoConta; @Repository public class ContaRepository extends AbstractCRUDRepository<Conta> { public ContaRepository() { super(new Conta()); } @SuppressWarnings("unchecked") public List<Conta> findAll() { Criteria criteria = getSession().createCriteria(Conta.class); criteria.add(Restrictions.ne("tipoConta", TipoConta.CARTAO)); return criteria.addOrder(Order.asc("descricao")).list(); } @SuppressWarnings("unchecked") public List<Conta> findByBanco(Long idBanco) { Criteria criteria = getSession().createCriteria(Conta.class); criteria.add(Restrictions.eq("banco.id", idBanco)); criteria.add(Restrictions.ne("tipoConta", TipoConta.CARTAO)); return criteria.addOrder(Order.asc("descricao")).list(); } @SuppressWarnings("unchecked") public List<Conta> findByDescricao(String descricao) { Criteria criteria = getSession().createCriteria(Conta.class); criteria.add(Restrictions.ilike("descricao", descricao, MatchMode.ANYWHERE)); criteria.add(Restrictions.ne("tipoConta", TipoConta.CARTAO)); return criteria.addOrder(Order.asc("descricao")).list(); } @SuppressWarnings("unchecked") public List<Conta> findByUsuario(Usuario usuario) { Criteria criteria = getSession().createCriteria(Conta.class); criteria.add(Restrictions.eq("usuario.id", usuario.getId())); return criteria.addOrder(Order.asc("descricao")).list(); } @SuppressWarnings("unchecked") public List<Conta> findAllAtivos() { Criteria criteria = getSession().createCriteria(Conta.class); criteria.add(Restrictions.eq("ativo", true)); criteria.add(Restrictions.ne("tipoConta", TipoConta.CARTAO)); return criteria.addOrder(Order.asc("descricao")).list(); } @SuppressWarnings("unchecked") public List<Conta> findAllAtivosByUsuario(Usuario usuario) { return getQuery( "FROM Conta conta WHERE conta.ativo = :ativo AND conta.usuario.id = :idUsuario ORDER BY conta.descricao ASC") .setBoolean("ativo", true).setLong("idUsuario", usuario.getId()).list(); } @SuppressWarnings("unchecked") public List<Conta> findByDescricaoAndUsuario(String descricao, Usuario usuario) { Criteria criteria = getSession().createCriteria(Conta.class); criteria.add(Restrictions.ilike("descricao", descricao, MatchMode.ANYWHERE)); if (!usuario.getLogin().equals("admin")) { criteria.add(Restrictions.eq("usuario.id", usuario.getId())); } criteria.add(Restrictions.ne("tipoConta", TipoConta.CARTAO)); return criteria.addOrder(Order.asc("descricao")).list(); } @SuppressWarnings("unchecked") public List<Conta> findByBancoAndUsuario(Banco banco, Usuario usuario) { Criteria criteria = getSession().createCriteria(Conta.class); criteria.add(Restrictions.eq("banco.id", banco.getId())); criteria.add(Restrictions.eq("usuario.id", usuario.getId())); criteria.add(Restrictions.ne("tipoConta", TipoConta.CARTAO)); return criteria.addOrder(Order.asc("descricao")).list(); } @SuppressWarnings("unchecked") public List<Conta> findByTipoContaAndUsuario(TipoConta tipoConta, Usuario usuario) { Criteria criteria = getSession().createCriteria(Conta.class); criteria.add(Restrictions.eq("tipoConta", tipoConta)); criteria.add(Restrictions.eq("usuario.id", usuario.getId())); criteria.add(Restrictions.ne("tipoConta", TipoConta.CARTAO)); return criteria.addOrder(Order.asc("descricao")).list(); } @SuppressWarnings("unchecked") public List<Conta> findEnabledByUsuario(Usuario usuario) { Criteria criteria = getSession().createCriteria(Conta.class); criteria.add(Restrictions.eq("ativo", true)); criteria.add(Restrictions.eq("usuario.id", usuario.getId())); criteria.add(Restrictions.ne("tipoConta", TipoConta.CARTAO)); return criteria.addOrder(Order.asc("descricao")).list(); } @SuppressWarnings("unchecked") public List<Conta> findOnlyTipoCartaoEnabledByUsuario(Usuario usuario) { Criteria criteria = getSession().createCriteria(Conta.class); criteria.add(Restrictions.eq("ativo", true)); criteria.add(Restrictions.eq("usuario.id", usuario.getId())); criteria.add(Restrictions.eq("tipoConta", TipoConta.CARTAO)); return criteria.addOrder(Order.asc("descricao")).list(); } @SuppressWarnings("unchecked") public List<Conta> findOnlyTipoCartaoByUsuario(Usuario usuario) { Criteria criteria = getSession().createCriteria(Conta.class); criteria.add(Restrictions.eq("usuario.id", usuario.getId())); criteria.add(Restrictions.eq("tipoConta", TipoConta.CARTAO)); return criteria.addOrder(Order.asc("descricao")).list(); } public Conta findByCartaoCredito(CartaoCredito cartaoCredito) { Criteria criteria = getSession().createCriteria(Conta.class); criteria.add(Restrictions.eq("cartaoCredito.id", cartaoCredito.getId())); return (Conta) criteria.uniqueResult(); } public boolean existsLinkages(Conta conta) { boolean result = false; BigInteger resultFechamentoPeriodo = (BigInteger) getSession().createSQLQuery( "select count(id) from fechamentoperiodo where operacao = 'FECHAMENTO' and idContaBancaria = " + conta.getId()) .uniqueResult(); BigInteger resultLancamento = (BigInteger) getSession() .createSQLQuery("select count(id) from lancamentoconta where idConta = " + conta.getId()) .uniqueResult(); if (resultFechamentoPeriodo.longValue() != 0) { return true; } if (resultLancamento.longValue() != 0) { return true; } return result; } public boolean existsLinkagesCartao(Conta conta) { // FIXME implementar!!!!!! boolean result = false; /* BigInteger resultFechamentoPeriodo = (BigInteger)getSession().createSQLQuery("select count(id) from fechamentoperiodo where operacao = 'FECHAMENTO' and idContaBancaria = " + conta.getId()).uniqueResult(); BigInteger resultLancamento = (BigInteger)getSession().createSQLQuery("select count(id) from lancamentoconta where idConta = " + conta.getId()).uniqueResult(); if (resultFechamentoPeriodo.longValue() != 0) { return true; } if (resultLancamento.longValue() != 0) { return true; } */ return result; } @SuppressWarnings("unchecked") public List<Conta> findDescricaoOrTipoContaOrAtivoByUsuario(String descricao, TipoConta[] tipoConta, Usuario usuario, Boolean ativo) { StringBuilder hql = new StringBuilder(); hql.append("FROM Conta conta WHERE "); if (descricao != null) { hql.append("conta.descricao LIKE '%"); hql.append(descricao); hql.append("%' AND "); } if (tipoConta != null && tipoConta.length != 0) { hql.append("conta.tipoConta IN (:tipo) AND "); } if (ativo != null) { hql.append("conta.ativo = :ativo AND "); } hql.append("conta.usuario.id = :idUsuario ORDER BY conta.descricao ASC"); Query hqlQuery = getQuery(hql.toString()); if (tipoConta != null && tipoConta.length != 0) { hqlQuery.setParameterList("tipo", tipoConta); } if (ativo != null) { hqlQuery.setBoolean("ativo", ativo); } hqlQuery.setLong("idUsuario", usuario.getId()); return hqlQuery.list(); } }