Java tutorial
/* * Cdigo-fonte do livro "Programao Java para a Web" * Autores: Dcio Heinzelmann Luckow <decioluckow@gmail.com> * Alexandre Altair de Melo <alexandremelo.br@gmail.com> * * ISBN: 978-85-7522-238-6 * http://www.javaparaweb.com.br * http://www.novatec.com.br/livros/javaparaweb * Editora Novatec, 2010 - todos os direitos reservados * * LICENA: Este arquivo-fonte est sujeito a Atribuio 2.5 Brasil, da licena Creative Commons, * que encontra-se disponvel no seguinte endereo URI: http://creativecommons.org/licenses/by/2.5/br/ * Se voc no recebeu uma cpia desta licena, e no conseguiu obt-la pela internet, por favor, * envie uma notificao aos seus autores para que eles possam envi-la para voc imediatamente. * * * Source-code of "Programao Java para a Web" book * Authors: Dcio Heinzelmann Luckow <decioluckow@gmail.com> * Alexandre Altair de Melo <alexandremelo.br@gmail.com> * * ISBN: 978-85-7522-238-6 * http://www.javaparaweb.com.br * http://www.novatec.com.br/livros/javaparaweb * Editora Novatec, 2010 - all rights reserved * * LICENSE: This source file is subject to Attribution version 2.5 Brazil of the Creative Commons * license that is available through the following URI: http://creativecommons.org/licenses/by/2.5/br/ * If you did not receive a copy of this license and are unable to obtain it through the web, please * send a note to the authors so they can mail you a copy immediately. * */ package financeiro.dao.hibernate; import java.math.BigDecimal; import java.util.Date; import java.util.List; import org.hibernate.Criteria; import org.hibernate.SQLQuery; import org.hibernate.Session; import org.hibernate.criterion.Order; import org.hibernate.criterion.Restrictions; import financeiro.dao.LancamentoDAO; import financeiro.model.Conta; import financeiro.model.Lancamento; public class LancamentoDAOHibernate implements LancamentoDAO { private Session session; public void setSession(Session session) { this.session = session; } public void salvar(Lancamento lancamento) { this.session.saveOrUpdate(lancamento); } public void excluir(Lancamento lancamento) { this.session.delete(lancamento); } public Lancamento carregar(Integer lancamento) { return (Lancamento) this.session.get(Lancamento.class, lancamento); } @SuppressWarnings("unchecked") @Override public List<Lancamento> listar(Conta conta, Date dataInicio, Date dataFim) { Criteria criteria = this.session.createCriteria(Lancamento.class); if (dataInicio != null && dataFim != null) { criteria.add(Restrictions.between("data", dataInicio, dataFim)); } else if (dataInicio != null) { criteria.add(Restrictions.ge("data", dataInicio)); } else if (dataFim != null) { criteria.add(Restrictions.le("data", dataFim)); } criteria.add(Restrictions.eq("conta", conta)); criteria.addOrder(Order.asc("data")); return criteria.list(); } public float saldo(Conta conta, Date data) { if (data == null) { throw new IllegalArgumentException("[Financeiro] data cannot be null"); } StringBuffer sql = new StringBuffer(); sql.append("select sum(l.valor * c.fator)"); sql.append(" from LANCAMENTO l,"); sql.append(" CATEGORIA c"); sql.append(" where l.categoria = c.codigo"); sql.append(" and l.conta = :conta"); sql.append(" and l.data <= :data"); SQLQuery query = this.session.createSQLQuery(sql.toString()); query.setParameter("conta", conta.getConta()); query.setParameter("data", data); BigDecimal saldo = (BigDecimal) query.uniqueResult(); if (saldo != null) { return saldo.floatValue(); } return 0f; } }