Relatórios + JSF + Design Pattern

Olá, galera esse é o meu primeiro post no GUJ, algum tempo acompanho o forum, como visitante, agora resolvi me registrar para postar a primeira pergunta.

Trabalho com Java há pouco tempo, cerca de 1 ano, mas leio bastante, sobre OO, e sobre DesignPatterns, então me surgiu a seguinte dúvida;

Atualmente estou desenvolvendo com JSF, e surgiu a necessidade de fazer Relatorios, onde o Cliente exigiu relatorios em .pdf, e. html, podendo escolher no momento da geração o tipo que ele quer;

Como o relatorio depende da Camada de Apresentação, pois tenho que pegar o FacesContext, o Reponse, o ServletContext, etc, criei os metodos dentro do meu ManagedBean, o problema é que o mesmo ficou muito “poluido”, tentei então criar uma classe auxiliar chamada GenereateReports com dois metodos staticos onde eu passo os parametros da camada de apresentação para ela, e ela faz o trabalho de geração do relatorio.

Mas isso muito procedural um classe cheia de métodos staticos, entretanto não encontrei solução melhor.

Existe alguma solução melhor, para se trabalhar com relatórios?

Valeu

BIRT?
Jasper?

Olá, estou utiilizando JasperReport!

[b]Olá ravisantos!
Tudo certo?
Vc pode postar essa classe GenereateReports?
E uma chamada dela?

Estou com algumas dificuldade com relatorios…
E preciso criar um relatorio em .pdf…
Se puder me ajudar…

Valeuuuu!!![/b]