Created
July 24, 2010 17:37
-
-
Save sergiolopes/488843 to your computer and use it in GitHub Desktop.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public List<Movimentacao> listaTodasMovimentacoes(Conta conta) { | |
CriteriaBuilder cb = em.getCriteriaBuilder(); | |
CriteriaQuery<Movimentacao> criteria = cb.createQuery(Movimentacao.class); | |
Root<Movimentacao> movimentacao = criteria.from(Movimentacao.class); | |
criteria.where(cb.equal(movimentacao.get(Movimentacao_.conta), conta)) | |
.orderBy(cb.desc(movimentacao.get(Movimentacao_.valor))); | |
return em.createQuery(criteria).getResultList(); | |
} | |
public List<Movimentacao> buscaTodasMovimentacoesDaConta(String titular) { | |
CriteriaBuilder cb = em.getCriteriaBuilder(); | |
CriteriaQuery<Movimentacao> criteria = cb.createQuery(Movimentacao.class); | |
Root<Movimentacao> movimentacao = criteria.from(Movimentacao.class); | |
Join<Movimentacao, Conta> join = movimentacao.join(Movimentacao_.conta); | |
criteria.where(cb.like(join.get(Conta_.titular), "%" +titular + "%")); | |
return em.createQuery(criteria).getResultList(); | |
} | |
public BigDecimal calculaTotalMovimentado(Conta conta, TipoMovimentacao tipo) { | |
CriteriaBuilder cb = em.getCriteriaBuilder(); | |
CriteriaQuery<BigDecimal> criteria = cb.createQuery(BigDecimal.class); | |
Root<Movimentacao> movimentacao = criteria.from(Movimentacao.class); | |
criteria.select(cb.sum(movimentacao.get(Movimentacao_.valor))) | |
.where(cb.and( | |
cb.equal(movimentacao.get(Movimentacao_.conta), conta), | |
cb.equal(movimentacao.get(Movimentacao_.tipoMovimentacao), tipo))); | |
return em.createQuery(criteria).getSingleResult(); | |
} | |
public List<ValorPorMes> listaMesesComMovimentacoes(Conta conta, TipoMovimentacao tipoMovimentacao) { | |
CriteriaBuilder cb = em.getCriteriaBuilder(); | |
CriteriaQuery<ValorPorMes> criteria = cb.createQuery(ValorPorMes.class); | |
Root<Movimentacao> movimentacao = criteria.from(Movimentacao.class); | |
Expression<Integer> month = cb.function("month", Integer.class, movimentacao.get(Movimentacao_.data)); | |
Expression<BigDecimal> sumValor = cb.sum(movimentacao.get(Movimentacao_.valor)); | |
criteria.select(cb.construct(ValorPorMes.class, month, sumValor)) | |
.groupBy(month, movimentacao.get(Movimentacao_.conta), movimentacao.get(Movimentacao_.tipoMovimentacao)) | |
.having(cb.and( | |
cb.equal(movimentacao.get(Movimentacao_.conta), conta), | |
cb.equal(movimentacao.get(Movimentacao_.tipoMovimentacao), tipoMovimentacao))) | |
.orderBy(cb.desc(sumValor)); | |
return em.createQuery(criteria).getResultList(); | |
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
public List<Movimentacao> listaTodasMovimentacoes(Conta conta) { | |
String jpql = "select m from Movimentacao m " + | |
"where m.conta = :pConta order by m.valor desc"; | |
TypedQuery<Movimentacao> query = this.em.createQuery(jpql, Movimentacao.class); | |
query.setParameter("pConta", conta); | |
return query.getResultList(); | |
} | |
public List<Movimentacao> listaPorValorETipo(BigDecimal valor, TipoMovimentacao tipo) { | |
String jpql = "select m from Movimentacao m where m.valor <= :pValor and m.tipoMovimentacao = :pTipoMovimentacao"; | |
return em.createQuery(jpql, Movimentacao.class) | |
.setParameter("pValor", valor) | |
.setParameter("pTipoMovimentacao", tipo) | |
.getResultList(); | |
} | |
public List<ValorPorMes> listaMesesComMovimentacoes(Conta conta, TipoMovimentacao tipoMovimentacao) { | |
String jpql = | |
"select new br.com.caelum.financas.modelo.ValorPorMes(month(m.data), sum(m.valor)) " | |
+ "from Movimentacao m group by month(m.data), m.conta, m.tipoMovimentacao " | |
+ "having m.conta = :pConta and m.tipoMovimentacao = :pTipoMovimentacao " | |
+ "order by sum(m.valor) desc"; | |
Query query = this.em.createQuery(jpql); | |
query.setParameter("pConta", conta); | |
query.setParameter("pTipoMovimentacao", tipoMovimentacao); | |
return query.getResultList(); | |
} | |
public BigDecimal calculaTotalMovimentado(Conta conta, TipoMovimentacao tipo) { | |
String jpql = "select sum(m.valor) from Movimentacao m where m.conta=:pConta and m.tipoMovimentacao=:pTipoMovimentacao"; | |
return em.createQuery(jpql, BigDecimal.class) | |
.setParameter("pConta", conta) | |
.setParameter("pTipoMovimentacao", tipo) | |
.getSingleResult(); | |
} | |
public List<Movimentacao> buscaTodasMovimentacoesDaConta(String titular) { | |
String jpql = "select m from Movimentacao m where m.conta.titular like :pTitular"; | |
TypedQuery<Movimentacao> query = this.em.createQuery(jpql, Movimentacao.class); | |
query.setParameter("pTitular", "%"+titular+"%"); | |
return query.getResultList(); | |
} |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment