Error no Dynamic Jasper/Jasper

3 respostas
A
Desculpa o encomodo, mas segue o código que eu to tentando fazer uma crosstab... quando eu mudo para o ListLayoutManager, ele gera um relatório vazio... no que eu estou errando? eu não vou usar o dynamic jasper com conexão, e sim com collection mesmo, como eu devo montar essa collection para mandar pra ele? Obrigado pela ajuda segue o código abaixo:
public class Main {

	private static Style totalHeaderStyle;
	  	private static Style colAndRowHeaderStyle;
	  	private static Style mainHeaderStyle;
	  	private static Style totalStyle;
	  	private static Style measureStyle;
	  	private static Style measureStyle2;
	  	private Style titleStyle;
	
	private void initStyles() {
		 		titleStyle =  new StyleBuilder(false)
		 			.setFont(Font.ARIAL_BIG_BOLD)
		 			.setHorizontalAlign(HorizontalAlign.LEFT)
		 			.setVerticalAlign(VerticalAlign.MIDDLE)
		 			.setTransparency(Transparency.OPAQUE)
		 			.setBorderBottom(Border.PEN_2_POINT)
		 			.build();
		 
		 		totalHeaderStyle = new StyleBuilder(false)
		 			.setHorizontalAlign(HorizontalAlign.CENTER)
		 			.setVerticalAlign(VerticalAlign.MIDDLE)
		 			.setFont(Font.ARIAL_MEDIUM_BOLD)
		 			.setTextColor(Color.BLUE)
		 			.build();
		 		colAndRowHeaderStyle = new StyleBuilder(false)
		 			.setHorizontalAlign(HorizontalAlign.LEFT)
		 			.setVerticalAlign(VerticalAlign.TOP)
		 			.setFont(Font.ARIAL_MEDIUM_BOLD)
		 			.build();
		 		mainHeaderStyle = new StyleBuilder(false)
		 			.setHorizontalAlign(HorizontalAlign.CENTER)
		 			.setVerticalAlign(VerticalAlign.MIDDLE)
		 			.setFont(Font.ARIAL_BIG_BOLD)
		 			.setTextColor(Color.BLACK)
		 			.build();
		 		totalStyle = new StyleBuilder(false).setPattern("#,###.##")
		 			.setHorizontalAlign(HorizontalAlign.RIGHT)
		 			.setFont(Font.ARIAL_MEDIUM_BOLD)
		 			.build();
		 		measureStyle = new StyleBuilder(false).setPattern("#,###.##")
		 			.setHorizontalAlign(HorizontalAlign.RIGHT)
		 			.setFont(Font.ARIAL_MEDIUM)
		 			.build();
		 
		 		measureStyle2 = new StyleBuilder(false).setPattern("#,###.##")
		 		.setHorizontalAlign(HorizontalAlign.RIGHT)
		 		.setFont(new Font(Font.MEDIUM,Font._FONT_ARIAL,false,true,false))
		 		.setTextColor(Color.RED)
		 		.build();
		 	}
	
	public static void main(String[] args) throws Exception{
		
		FastReportBuilder drb = new FastReportBuilder();
                DJCrosstab djcross = new CrosstabBuilder()
          			.setHeight(200)
          			.setWidth(500)
          			.setHeaderStyle(mainHeaderStyle)        
          			.setUseFullWidth(true)
          			.setColorScheme(DJConstants.COLOR_SCHEMA_GRAY)
          			.setAutomaticTitle(true)
          			.setCellBorder(Border.PEN_1_POINT)
          			.addRow("Product Line", "productLine", String.class.getName(),false)
          			.addColumn("State","state",String.class.getName(),false)
          			.addColumn("Branch","branch",String.class.getName(),true)
          			.addColumn("Item", "item", String.class.getName(),true)
          			.addMeasure("id",Long.class.getName(), DJCalculation.SUM , "Id", measureStyle)
          			.addMeasure("amount",Float.class.getName(), DJCalculation.SUM , "Amount", measureStyle2)
          			.setRowStyles(colAndRowHeaderStyle, totalStyle, totalHeaderStyle)
          			.setColumnStyles(colAndRowHeaderStyle, totalStyle, totalHeaderStyle)
          			.setCellDimension(34, 60)
          			.setColumnHeaderHeight(30)
          			.setRowHeaderWidth(80)
         			.build();
        
        drb.addHeaderCrosstab(djcross); //add the crosstab in the header band of the report
		DynamicReport dr = drb.build();

        JRDataSource ds = new JRBeanCollectionDataSource(TestRepositoryProducts.getDummyCollection());  
    //    JasperPrint jp = DynamicJasperHelper.generateJasperPrint(dr, new ListLayoutManager(), ds);
        JasperPrint jp = DynamicJasperHelper.generateJasperPrint(dr, new ClassicLayoutManager(), ds);

        JasperViewer.viewReport(jp);    //finally display the report report   

	}

}

o erro que está dando é o seguinte:

17/10/2010 02:19:47 ar.com.fdvs.dj.core.DynamicJasperHelper generateJasperPrint
INFO: generating JasperPrint
17/10/2010 02:19:47 ar.com.fdvs.dj.core.DynamicJasperHelper generateJasperReport
INFO: generating JasperReport
17/10/2010 02:19:47 ar.com.fdvs.dj.core.DJJRDesignHelper getNewDesign
INFO: obtaining DynamicJasperDesign instance
Exception in thread "main" ar.com.fdvs.dj.core.layout.LayoutException
	at ar.com.fdvs.dj.core.layout.AbstractLayoutManager.applyLayout(AbstractLayoutManager.java:150)
	at ar.com.fdvs.dj.core.DynamicJasperHelper.generateJasperReport(DynamicJasperHelper.java:521)
	at ar.com.fdvs.dj.core.DynamicJasperHelper.generateJasperPrint(DynamicJasperHelper.java:283)
	at ar.com.fdvs.dj.core.DynamicJasperHelper.generateJasperPrint(DynamicJasperHelper.java:236)
	at Main.main(Main.java:142)
Caused by: java.lang.NullPointerException
	at ar.com.fdvs.dj.core.layout.Dj2JrCrosstabBuilder.registerDataSet(Dj2JrCrosstabBuilder.java:273)
	at ar.com.fdvs.dj.core.layout.Dj2JrCrosstabBuilder.createCrosstab(Dj2JrCrosstabBuilder.java:169)
	at ar.com.fdvs.dj.core.layout.ClassicLayoutManager.layoutGroupCrosstabs(ClassicLayoutManager.java:601)
	at ar.com.fdvs.dj.core.layout.ClassicLayoutManager.layoutGroups(ClassicLayoutManager.java:525)
	at ar.com.fdvs.dj.core.layout.ClassicLayoutManager.startLayout(ClassicLayoutManager.java:124)
	at ar.com.fdvs.dj.core.layout.AbstractLayoutManager.applyLayout(AbstractLayoutManager.java:143)
	... 4 more

Estou tentando usar a collection que está no tutorial deles mesmo...
Por favor alguém me ajude =/
Obrigado mais uma vez pela atenção!

3 Respostas

acromo

Eu utilizo ArrayList, e não tenho problemas…

A

Qual é a estrutura desse ArrayList que vc utiliza? Vc sabe o pq de estar dando erro ao gerar um relatório crosstab no Jasper?

acromo

Então eu nunca utilizei crosstab pra falar a verdade não sei o que é se possível gostaria até de uma breve explicação.
Eu gero os meus relatórios no IReport pelo que entendi você faz de uma forma diferente não sei se pode ser isso.
Meu arrayList por exemplo poderia ser de cliente onde teria os atributos:

String nome = "";
String matricula = "";

// gets end set

Como você pode ver eu utilizo um arrayList de uma classe de modelo.

Criado 17 de outubro de 2010
Ultima resposta 17 de out. de 2010
Respostas 3
Participantes 2