Olá pessoal.
Estou com o seguinte problema. Estou tentando gerar um gráfico em Java utilizando o Cewolf com os resultados obtidos através de um select no banco de dados.
Acontece que tenho 2 arquivos Java, o primeiro é o Servlet que faz a consulta no banco, o segundo é a classe que gera o gráfico.
Alguém sabe me dizer como eu passo uma variável de um select no primeiro arquivo Java para o segundo que gera o gráfico?
Segue os códigos abaixo:
Código do Servlet
package gera_grafico;
import java.sql.*;
import javax.servlet.*;
import javax.servlet.http.*;
import java.text.*;
import java.io.*;
import java.util.*;
public class Consulta extends HttpServlet {
public void doPost ( HttpServletRequest request, HttpServletResponse response ) throws ServletException, IOException
{
String datainicial = request.getParameter ("DATA_INICIAL");
String datafinal = request.getParameter ("DATA_FINAL");
String nrpip = request.getParameter ("NRP_IP");
//}
//public static void main(String args[])
//{
// A captura de exceções SQLException em Java é obrigatória para usarmos JDBC.
// Para termos acesso ao objeto con, ele deve ter um escopo mais amplo que o bloco try
Connection connection = null;
ResultSet tabela = null;
Statement instrucao = null;
try
{
// Carregando o JDBC Driver
String driverName = "org.gjt.mm.mysql.Driver"; // MySQL MM JDBC driver
Class.forName(driverName);
// Criando a conexão com o Banco de Dados
String serverName = "x.x.x.x";
String mydatabase = "nrp";
String url = "jdbc:mysql://" + serverName + "/" + mydatabase; // a JDBC url
String username = "x";
String password = "x";
connection = DriverManager.getConnection(url, username, password);
instrucao = connection.createStatement(ResultSet.TYPE_SCROLL_SENSITIVE, ResultSet.CONCUR_UPDATABLE);
String q="select * from erros_nrp where data >= '"+datainicial+"' and data <= '"+datafinal+"' and nrp_ip = '"+nrpip+"'";
tabela = instrucao.executeQuery(q);
response.setContentType( "text/html" );
PrintWriter responseOutput = response.getWriter();
StringBuffer buf = new StringBuffer();
buf.append("<HTML>");
buf.append("<CENTER>");
buf.append("<TABLE BORDER=10 CELLPADDING=5><TR>");
buf.append("<th bgcolor=Green>DATA</th><th bgcolor=White>NRP_IP</th><th bgcolor=Red>ERROS</th></TR>");
int conta_erros = 0;
while (tabela.next()) {
buf.append("<TR>");
buf.append("<TD>"+tabela.getString(1)+"</TD>");
buf.append("<TD>"+tabela.getString(2)+"</TD>");
buf.append("<TD>"+tabela.getString(3)+"</TD>");
conta_erros=conta_erros + tabela.getInt(3);
buf.append("</TR>"); }; //fim do while
buf.append("<TR>");
buf.append("<TD>TOTAL DE ERROS</TD>");
buf.append("<TD></TD>");
buf.append("<TD>"+conta_erros+"</TD>");
buf.append("</TR>");
buf.append("</TABLE>");
buf.append("<hr>");
buf.append("</CENTER></HTML>");
responseOutput.println( buf.toString() );
responseOutput.close();
} catch (ClassNotFoundException e)
{
//Driver não encontrado
System.out.println("O driver expecificado não foi encontrado.");
} catch (SQLException e)
{
//Não está conseguindo se conectar ao banco
System.out.println("Não foi possível conectar ao Banco de Dados");
}
}
}
Código que gera o gráfico. Observe, as variáveis (data por exemplo) estão com valores fixos, é aí que preciso colocar a variável da consulta sql que fiz.
package gera_grafico;
import java.util.Date;
import java.util.Map;
import java.io.Serializable;
import org.jfree.data.category.CategoryDataset;
import org.jfree.data.category.DefaultCategoryDataset;
import de.laures.cewolf.DatasetProduceException;
import de.laures.cewolf.DatasetProducer;
public class GraficoLinha implements DatasetProducer, Serializable {
public final String[] data = {"28/12/2004","29/12/2004","30/12/2004","31/12/2004","01/01/2005"};
public final String[] nrp = {"123.456.123.456","321.654.321.654"};
public Object produceDataset(Map params) throws DatasetProduceException {
DefaultCategoryDataset dataset = new DefaultCategoryDataset();
for (int a=0; a<nrp.length; a++){
int valor= (int)(Math.random() * 1000 + 1000);
for (int i=0; i<data.length; i++){
final int y = valor + (int)(Math.random() * 200 - 100);
valor = y;
dataset.addValue((double)y, nrp[a], data[i]);
}
}
return dataset;
}
public boolean hasExpired(Map params, Date since){
return (System.currentTimeMillis() - since.getTime()) > 5000;
}
public String getProducerId(){
return "PageViewCountData DatasetProducer";
}
}
