Você está na página 1de 8

02/05/2016

TutorialJasperReportsIReports

TutorialJasperReportsIReports
Utilizandolista(ArrayList)deVOs(ValueObject)comoDataSourceparaoRelatrio
OlJaveiros!
EuestavacomumadificuldadeenormeparatrabalharcomArrayListdeVOs(ValueObjects)comumatributoArrayListpara
alimentarumrelatrio.
Oproblemaeraoseguinte:montarumrelatrioatravsdeumArrayListdeVOsdeAluno(verlistagem1)quetemumArrayListde
VOsdeDisciplina(verlistagem2),sendoumalunoporpgina.
Listagem1
packagevo
importjava.io.Serializable
importjava.util.ArrayList
/**
*@authorRJFurutani
*@04/05/2005
*/
publicclassAlunoimplementsSerializable{
privateStringnome
privateStringcurso
privateArrayListdisciplinas
/**
*@paramnome
*@paramcurso
*@paramdisciplinas
*/
publicAluno(Stringnome,Stringcurso,ArrayListdisciplinas){
super()
this.nome=nome
this.curso=curso
this.disciplinas=disciplinas
}
/**
*@returnReturnsthecurso.
*/
publicStringgetCurso(){
returncurso
}
/**
*@paramcursoThecursotoset.
*/
publicvoidsetCurso(Stringcurso){
this.curso=curso
}
/**
*@returnReturnsthedisciplinas.
*/
publicArrayListgetDisciplinas(){
returndisciplinas
}
/**
*@paramdisciplinasThedisciplinastoset.
*/
publicvoidsetDisciplinas(ArrayListdisciplinas){
this.disciplinas=disciplinas
}
/**
*@returnReturnsthenome.
*/
publicStringgetNome(){
returnnome
}
/**
*@paramnomeThenometoset.
*/
publicvoidsetNome(Stringnome){
this.nome=nome
}
}

Listagem2
packagevo
importjava.io.Serializable
/**

http://www.furutani.com.br/tutoriais/Tutorial_JasperReports/

1/8

02/05/2016

TutorialJasperReportsIReports

*@authorRJFurutani
*@04/05/2005
*/
publicclassDisciplinaimplementsSerializable{

/**
*@paramnome
*@paramcargaHoraria
*/
publicDisciplina(Stringnome,StringcargaHoraria){
super()
this.nome=nome
this.cargaHoraria=cargaHoraria
}
/**
*@returnReturnsthecargaHoraria.
*/
publicStringgetCargaHoraria(){
returncargaHoraria
}
/**
*@paramcargaHorariaThecargaHorariatoset.
*/
publicvoidsetCargaHoraria(StringcargaHoraria){
this.cargaHoraria=cargaHoraria
}
/**
*@returnReturnsthenome.
*/
publicStringgetNome(){
returnnome
}
/**
*@paramnomeThenometoset.
*/
publicvoidsetNome(Stringnome){
this.nome=nome
}
privateStringnome
privateStringcargaHoraria
}
DepoisdeumtempopesquisandoeperguntandonoGUJ,JavaFree,nalistaenterpriselist@soujava.dev.java.neteusandoo
Googleacheiessevideohttp://ireport.sourceforge.net/swf/Subreport_viewlet_swf.htmquemedeuumaluzevoutentarpassarde
formamaisobjetivaasoluoqueeuencontrei.
EuvouconsiderarqueoleitorjtenhaalgumaexperinciacomoiReportseoJasperReports.Novouentraremmuitosdetalhesde
design.
Primeirovamoscriarorelatrioprincipal,nelevamosporosfieldsnomedoalunoeocursoqueelefazeabaixovaificaro
subrelatrio.

Aferramentaparaadicionarosubrelatrioestnabarradeferramentas:

Cliquenoiconedestacadoedesenheelecomonafiguraanterior.
Agoravamoscriarosubrelatrio,essebemmaissimples.

http://www.furutani.com.br/tutoriais/Tutorial_JasperReports/

2/8

02/05/2016

TutorialJasperReportsIReports

nosubrelatrioosfieldssoesses:

Notemnadademais.
Agoravamosaosfieldsdorelatrioprincipal.

Ofieldnomeecursosoparaoprpriorelatrioprincipal,ofieldListaDisciplinasoquevaiserpassadoparaosubrelatrio,
reparemqueeledotipoObject.
Ecomoparmetroorelatrioprincipalrecebeocaminhodosubrelatriocompilado(.jasper).

Agoravamosnaspropriedadesdosubrelatrioquefoiadicionadonorelatrioprincipal.Dumduplocliqueneleevamosas
configuraes.

http://www.furutani.com.br/tutoriais/Tutorial_JasperReports/

3/8

02/05/2016

TutorialJasperReportsIReports

NaabaSubreportselecioneUsedatasourceexpressionedigite$F{ListaDisciplinas},essenomedeveserigualaoinformadono
field.

Cliquenaabasubreport(other)econfigureconformemostraafigura.

http://www.furutani.com.br/tutoriais/Tutorial_JasperReports/

4/8

02/05/2016

TutorialJasperReportsIReports

ComoestamostrabalhandocomVOonomedosfieldsdevecoincidircomonomedosatributosdasclassesVO(Alunoe
Disciplina).

ComlayoutfeitopodemosirparaodesenvolvimentodaclasseDataSource.EuvouchamaraquiderelatrioAlunosDataSource.
umaclassequeimplementaainterfaceJRDataSource,entodevemosimplementarobrigatoriamentedoismtodosonext()e
getFieldValue().
Omtodonext()retornaumboolean,truesehouvermaisAlunonaArrayListoufalsesenotivermais.
valorAtual=itrAlunos.hasNext()?itrAlunos.next():null
irParaProximoAluno=(valorAtual!=null)
returnirParaProximoAluno
OmtodogetFieldValue()recebeumparmetroJRField,atravsdesseparmetronspodemossaberqualfieldoJasperReportsest
pedindoprapornorelatrio.
Objectvalor=null
Alunoaluno=(Aluno)valorAtual
if("nome".equals(campo.getName())){
valor=aluno.getNome()
}elseif("ListaDisciplinas".equals(campo.getName())){
valor=newJRBeanCollectionDataSource(aluno.getDisciplinas())
}elseif("curso".equals(campo.getName())){
valor=aluno.getCurso()
}
ObserverquequandosolicitadoofieldListaDisciplinasnsdevolvemosumJRBeanCollectionDataSourceinstanciadocoma
ArrayListdeDisciplinadoAluno.LembraquenaconfiguraodosfieldsdorelatrioprincipalnscolocamosListaDisciplinasdotipo
Object,foijustamenteporessemotivo.
Chegouahoradecriaraclasseprincipal
packagejasper
importjava.util.ArrayList
importjava.util.HashMap
importjava.util.Map
importnet.sf.jasperreports.engine.JasperFillManager
importnet.sf.jasperreports.engine.JasperPrint
importnet.sf.jasperreports.view.JasperViewer
publicclassGerarelatrio{
privatestaticfinalStringrel1="RelAlunos.jasper"
privatestaticfinalStringrel2="jasper/RelAlunosDisciplinas.jasper"

http://www.furutani.com.br/tutoriais/Tutorial_JasperReports/

5/8

02/05/2016

TutorialJasperReportsIReports

publicGerarelatrio()throwsException{
//Listadosalunos
ArrayListlistaAlunos=GerarDadosFicticios.getListaAlunos()
//Criaodatasourceparaorelatrio
relatrioAlunosDataSourceds=newrelatrioAlunosDataSource(
listaAlunos)
//parmetrosdorelatrio
Mapparmetros=newHashMap()
parmetros.put("pathSubRel",rel2)

JasperPrintimpressao=JasperFillManager.fillReport(getClass()
.getResourceAsStream(rel1),parmetros,ds)
//exibeorelatrio
JasperViewerviewer=newJasperViewer(impressao,true)
viewer.show()
}
publicstaticvoidmain(String[]args)throwsException{
newGerarelatrio()
}
}
ParacriardadosficticiosusadosparatestarorelatriofoicriadoaclasseGerarDadosFicticios
packagejasper
importjava.util.ArrayList
importvo.Aluno
importvo.Disciplina
/**
*@authorRJFurutani
*@04/05/2005
*/
publicclassGerarDadosFicticios{
publicstaticArrayListgetListaAlunos(){

ArrayListlistaAlunos=newArrayList()
ArrayListdisciplinas=null

Disciplinadisciplina1=null
Disciplinadisciplina2=null
Disciplinadisciplina3=null
Disciplinadisciplina4=null
/*
*AlunoRoberto
*/
disciplina1=newDisciplina("BancodeDadosI","45Hs")
disciplina2=newDisciplina("EquaesDiferenciaisI","50Hs")
disciplina3=newDisciplina("AlgoritmoseEstruturadeDadosI",
"60Hs")
disciplinas=newArrayList()
disciplinas.add(disciplina1)
disciplinas.add(disciplina2)
disciplinas.add(disciplina3)
Alunoroberto=newAluno("RobertoFurutani","CienciadaComputacao",
disciplinas)
listaAlunos.add(roberto)
/*
*AlunaFernanda
*/
disciplina1=newDisciplina("Biologia","45Hs")
disciplina2=newDisciplina("MatematicaElementarII",
"30Hs")
disciplina3=newDisciplina(
"InstrumentaoCirurgica","70Hs")
disciplinas=newArrayList()
disciplinas.add(disciplina1)
disciplinas.add(disciplina2)
disciplinas.add(disciplina3)
Alunofernanda=newAluno("FernandaFernandes",
"Enfermagem",disciplinas)
listaAlunos.add(fernanda)
/*
*AlunaSilvia
*/
disciplina1=newDisciplina("Fisica","45Hs")

http://www.furutani.com.br/tutoriais/Tutorial_JasperReports/

6/8

02/05/2016

TutorialJasperReportsIReports

disciplina4=newDisciplina("Quimica","45Hs")
disciplina2=newDisciplina("EquaesDiferenciaisII",
"50Hs")
disciplina3=newDisciplina(
"Ingls","60Hs")
disciplinas=newArrayList()
disciplinas.add(disciplina1)
disciplinas.add(disciplina2)
disciplinas.add(disciplina3)
disciplinas.add(disciplina4)

Alunosilvia=newAluno("SilviadaSilva","Matemtica",
disciplinas)
listaAlunos.add(silvia)
/*
*AlunoAndr
*/
disciplina1=newDisciplina("BancodeDadosII","65Hs")
disciplina2=newDisciplina("CalculoNumericoI",
"50Hs")
disciplina3=newDisciplina(
"EletronicaI","60Hs")
disciplinas=newArrayList()
disciplinas.add(disciplina1)
disciplinas.add(disciplina2)
disciplinas.add(disciplina3)
Alunoandre=newAluno("AndrOliveiraLima","EngenhariadaComputacao",
disciplinas)
listaAlunos.add(andre)
returnlistaAlunos
}
}
Orelatriovaificarassim:

issoai!!!Esperoterajudadoalgumcomessehumildetutorial.
Referncias:

http://www.furutani.com.br/tutoriais/Tutorial_JasperReports/

7/8

02/05/2016

TutorialJasperReportsIReports

Downloaddosfonte
GUJwww.guj.com.br(http://www.guj.com.br/posts/list/23830.java)
JavaFreewww.javafree.com.br
ListaEnterpriseenterpriselist@soujava.dev.java.net
DocsiReporthttp://ireport.sourceforge.net/docs.html
VideosiReporthttp://ireport.sourceforge.net/swf/
RelatrioscomHibernatehttp://www.hibernate.org/79.html
TutorialRelatrioscomJasperReportseiReportswww.furutani.eti.br

http://www.furutani.com.br/tutoriais/Tutorial_JasperReports/

8/8

Você também pode gostar