Passar uma lista do XHTML para um ManagedBean

1 resposta
kiwoxox

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

1 Resposta

kiwoxox

Alguem???

Criado 11 de janeiro de 2012
Ultima resposta 12 de jan. de 2012
Respostas 1
Participantes 1