método que retorna um BigDecimal com os valores do gráfico na pag web

salve, salve…

eu preciso plotar um grafico na minha pagina web, a partir do que for inserido no banco de dados. A classe que tem essa função é ContaService, que deve possuir a implementação do seguinte método:

[code]public BigDecimal consultarValorTotalPorTipoConta(TipoConta despesa) {

	return null;
}[/code]

se eu quiser que o grafico insira qualquer valor como teste, ou seja, magic numbers, para ser mais especifico, eu fiz assim:

[code]
public BigDecimal consultarValorTotalPorTipoConta(TipoConta despesa) {

	return new BigDecimal(3569.85);
}[/code]

com esse metodo me retornou o grafico na tela bonitin, mas com um valor inserido “na mao”.

como eu faço para instanciar um objeto dessa classe BigDecimal e me retornar o que foi inserido no banco??

Minha servlet que gera o grafico segue abaixo:

[code]package br.com.financas.imperiumpecunia.servlets;

import java.awt.Color;
import java.awt.image.BufferedImage;
import java.io.IOException;
import java.io.OutputStream;
import java.math.BigDecimal;
import java.text.DecimalFormat;
import java.text.NumberFormat;
import java.util.Locale;

import javax.imageio.ImageIO;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.jfree.chart.ChartFactory;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PiePlot3D;
import org.jfree.data.general.DefaultPieDataset;
import org.jfree.data.general.PieDataset;

import br.com.financas.imperiumpecunia.dominio.TipoConta;
import br.com.financas.imperiumpecunia.negocio.ContaService;

public class GraficoPizzaDespesasReceitasServlet extends HttpServlet {
private static final long serialVersionUID = 1L;

protected void doGet(HttpServletRequest request,
		HttpServletResponse response) throws ServletException, IOException {
	response.setContentType("image/png");
	OutputStream output = response.getOutputStream();

	BufferedImage image = criarGrafico(criarDataSet()).createBufferedImage(
			650, 250);
	ImageIO.write(image, "png", output);

	output.close();
}

private PieDataset criarDataSet() {
	NumberFormat formatador = DecimalFormat.getNumberInstance(new Locale(
			"pt", "BR"));
	ContaService contaService = new ContaService();
	BigDecimal valorDespesas = contaService
			.consultarValorTotalPorTipoConta(TipoConta.DESPESA);
	BigDecimal valorReceitas = contaService
			.consultarValorTotalPorTipoConta(TipoConta.RECEITA);

	DefaultPieDataset dataSet = new DefaultPieDataset();

	dataSet.setValue("Despesas [" + formatador.format(valorDespesas) + "]",
			valorDespesas);
	dataSet.setValue("Receitas [" + formatador.format(valorReceitas) + "]",
			valorReceitas);
	return dataSet;
}

private JFreeChart criarGrafico(PieDataset dataSet) {
	JFreeChart chart = ChartFactory.createPieChart3D("Receitas x Despesas",
			dataSet, false, true, false);
	PiePlot3D plot = (PiePlot3D) chart.getPlot();
	plot.setBackgroundPaint(Color.WHITE);
	plot.setStartAngle(290);
	plot.setForegroundAlpha(0.5f);
	return chart;
}

}[/code]

galera, por favor, preciso de uma ajuda de vcs!

agradeço.

você chegou a dar uma lida na documentação do BigDecimal ou em alguma outra documentação para ver se encontrava o eixo da solução ou você já testou várias coisas?

meu velho, agradeço pela resposta…

ja dei uma lida sim na API, mas confesso q nao entendi mtu bem… e ja testei d varias maneiras o retorno desse metodo.

tu tem como me ajudar?

galera, me da uma ajuda aew… preciso resolver esse metodo, sem passar um primitivo e nao to sabendo.

Olá amigo,
Sei que o post eh antigo, acompanhei a apostila e vi esse erro.
Conseguiu resolver
Fiz como estah aqui embaixo.
Abraços,
Roberto

O meu ficou assim:

public interface ContaDAO extends GenericDAO<Conta> {
	
	...

	public Integer consultarValorTotalPorTipoConta(TipoConta tipoConta);
}
public class HibernateContaDAO extends HibernateGenericDAO<Conta> implements ContaDAO {
	
	...

	public Integer consultarValorTotalPorTipoConta(TipoConta tipoConta) {
		Criteria criteria = this.getSession().createCriteria(Conta.class);
		criteria.setProjection(Projections.rowCount());
		criteria.add(Restrictions.eq("tipo", tipoConta));
		return (Integer) criteria.uniqueResult();
	}
}
public class ContaService {

	...

	public Integer consultarValorTotalPorTipoConta(TipoConta tipoConta) {
		DAOFactory daoFactory = DAOFactory.getDAOFactory();
		ContaDAO contaDAO = daoFactory.getContaDAO();
		Integer valorTotalPorTipoConta = contaDAO.consultarValorTotalPorTipoConta(tipoConta);
		daoFactory.encerrar();
		return valorTotalPorTipoConta;
	}
}
public class GraficoPizzaDespesasReceitasServlet extends HttpServlet {

	...

	private PieDataset criarDataSet() {
		NumberFormat formatador = DecimalFormat.getNumberInstance(new Locale("pt", "BR"));
		ContaService contaService = new ContaService();
		Integer valorDespesas = contaService.consultarValorTotalPorTipoConta(TipoConta.DESPESA);
		Integer valorReceitas = contaService.consultarValorTotalPorTipoConta(TipoConta.RECEITA);
		DefaultPieDataset dataSet = new DefaultPieDataset();
		dataSet.setValue("Despesas [" + formatador.format(valorDespesas) + "]", valorDespesas);
		dataSet.setValue("Receitas [" + formatador.format(valorReceitas) + "]", valorReceitas);
		return dataSet;
	}

	...

}