Estou tentando colocar horas no Eixo x desse gráfico. Mas não funciona. Quando uso double tenho gráfico da imagem, mas quando uso Sql.Time o gráfico simplesmente não funciona.
É possível colocar horas em um dos eixos de um Chart Line?
Ex: (25,21:35)
O problema não seria só converter a Data de SQL.TIME Para Java.DATE? ou TIME? já tive esse problema mais não com gráficos tive que converter a Data para enviar para funcionar corretamente talvez seja esse o caso.
Olá, obrigado la resposta.
Eu simplesmente não preciso da data. O tipo date não parece ser a solução. O tipo time do Java não é exatamente o Sql.Time?
O Construtor ou método aonde passa a data espera o que ? pode postar mais informações uma parte do código.
É um gráfico Chart Line, o construtor espera pontos, quanto uso int ou double funciona.
posta o código.
package br.com.auttec.monitora.bean;
import javax.annotation.PostConstruct;
import java.io.Serializable;
import java.sql.Time;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.context.FacesContext;
import org.primefaces.model.chart.Axis;
import org.primefaces.model.chart.AxisType;
import org.primefaces.model.chart.DateAxis;
import org.primefaces.model.chart.LegendPlacement;
import org.primefaces.model.chart.LineChartModel;
import org.primefaces.model.chart.CategoryAxis;
import org.primefaces.model.chart.LineChartModel;
import org.primefaces.model.chart.CartesianChartModel;
import org.primefaces.model.chart.ChartSeries;
import org.primefaces.model.chart.LineChartSeries;
import java.io.IOException;
import java.text.DateFormat;
import java.text.SimpleDateFormat;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import br.com.auttec.monitora.dao.GraficoCrudAnnotations;
import br.com.auttec.monitora.dao.ReservatorioCrudAnnotations;
import br.com.auttec.monitora.regraNegocio.Grafico;
import br.com.auttec.monitora.regraNegocio.Reservatorio;
import br.com.auttec.monitora.regraNegocio.Grafico;
@ManagedBean
public class ChartView implements Serializable {
private Grafico grafico = new Grafico();
private GraficoCrudAnnotations graficoDAO = new GraficoCrudAnnotations();
private List<Grafico> listaGrafico = new ArrayList<>();
private List<Grafico> listaGraficoFinal = new ArrayList<>();
private Reservatorio reservatorio = new Reservatorio();
private Reservatorio reservatorio1 = new Reservatorio();
private List<Reservatorio> listaReservatorio = new ArrayList<>();
private ReservatorioCrudAnnotations reservatorioDAO = new ReservatorioCrudAnnotations();
private Date data;
private LineChartModel lineModel1;
private GraficoBean Gb = new GraficoBean();
@PostConstruct
public void init() {
LinearModel();
}
public LineChartModel getLineModel1() {
return lineModel1;
}
private List<Grafico> Grafico = new ArrayList<>();
public List<Grafico> getGrafico() {
return Grafico;
}
public void setGrafico(List<Grafico> grafico) {
Grafico = grafico;
}
public void refreshChart() {
GraficoBean Gb = new GraficoBean();
Gb.gerarGrafico();
}
private void createLineModels() {
System.out.println("createLineModels()");
lineModel1 = (LineChartModel) LinearModel();
lineModel1.setTitle("Gráfico de Reservatório");
lineModel1.setLegendPosition("e");
Axis yAxis = lineModel1.getAxis(AxisType.Y);
yAxis.setLabel("Nível");
yAxis.setMin(0);
yAxis.setMax(100);
Axis xAxis = lineModel1.getAxis(AxisType.X);
xAxis.setLabel("Hora do dia");
xAxis.setMin(0);
xAxis.setMax(23);
xAxis.setTickInterval("1");
}
public CartesianChartModel LinearModel() {
LineChartModel model = new LineChartModel();
LineChartSeries series1 = new LineChartSeries();
// try{
// if(series1.getLabel().equalsIgnoreCase("Nivel"))
// {
// System.out.println("já existe legenda");
//
// }
// }
//
// catch(Exception e){
//
//
//
try{
LegendPlacement OUTSIDE=LegendPlacement.OUTSIDE;
series1.set(0, 0);
//series1.set(0, 0);
//model.addSeries(series1);
series1.setLabel("Nível");
series1.setFill(true);
lineModel1 =(LineChartModel) model;
//lineModel1.setSeriesColors("58BA27,FFCC33,F74A4A,F52F2F,A30303");
//lineModel1.setExtender("chartExtender");
lineModel1.setTitle("Gráfico de Reservatório");
lineModel1.setLegendPlacement(OUTSIDE);
lineModel1.setLegendPosition("e");
Axis yAxis = lineModel1.getAxis(AxisType.Y);
yAxis.setMin(0);
yAxis.setMax(100);
yAxis.setLabel("Nível");
Axis xAxis = lineModel1.getAxis(AxisType.X);
xAxis.setLabel("Hora do dia");
xAxis.setMin(0);
xAxis.setMax(23);
xAxis.setTickInterval("1");
int nivel;
System.out.println("AQUI:: "+listaReservatorio.size());
try
{
System.out.println("Id do reservatorio: "+reservatorio.getIdReservatorio());
DateFormat dataFormatada = new SimpleDateFormat("dd/MM/yyyy");
for (int i = 0; i < listaReservatorio.size(); i++) {
if (listaReservatorio.get(i).getIdReservatorio() == reservatorio
.getIdReservatorio()) {
reservatorio1 = listaReservatorio.get(i);
}
}
System.out.println("graficoDAO: "+graficoDAO.listar().size());
listaGrafico = graficoDAO.listar();
System.out.println("Meu reservatorio: "+reservatorio1.getNomeReservatorio());
String date;
for (int i = 0; i < listaGrafico.size(); i++) {
date = listaGrafico.get(i).getData().substring(0, 10);
if ((listaGrafico.get(i).getReservatorio().getIdReservatorio() == reservatorio1.getIdReservatorio()) && (dataFormatada.format(data).equalsIgnoreCase(date)) ) {
System.out.println("Dentro do IF: "+i);
listaGraficoFinal.add(listaGrafico.get(i));
System.out.println("Dentro do IF");
}
}
System.out.println("Lista Grafico final size: "+ listaGraficoFinal.size());
}catch(Exception e)
{
System.out.println("É NULA: "+e.getCause());
e.printStackTrace();
listaGraficoFinal=null;
}
System.out.println("InitLinear aqui");
if (listaGraficoFinal != null) {
System.out.println("AQUI O QUE INTERESSA Não é null");
try {
System.out.println("Tamanho:" + listaGraficoFinal.size());
for (int i = 23; i >= 0; i--) {
//System.out.println("Nivel: " + listaGraficoFinal.get(i).getNivel());
//System.out.println("Data: "
// + listaGraficoFinal.get(i).getData().substring(11, 13));
double x =listaGraficoFinal.get(i).getNivel();
String y =(listaGraficoFinal.get(i).getHora());
////////////////////////////////////////////////////////////
SimpleDateFormat formatador = new SimpleDateFormat("HH:mm");
Date data = formatador.parse(y);
Time horaR = new Time(data.getTime());
System.out.println("HORA="+horaR);
///////////////////////////////////////////////////////////
series1.set(horaR,x);
}
//series1.set(20, 20);
} catch (Exception e) {
System.out.println("Erro aqui 1: " + e.getCause());
System.out.println("Erro 2: ");
e.printStackTrace();
//FacesContext.getCurrentInstance().addMessage(null,new FacesMessage("Não existe informação o suficiente no banco para gerar o gráfico."));
}
} else {
System.out.println("Aqui é null");
series1.set(0, 0);
series1.set(0, 0);
}
}catch(Exception e){
FacesContext
.getCurrentInstance()
.addMessage(
null,
new FacesMessage(
"Selecione uma data em que exista informação."));
}
model.addSeries(series1);
return model;
}
public GraficoCrudAnnotations getGraficoDAO() {
return graficoDAO;
}
public void setGraficoDAO(GraficoCrudAnnotations graficoDAO) {
this.graficoDAO = graficoDAO;
}
public List<Grafico> getListaGrafico() {
return listaGrafico;
}
public void setListaGrafico(List<Grafico> listaGrafico) {
this.listaGrafico = listaGrafico;
}
public List<Grafico> getListaGraficoFinal() {
return listaGraficoFinal;
}
public void setListaGraficoFinal(List<Grafico> listaGraficoFinal) {
this.listaGraficoFinal = listaGraficoFinal;
}
public Reservatorio getReservatorio() {
return reservatorio;
}
public void setReservatorio(Reservatorio reservatorio) {
this.reservatorio = reservatorio;
}
public Reservatorio getReservatorio1() {
return reservatorio1;
}
public void setReservatorio1(Reservatorio reservatorio1) {
this.reservatorio1 = reservatorio1;
}
public List<Reservatorio> getListaReservatorio() {
return listaReservatorio=reservatorioDAO.listar();
}
public void setListaReservatorio(List<Reservatorio> listaReservatorio) {
this.listaReservatorio = listaReservatorio;
}
public ReservatorioCrudAnnotations getReservatorioDAO() {
return reservatorioDAO;
}
public void setReservatorioDAO(ReservatorioCrudAnnotations reservatorioDAO) {
this.reservatorioDAO = reservatorioDAO;
}
public Date getData() {
return data;
}
public void setData(Date data) {
this.data = data;
}
public void setGrafico(Grafico grafico) {
this.grafico = grafico;
}
@Override
public int hashCode() {
final int prime = 31;
int result = 1;
result = prime * result + ((Gb == null) ? 0 : Gb.hashCode());
result = prime * result + ((Grafico == null) ? 0 : Grafico.hashCode());
result = prime * result + ((data == null) ? 0 : data.hashCode());
result = prime * result + ((grafico == null) ? 0 : grafico.hashCode());
result = prime * result
+ ((graficoDAO == null) ? 0 : graficoDAO.hashCode());
result = prime * result
+ ((listaGrafico == null) ? 0 : listaGrafico.hashCode());
result = prime
* result
+ ((listaGraficoFinal == null) ? 0 : listaGraficoFinal
.hashCode());
result = prime
* result
+ ((listaReservatorio == null) ? 0 : listaReservatorio
.hashCode());
result = prime * result
+ ((reservatorio == null) ? 0 : reservatorio.hashCode());
result = prime * result
+ ((reservatorio1 == null) ? 0 : reservatorio1.hashCode());
result = prime * result
+ ((reservatorioDAO == null) ? 0 : reservatorioDAO.hashCode());
return result;
}
@Override
public boolean equals(Object obj) {
if (this == obj)
return true;
if (obj == null)
return false;
if (getClass() != obj.getClass())
return false;
ChartView other = (ChartView) obj;
if (Gb == null) {
if (other.Gb != null)
return false;
} else if (!Gb.equals(other.Gb))
return false;
if (Grafico == null) {
if (other.Grafico != null)
return false;
} else if (!Grafico.equals(other.Grafico))
return false;
if (data == null) {
if (other.data != null)
return false;
} else if (!data.equals(other.data))
return false;
if (grafico == null) {
if (other.grafico != null)
return false;
} else if (!grafico.equals(other.grafico))
return false;
if (graficoDAO == null) {
if (other.graficoDAO != null)
return false;
} else if (!graficoDAO.equals(other.graficoDAO))
return false;
if (listaGrafico == null) {
if (other.listaGrafico != null)
return false;
} else if (!listaGrafico.equals(other.listaGrafico))
return false;
if (listaGraficoFinal == null) {
if (other.listaGraficoFinal != null)
return false;
} else if (!listaGraficoFinal.equals(other.listaGraficoFinal))
return false;
if (listaReservatorio == null) {
if (other.listaReservatorio != null)
return false;
} else if (!listaReservatorio.equals(other.listaReservatorio))
return false;
if (reservatorio == null) {
if (other.reservatorio != null)
return false;
} else if (!reservatorio.equals(other.reservatorio))
return false;
if (reservatorio1 == null) {
if (other.reservatorio1 != null)
return false;
} else if (!reservatorio1.equals(other.reservatorio1))
return false;
if (reservatorioDAO == null) {
if (other.reservatorioDAO != null)
return false;
} else if (!reservatorioDAO.equals(other.reservatorioDAO))
return false;
return true;
}
}