How to pass the contents of a composite object to a DynamicReports column. being that the DataSource is a list of this object

2

I'm making a report using DynamicReports

For this I am passing a list to be used as DataSource

List<VisaoViagemQuadroMensal> linhas = new ArrayList<VisaoViagemQuadroMensal>();

where:

public class VisaoViagemQuadroMensal {

    public Linha linha;
    public List<VisaoViagemHorario> horarios;
    // get and set
}

public class Linha {

    private String linha;
    private String descricao;
    private Localidade localidadeDeOrigem;
    private Localidade lovalidadeDeDestino;
    // get and set
}

public class VisaoViagemHorario {
    protected HorarioDaViagem horario;
    protected Sentido sentido;
    protected List<Seccao> seccao;
    protected float km1;
    protected float km2;
    protected float km3;
    protected float kmReal;
    // get and set
}

The question is: When I create the TextColumnBuilder object, how do I enter the description of the Line? Something like:     lines.get (0) .getLine (). getDescription ();

Below I create the report

protected JasperReportBuilder gerarRelatorio(Collection dataSource, String path, Map parametros) {
JasperReportBuilder report = DynamicReports.report();

// Nesta linha é que esta a duvida
TextColumnBuilder<String> colDescricao  = col.column("Descricao da Linha","???????????", type.stringType() ).setFixedWidth(40);

ImageBuilder imagemLogo = cmp.image( getClass().getResource("/imagens/logoFundoAzul.png") ).setFixedDimension(140, 28);
VerticalListBuilder listParametros = montaParametros(parametros); 

report
  .setPageFormat(PageType.A4, PageOrientation.LANDSCAPE)
  .setPageMargin(margin(20))
  .title(cmp.text("Parametros").setStyle(Estilos.CABECALHO_COLUNA_ESQUERDA.getEstilo()) , listParametros)
  .pageHeader( cmp.horizontalList( imagemLogo, cmp.text("Quadro Demonstrativo por Linhas").setStyle(Estilos.LABEL_TITULO.getEstilo()))).setPageHeaderStyle(Estilos.CABECALHO_PAGINA.getEstilo())
  .pageFooter(cmp.text("www.transportesalvorada.com.br").setStyle(Estilos.LABEL_RODAPE.getEstilo())).setPageFooterStyle(Estilos.CABECALHO_PAGINA.getEstilo())

  .setColumnTitleStyle(Estilos.CABECALHO_COLUNA_ESQUERDA.getEstilo())

  .detail()
     .columns(colDescricao.setStyle(Estilos.LINHA_TOPO.getEstilo())  )
     .highlightDetailEvenRows()

   .setDataSource(new JRBeanCollectionDataSource(dataSource));

    //report = report.addProperty(JasperProperty.EXPORT_XLS_FREEZE_ROW, "2");
return report;

}
    
asked by anonymous 15.01.2015 / 21:38

1 answer

1

Whoever interests, after much testing and analyzing the source, I did like the JSF EL, I removed the get while mounting the column object.

Where in Java do this:

linhas.get(0).getLinha().getLinha();
linhas.get(0).getLinha().getDescricao();

In TextColumnBuilder I do this:

linha.linha
linha.descricao

Looking like this:

TextColumnBuilder<String> colLinhaCodigo    = col.column("Linha"      ,"linha.linha"    , type.stringType() ).setFixedWidth(30);
TextColumnBuilder<String> colLinhaDescricao = col.column("Descrição"  ,"linha.descricao"    , type.stringType() ).setFixedWidth(100);
    
16.01.2015 / 17:01