Bom dia, estou com o seguinte problema…
Meu documento faz o upload de um arquivo *.XLS… após fazer o upload eu atualizo ele em um DataTable utilizando PrimeFaces 3.0… até ai ok…
Porém eu gostaria de passar essa mesma lista com os dados que eu peguei do arquivo e passar ele para a geração de um gráfico que está contido em outra classe…
Gostaria de saber como poderia passar essa lista preenchida do XHTML para o Bean ou se havia algum outro modo de fazer essa passagem…
No caso gostaria que o método getLista do CriaGráfico.java recebesse a lista…
Ou chamar o Próprio Método criaGraficoDispersao também poderia receber a lista…
Arquivo XHTML
<?xml version='1.0' encoding='UTF-8' ?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml"
xmlns:h="http://java.sun.com/jsf/html"
xmlns:f="http://java.sun.com/jsf/core"
xmlns:p="http://primefaces.org/ui">
<h:head>
<title>Facelet Title</title>
</h:head>
<h:body>
<h:form enctype="multipart/form-data">
<p:fileUpload id="fileupload" fileUploadListener="#{ConverteModVariaveis.CriaLista}" widgetVar="fileupload"
label="Selecionar" uploadLabel="Enviar" cancelLabel="Cancelar"
update="growl,DTVariaveis,MediaTeste,EnviaDadosGrafico" mode="advanced" />
<p:growl id="growl" showDetail="true" life="3000"/>
<p:dataTable id="DTVariaveis" var="DTVvalor" value="#{ConverteModVariaveis.lista}">
<p:column>
<f:facet name="header">
<h:outputText value="Posição" />
</f:facet>
<h:outputText value="#{DTVvalor.posicao}" />
</p:column>
<p:column>
<f:facet name="header">
<h:outputText value="Média" />
</f:facet>
<h:outputText value="#{DTVvalor.media}" />
</p:column>
<p:column>
<f:facet name="header">
</f:facet>
<h:outputText value="#{DTVvalor.variabilidade}" />
</p:column>
</p:dataTable>
<p:lineChart value="#{CriaGraficoVMedia.planoCartesiano}" legendPosition="e"
title="Linear Chart" minY="0" maxY="10" style="height:300px"/>
</h:form>
</h:body>
</html>
Arquivo ConverteXLS.java
package controle;
import java.io.IOException;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;
import modelo.Variaveis;
import org.apache.poi.hssf.usermodel.HSSFCell;
import org.apache.poi.hssf.usermodel.HSSFRow;
import org.apache.poi.hssf.usermodel.HSSFSheet;
import org.apache.poi.hssf.usermodel.HSSFWorkbook;
import org.primefaces.event.FileUploadEvent;
import org.primefaces.model.UploadedFile;
@ManagedBean(name = "ConverteModVariaveis")
@SessionScoped
public class ConverteModVariaveis implements Serializable{
public List<Variaveis> listaVariaveis = new ArrayList<Variaveis>();
int linha;
double maximo, minimo, media,amplitude;
public List<Variaveis> getLista() {
return listaVariaveis;
}
public void setLista(List<Variaveis> list) {
this.listaVariaveis = list;
}
public void CriaLista(FileUploadEvent event) throws IOException {
FacesMessage msg = new FacesMessage("Arquivo", event.getFile().getFileName() + " foi enviado com sucesso.");
FacesContext.getCurrentInstance().addMessage(null, msg);
UploadedFile arquivo = event.getFile();
HSSFWorkbook wb = new HSSFWorkbook(arquivo.getInputstream());
HSSFSheet sh = wb.getSheetAt(0);
for (linha = sh.getFirstRowNum(); linha <= sh.getLastRowNum(); linha++) {
maximo = 0x0.0000000000001P-1022;
minimo = 0x1.fffffffffffffP+1023;
media = 0;
amplitude = 0;
HSSFRow clinha = sh.getRow(linha);
for (int coluna = clinha.getFirstCellNum(); coluna < clinha.getLastCellNum(); coluna++)
{
HSSFCell celula = clinha.getCell(coluna);
media = media + celula.getNumericCellValue();
if (celula.getNumericCellValue() > maximo)
{
maximo = celula.getNumericCellValue();
}
if (celula.getNumericCellValue() < minimo)
{
minimo = celula.getNumericCellValue();
}
}
media = media /clinha.getLastCellNum();
amplitude = maximo - minimo;
listaVariaveis.add(new Variaveis(linha+1, media, amplitude,false));
}
}
}
Arquivo CriaGrafico.java
package controle;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.List;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import modelo.PontoCartesiano;
import modelo.Variaveis;
import controle.ConverteModVariaveis;
import org.primefaces.model.chart.CartesianChartModel;
import org.primefaces.model.chart.LineChartSeries;
@ManagedBean(name = "CriaGraficoVMedia")
@SessionScoped
public class GraficoVMedia implements Serializable {
private CartesianChartModel planoCartesianoLinear;
private List<Variaveis> listaV = new ArrayList<Variaveis>();
private ConverteModVariaveis TesteParametro = new ConverteModVariaveis();
private Variaveis auxV = new Variaveis();
public GraficoVMedia() {
criaGraficoDispersao();
}
public CartesianChartModel getPlanoCartesiano() {
return planoCartesianoLinear;
}
private void populaLista (List<PontoCartesiano> list,int size) {
for(int i = 0 ; i < size ; i++)
list.add(new PontoCartesiano(i,2.0,3.0,4.0,5.0));
}
public List<Variaveis> getLista(){
return listaV;
}
public void setLista(List<Variaveis> listaV){
this.listaV = listaV;
}
public void criaGraficoDispersao() {
planoCartesianoLinear = new CartesianChartModel();
LineChartSeries lic = new LineChartSeries();
LineChartSeries lcc = new LineChartSeries();
LineChartSeries lsc = new LineChartSeries();
LineChartSeries media = new LineChartSeries();
lic.setLabel("LIC");
lcc.setLabel("LCC");
lsc.setLabel("LSC");
media.setLabel("Media");
for (int i=0; i<listaV.size(); i++)
{
auxV = listaV.get(i);
lic.set(i, auxV.getPosicao());
lcc.set(i, auxV.getMedia());
lsc.set(i, auxV.getVariabilidade());
media.set(i, auxV.getMedia());
}
planoCartesianoLinear.addSeries(lic);
planoCartesianoLinear.addSeries(lcc);
planoCartesianoLinear.addSeries(lsc);
planoCartesianoLinear.addSeries(media);
}
}
Obrigado