Grafico Não Aparece [CeWolf]

15 respostas
Ironlynx
Opa pessoal resolvi testar o CeWolf 1.0 e tõ tendo uns probleminhas... Instalei tudo aqui blz, libs e dependencias, aparentemente sem erros. Meu web.xml é :
<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd">

<web-app>
  <display-name>Graphs</display-name>
  <description>Teste de aplicação usando Cewolf</description>
   <servlet>
    <servlet-name>CewolfServlet</servlet-name>
    <servlet-class>de.laures.cewolf.CewolfRenderer</servlet-class>
    <init-param>
        <param-name>storage</param-name>
        <param-value>de.laures.cewolf.storage.TransientSessionStorage</param-value>
    </init-param>
    <init-param>
        <param-name>overliburl</param-name>
        <param-value>overlib.js</param-value>
    </init-param>
    <init-param>
        <param-name>debug</param-name>
        <param-value>true</param-value>
    </init-param>
    <load-on-startup>1</load-on-startup>
  </servlet>

  <servlet-mapping>
    <servlet-name>CewolfServlet</servlet-name>
    <url-pattern>/cewolf/*</url-pattern>
  </servlet-mapping>
</web-app>
E sempre quando eu tento acessar a minha página com o gráfico, aparece: Cewolf servlet up and running. Requests served so far: 0 Mas nada do gráfico.Pq isso ocorre?

15 Respostas

Pedrosa

De uma olhada nesse tutorial, aqui tem um exemplo bem facil de fazer:

Ironlynx

Eu já tô usando esse tutorial Pedrosa!!! :lol:
O chato é que não diz nada o pq do erro…e nenhum chart aparece!

Pedrosa

Eu tava tendo problemas também, sua query está correta? veja o que ela tah te retornando e post o código ai.

Ironlynx
Eu tava tendo problemas também, sua query está correta? veja o que ela tah te retornando e post o código ai.
Justamente para não ter problemas de BD, eu populei para testes com dados falsos:
public class EmpresasListadas implements DatasetProducer {
	private static final long serialVersionUID = 1L;
	PreparedStatement ps = null;
	Logger log = Logger.getLogger(EmpresasListadas.class);
	private final String[] empresas = {"ITAIPU","CEPEL","ELETROBRÁS","CESPE","BOA VISTA","COCEL","GE","CNEE","ELETRONORTE","CHESP","CELB"};
	private final String[] seriesNames ={"Faturamento(Em R$ milhões)"};
	String query="";

	public String getProducerId() {
		return "ListaDeEmpresasEletricas";
	}
//	 O dados deste dataset é invalidado imediatamente. O tempo de retorno influencia no cache do cewolf
	public boolean hasExpired(Map arg0, Date arg1) {
		return (System.currentTimeMillis() - arg1.getTime())  > 5000;
		//return true;
         	}

	public Object produceDataset(Map arg0) throws DatasetProduceException {
		log.debug("producing data.");
       //Criando um Dataset para o gráfico
		DefaultCategoryDataset ds = new DefaultCategoryDataset(){
		protected void finalize() throws Throwable {
			super.finalize();
			log.debug(this +" finalized.");
		  }
       };

       for (int series = 0; series < seriesNames.length; series ++) {
           int lastY = (int)(Math.random() * 1000 + 1000);
           for (int i = 0; i < empresas.length; i++) {
               final int y = lastY + (int)(Math.random() * 200 - 100);
               lastY = y;
               ds.addValue(y, seriesNames[series], empresas[i]);
           }
       }
       return ds;		
	}
}
Não tenho muita idéia do que pode ser...
furutani

a saida HTML ta mais ou menos assim

<IMG BORDER="0" HEIGHT="300" WIDTH="300" ALT="" src="/cewolfexample-1.0/cewolf;jsessionid=CED8CCB70C8648FAB7203D56A63D0781?img=997480597&amp;width=300&amp;height=300&amp;iehack=.png">

No browser aparece o icone de erro qdo a imagem não é carregada?

Ironlynx
No browser aparece o icone de erro qdo a imagem não é carregada?
Nop.Só aparece isso: Cewolf servlet up and running. Requests served so far: 0 Meu cód html é esse:
<%@ page contentType="text/html; charset=iso-8859-1" errorPage="" %>
<%@ taglib uri="/WEB-INF/cewolf-1.1.tld" prefix="cewolf"%>
<html><head><meta http-equiv="Content-Type" content="text/html; charset=Cp1252"/>
<title>Lista De Empresas</title></head>
<body> <jsp:useBean id="graficoDS" class="graphs.report.EmpresasListadas"/>
		
<center><h3>GRÁFICOS DE LINHAS DAS EMPRESAS</h3></center>
<!-- GRÁFICO COLUNA 3D -->
		<cewolf:chart id="grafico" title="Empresas Listadas por Nome" type="verticalbar3d" 
				xaxislabel="Nome" yaxislabel="Valor">
		    <cewolf:gradientpaint>
		        <cewolf:point x="0" y="0" color="#FBFBFB" />
		        <cewolf:point x="350" y="0" color="#F3F3F3" />
		    </cewolf:gradientpaint>
		    <cewolf:data>
		        <cewolf:producer id="graficoDS" />
			</cewolf:data>
		</cewolf:chart>
		<cewolf:img chartid="grafico" renderer="/cewolf" width="710" height="380"/>
		
		<br/><br/>
</body>
</html>
Aliás, parabéns pelo seu Tutorial Furutani.Mto bom mesmo! Aliás, é uma pena vc não ter espaço para comentários no seu site.Vira e mexe eu dou uma passada lá!
furutani

Muito estranho mesmo. Eu nunca vi esse erro.
E procurando no google, só tem apenas uma e tão somente uma referencia para o erro. :frowning:
No site do Cewolf tem uma app exemplo verifica se ela roda normalmente.

Ironlynx

OMFG! :shock:
Acontece a mesma coisa com esse exemplo… :evil:
Não acredito q corro o risco de ter q fazer uns 100 relatórios com gráficos para exibir na web “na mão”… :cry:

Acho bom ir fazendo um estoque de comida, e de guias sobre JFreeChart, não vou sair de casa tão cedo(trabalho em casa)… :roll:

furutani

OMFG! :shock:
Acontece a mesma coisa com esse exemplo… :evil:
Mas não é possivel.
Começa a apelar, troca o conteiner. No meu teste eu usei o JBoss4 com tomcat.

Ironlynx:

Não acredito q corro o risco de ter q fazer uns 100 relatórios com gráficos para exibir na web “na mão”… :cry:

Nem sei o q dizer…

Ironlynx:

Acho bom ir fazendo um estoque de comida, e de guias sobre JFreeChart, não vou sair de casa tão cedo(trabalho em casa)… :roll:

O q vc está pensando em fazer? salvar os graficos em disco? criar custom tags próprias?

Bons códigos!

[size=9]PS. Deve ser legal trabalhar em casa.[/size]

Ironlynx

Vou testar com o jetty… eu uso o tomcat 5.5.16…

É coisa pra caramba… mas talvez eu não feche o serviço por isso… com o cewolf o trabalho cairia bem…(diminuiria) tendo que fazer na mão eu vou ter q pedir mais pelo tempo que eu vou levar…

Eu não posso nem dizer ainda “o que eu quero fazer” pq até segunda eu nem tinha usado o JFreeChart nem tinha tido a necessidade de fazer algo parecido… idéias serão apreciadas(bem-vindas)!

Sim e Não.

furutani

Vc pode pegar um BufferedImage do JFreeChart e depois usar-lo no ImageEncode para por no response de um servlet.

Ironlynx

Vc pode pegar um BufferedImage do JFreeChart e depois usar-lo no ImageEncode para por no response de um servlet.

O negócio é eu descobrir como fazer isso de uma forma automatizada.
Vc tem um exemplo de JFreeChart na web???No Developers Guide tem um, pena q ele é pago(mas no caso eu acho q vou comprar se fechar negócio).

e brigadão pela ajuda!Continue fazendo aqueles tutorias no seu site q são punks!Muito bons mesmo! :thumbup:

furutani

Ironlynx:
Vc pode pegar um BufferedImage do JFreeChart e depois usar-lo no ImageEncode para por no response de um servlet.

O negócio é eu descobrir como fazer isso de uma forma automatizada.
Vc tem um exemplo de JFreeChart na web???No Developers Guide tem um, pena q ele é pago(mas no caso eu acho q vou comprar se fechar negócio).

Essa eu vou ficar devendo, deve ser dificil achar algo desse tipo pois o cewolf tem exatamente esse proposito, por o JFreeChart pra funcionar na web. Pena q não funcione com vc. :cry:

Ironlynx:

e brigadão pela ajuda!Continue fazendo aqueles tutorias no seu site q são punks!Muito bons mesmo! :thumbup:

Valew!

Ironlynx
Essa eu vou ficar devendo, deve ser dificil achar algo desse tipo pois o cewolf tem exatamente esse proposito, por o JFreeChart pra funcionar na web.
Até que por para funcionar na Web é fácil.O problema são os detalhes.(como isolar as jsp´s por exemplo).Olha um exemplo simples de JFreeChart na web:
import java.io.IOException;
import java.io.OutputStream;
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.ChartUtilities;
import org.jfree.chart.JFreeChart;
import org.jfree.chart.plot.PlotOrientation;
import org.jfree.data.category.DefaultCategoryDataset;

public class ServletGrafico extends HttpServlet {
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public void doGet(HttpServletRequest request, HttpServletResponse response)
	throws ServletException, IOException {
                   OutputStream out = response.getOutputStream();
  try{
	DefaultCategoryDataset dataset = new DefaultCategoryDataset();
	dataset.addValue(10.8, &quot;Sun&quot;, &quot;Quadrimestre 1&quot;);
	dataset.addValue(7.0, &quot;Sun&quot;, &quot;Quadrimestre 2&quot;);
	dataset.addValue(15.0, &quot;Sun&quot;, &quot;Quadrimestre 3&quot;);
	
	dataset.addValue(-5.0, &quot;Apple&quot;, &quot;Quadrimestre 1&quot;);
	dataset.addValue(-7.2, &quot;Apple&quot;, &quot;Quadrimestre 2&quot;);
	dataset.addValue(14.0, &quot;Apple&quot;, &quot;Quadrimestre 3&quot;);
	
	dataset.addValue(6.4, &quot;IBM&quot;, &quot;Quadrimestre 1&quot;);
	dataset.addValue(17.9, &quot;IBM&quot;, &quot;Quadrimestre 2&quot;);
	dataset.addValue(-12.3, &quot;IBM&quot;, &quot;Quadrimestre 3&quot;);
	
	dataset.addValue(7.1, &quot;EDS&quot;, &quot;Quadrimestre 1&quot;);
	dataset.addValue(15.6, &quot;EDS&quot;, &quot;Quadrimestre 2&quot;);
	dataset.addValue(13.5, &quot;EDS&quot;, &quot;Quadrimestre 3&quot;);
	
	dataset.addValue(-8.1, &quot;Micosoft&quot;, &quot;Quadrimestre 1&quot;);
	dataset.addValue(-6.3, &quot;Micosoft&quot;, &quot;Quadrimestre 2&quot;);
	dataset.addValue(10.8, &quot;Micosoft&quot;, &quot;Quadrimestre 3&quot;);
	
	JFreeChart chart = ChartFactory.createBarChart3D(&quot;Faturamento no ano (em R$ Milhões)&quot;,
			&quot;Empresas:&quot;, &quot;Valor Faturado(Em relação ao ano anterior)&quot;, dataset, PlotOrientation.VERTICAL,
			true, true, false);
	      response.setContentType(&quot;image/jpeg&quot;);
	      ChartUtilities.writeChartAsJPEG(out, chart, 640, 480);
  }catch (Exception e) {
	System.err.println(e.toString());
  }finally {
	out.close();
  }
}
}
Depois é só fazer um web.xml:
&lt;?xml version=&quot;1.0&quot; encoding=&quot;ISO-8859-1&quot;?&gt;
&lt;!DOCTYPE web-app PUBLIC "-//Sun Microsystems, Inc.//DTD Web Application 2.3//EN" "http://java.sun.com/dtd/web-app_2_3.dtd"&gt;

&lt;web-app&gt;
 &lt;servlet&gt;&lt;servlet-name&gt;ServletGrafico&lt;/servlet-name&gt;
&lt;servlet-class&gt;ServletGrafico&lt;/servlet-class&gt;
&lt;/servlet&gt;
&lt;servlet-mapping&gt;
&lt;servlet-name&gt;ServletGrafico&lt;/servlet-name&gt;
&lt;url-pattern&gt;/ServletGrafico&lt;/url-pattern&gt;
&lt;/servlet-mapping&gt;
&lt;/web-app&gt;
E roda 100%! :)
Emerzoom

Bom dia Furutani, blz?

Cara, me tira uma dúvida, estou usando o cewolf e tudo está funcionando legalzinho, mas aí, gostaria de sabercomo eu faço pra setar as cores da legenda com as mesmas cores que eu seto no chart.

O chart abre com as cores default, que é muito legal, mas se eu seto o chart para as barras ficarem azuis, por exemplo, a legenda não assume essa configuração. Já fiz algumas tentativas, mas não consegui descobrir como fazer as cores ficarem iguais, tanto em um qto no outro.

Pra esclarecer mais:

Tenho 4 barras, carros, caminhões, motos e picapes. Logo, a legenda vai plotar os mesmos itens, certo? Sendo assim, as cores default seriam para ambos vermelho, azul, verde e amarelo.

Eu consido setar as barras para ficarem todas azuis ou qq outra cor que eu queira, mas não estou conseguindo fazer o mesmo com a legenda. Poderia me mostrar um exemplo de como fazê-lo?

Desde já agradeço sua atenção.

1 abc

Criado 11 de maio de 2006
Ultima resposta 7 de out. de 2010
Respostas 15
Participantes 4