Autor |
Mensagem |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 06/08/2007 15:23:35
|
valdecijunior
Equipe
Membro desde: 23/06/2007 11:56:42
Mensagens: 24
Localização: Vitoria da Conquista - Ba
Offline
|
E aí pessoal...
observei na estrutura de pacotes no NEO que tem um pacote com o nome "report". O NEO oferece alguma facilidade na geração de relatórios com o Jasper??? Se sim como utilizar essa funcionalidade?
vlw galera... fico no aguardo...
|
Valdeci Junior
MasterSoft Sistemas Ltda.
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 06/08/2007 17:01:44
|
pedro.goncalves
Equipe
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline
|
Valdeci.. oferece sim..
o controller você faz assim:
Code:
@Bean
@Controller(
path = "/modulo/relatorio/url")
public class NomedoController extends ReportController<ColetadadosFiltro> {
@Override
public IReport createReportW3academico(WebRequestContext request, Filtro command) throws Exception {
return algumService.createRelatorio(command);
}
@Override
public void filtro(WebRequestContext request, Filtro filtro) throws Exception {
super.filtro(request, filtro);
}
}
o jsp faz assim:
Code:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="n" uri="neo"%>
<%@ taglib prefix="t" uri="template"%>
<t:tela titulo="Coleta de dados">
<t:janelaFiltro>
<t:tabelaFiltro showSubmit="false">
<n:group>
<n:submit url="/modulo/relatorio/url" action="gerar">Gerar Relatório</n:submit>
</n:group>
</t:tabelaFiltro>
</t:janelaFiltro>
</t:tela>
em seguida o método que gera o report.. assim:
ai um exemplo para gerar o método.
Code:
public IReport createRelatorio(Filtro filtro) {
Report report = new Report("modulo/nomedojrxml");
report.addParameter("TITULO", "Titulo..");
report.setDataSource(((AlgumDAO) getGenericDAO()).metodoquefornecealistaparaodatasource(filtro));
return report;
}
Quando tiver tempo monto um tutorial.. mais para você ter uma idéia.. é isso ai!
teh
|
Pedro Gonçalves
http://pedrogoncalves.com.br
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 06/08/2007 18:48:13
|
valdecijunior
Equipe
Membro desde: 23/06/2007 11:56:42
Mensagens: 24
Localização: Vitoria da Conquista - Ba
Offline
|
blz cara... vou implementar aqui... valeu pela ajuda!!!
t+
|
Valdeci Junior
MasterSoft Sistemas Ltda.
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 07/08/2007 11:49:39
|
pedro.goncalves
Equipe
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline
|
Falo!
|
Pedro Gonçalves
http://pedrogoncalves.com.br
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 20/08/2007 17:19:58
|
vinicius.janones
Template
![[Avatar]](/forum/images/avatar/182be0c5cdcd5072bb1864cdee4d3d6e.jpg)
Membro desde: 25/06/2007 12:55:10
Mensagens: 105
Localização: Uberlândia - MG
Offline
|
Boa tarde,
Gostaria de saber se será feito um tutorial para a criação de relatórios no NEO?
A[]s
|
Vinícius O. Janones
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 20/08/2007 18:31:57
|
pedro.goncalves
Equipe
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline
|
Sim, será.. assim que sobrar um tempinho...
mais com o que mandei em cima já dá para fazer algo..
qualquer coisa posta ai no fórum.
[]'s
|
Pedro Gonçalves
http://pedrogoncalves.com.br
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 21/08/2007 10:50:59
|
valdecijunior
Equipe
Membro desde: 23/06/2007 11:56:42
Mensagens: 24
Localização: Vitoria da Conquista - Ba
Offline
|
E aí pedro blz...
cara, tentei implementar um teste de relatório aqui de acordo com as informações que vc passou... tive alguns problemas e queria ve contigo onde estou errando...
o erro é o seguinte:
Code:
java.lang.NoClassDefFoundError: teste/jrml_1187702249234_715645 (wrong name: teste46jrml_1187702249234_715645)
olhando o fonte do NEO o erro acontece no método public byte[] toPdf(IReport report) throws ReportException na classe br.com.linkcom.neo.report.ReportGeneratorImpl mais especificamente no momento em que ele vai preencher e exportar o relatório para Pdf
Code:
return JasperRunManager.runReportToPdf(jasperReport, allParameters, dataSource);
Achei que poderia ser algum problema de versão na compilação, visto que uso o jasperreports-1.3.4.jar e o NEO usa o jasperreports-1.2.1.jar, então eu alterei o jasper do NEO colocando a minha versão... quando fiz isso o erro anterior deixou de existir e comecou a dá outro erro
Code:
java.lang.InternalError: java.io.IOException: Stream closed
se vc quiser eu posso passar os fontes das classes...
vlw cara, fico no aguardo...
t+
|
Valdeci Junior
MasterSoft Sistemas Ltda.
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 21/08/2007 18:07:10
|
pedro.goncalves
Equipe
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline
|
Passa ai que é mais fácil...
me passa também onde que você colocou o seus arquivos... []'s
|
Pedro Gonçalves
http://pedrogoncalves.com.br
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 22/08/2007 00:53:45
|
valdecijunior
Equipe
Membro desde: 23/06/2007 11:56:42
Mensagens: 24
Localização: Vitoria da Conquista - Ba
Offline
|
fala pedro... como te falei to implementando apenas um teste então as classes não são muito significativas... segue abaixo:
classe que provê os dados para filtro:
Code:
public class ReportBean {
private List<String> strings;
private String nada;
public ReportBean() {
this.strings = new ArrayList<String>();
this.strings.add("Texto1");
this.strings.add("Texto2");
this.strings.add("Texto3");
this.strings.add("Texto4");
this.strings.add("Texto5");
this.strings.add("Texto6");
this.strings.add("Texto7");
this.strings.add("Texto8");
this.nada = "Nada";
}
public String getNada() {
return nada;
}
public List<String> getStrings() {
return strings;
}
public void setNada(String nada) {
this.nada = nada;
}
public void setStrings(List<String> strings) {
this.strings = strings;
}
}
bean para o relatório:
Code:
public class IReportBean {
private Integer codigo;
private String nome;
public Integer getCodigo() {
return codigo;
}
public String getNome() {
return nome;
}
public void setCodigo(Integer codigo) {
this.codigo = codigo;
}
public void setNome(String nome) {
this.nome = nome;
}
}
Controller do relatório:
Code:
@Bean
@Controller(path="/ci/relatorio/teste")
public class RelatorioController extends ReportController<ReportBean> {
private AvaliacaoMetaService avaliacaoMetaService;
public RelatorioController() {
super();
setName("relatorio");
}
@Override
public IReport createReport(WebRequestContext request, ReportBean filtro) throws Exception {
return avaliacaoMetaService.createRelatorio(filtro);
}
public void setAvaliacaoMetaService(AvaliacaoMetaService avaliacaoMetaService) {
this.avaliacaoMetaService = avaliacaoMetaService;
}
}
Service:
Code:
public class AvaliacaoMetaService extends GenericService<AvaliacaoMeta> {
public IReport createRelatorio(ReportBean filtro) {
Report report = new Report("teste");
report.setDataSource(((AvaliacaoMetaDAO) getGenericDAO()).generateListToDataSource(filtro));
return report;
}
}
DAO:
Code:
public class AvaliacaoMetaDAO extends GenericDAO<AvaliacaoMeta> {
public List<IReportBean> generateListToDataSource(ReportBean filtro) {
List<IReportBean> dados = new ArrayList<IReportBean>();
for(int i = 0; i < filtro.getStrings().size(); i++) {
IReportBean bean = new IReportBean();
bean.setCodigo(i);
bean.setNome(filtro.getStrings().get(i));
dados.add(bean);
}
return dados;
}
}
relatorio.jsp
Code:
<%@ taglib prefix="c" uri="http://java.sun.com/jsp/jstl/core"%>
<%@ taglib prefix="n" uri="neo"%>
<%@ taglib prefix="t" uri="template"%>
<t:tela titulo="Coleta de dados">
<t:janelaFiltro>
<t:tabelaFiltro showSubmit="false">
<n:group>
<n:submit url="/ci/relatorio/teste" action="gerar">Gerar Relatório</n:submit>
</n:group>
</t:tabelaFiltro>
</t:janelaFiltro>
</t:tela>
Estrutura de Pastas:
relatorio.jsp => WEB-INF/jsp/ci/relatorio onde ci é o nome do módulo configurado
teste.jrml e teste.jasper => WEB-INF/relatorio
acho que é só isso... se precisar de mais alguma coisa é só falar...
cara só mais uma coisa... observando os fontes do NEO observei que voces passam um objeto JasperReport para ser preenchido... nunca tinha usado essa abodagem, eu sempre passava o relatório compilado (.jasper). Sempre achei que passando o .jasper o processamento seria mais rápido. Isso é correto ou estou enganado?
Só esclarecendo... não é minha intenção questionar a forma de voces implementarem... sempre faço essas perguntas para entender os motivos que os levaram a adotar uma determinada abordagem procurando sempre aperfeicoar a minha forma de desenvolver...
vlw t+
|
Valdeci Junior
MasterSoft Sistemas Ltda.
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 22/08/2007 13:08:59
|
pedro.goncalves
Equipe
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline
|
Faça as seguintes alterações:
troque o nome de RelatorioController para RelatorioReport
pode tirar o setName()...
Agora.. qual erro que está dando? Poste ele aqui.
Quanto a implementação da maneira que é impressa o report eu não sei, isso é com o rógel.. pois esta implementação já é meio antiga.. vou olhar com ele e te dou um retorno.
teh!
|
Pedro Gonçalves
http://pedrogoncalves.com.br
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 22/08/2007 17:44:58
|
valdecijunior
Equipe
Membro desde: 23/06/2007 11:56:42
Mensagens: 24
Localização: Vitoria da Conquista - Ba
Offline
|
fala pedro...
fiz a alteração que vc falou e o erro continuou a acontecer...
Code:
java.lang.NoClassDefFoundError: teste/jrml_1187702249234_715645 (wrong name: teste46jrml_1187702249234_715645)
o teste está sendo sendo feito usando o jasperreports-1.2.1.jar que acompanha o NEO.
Se eu atualizar o jar para a versão jasperreports-1.3.4.jar o erro muda e passa a ser:
Code:
java.lang.InternalError: java.io.IOException: Stream closed
flw
|
Valdeci Junior
MasterSoft Sistemas Ltda.
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 22/08/2007 19:17:32
|
pedro.goncalves
Equipe
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline
|
experimenta fazer um relatório em branco para ver... aparentemente está tudo ok.
|
Pedro Gonçalves
http://pedrogoncalves.com.br
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 23/08/2007 01:04:43
|
valdecijunior
Equipe
Membro desde: 23/06/2007 11:56:42
Mensagens: 24
Localização: Vitoria da Conquista - Ba
Offline
|
pedro, obrigado pela ajuda... consegui resolver o problema:
No Service modifiquei o código que setava o DataSource de
Code:
report.setDataSource(((AvaliacaoMetaDAO) getGenericDAO()).generateListToDataSource(filtro));
para
Code:
report.setDataSource(new JRBeanCollectionDataSource(((AvaliacaoMetaDAO) getGenericDAO()).generateListToDataSource(filtro)));
agora funcionou blz...
vlw t+
|
Valdeci Junior
MasterSoft Sistemas Ltda.
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 23/08/2007 07:33:29
|
pedro.goncalves
Equipe
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline
|
Ok. mais você também pode passar uma lista como data source que o neo já converte automaticamente.
|
Pedro Gonçalves
http://pedrogoncalves.com.br
 |
|
 |
![[Post New]](/forum/templates/default/images/icon_minipost_new.gif) 23/08/2007 07:33:32
|
pedro.goncalves
Equipe
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline
|
Ok. mais você também pode passar uma lista como data source que o neo já converte automaticamente.
|
Pedro Gonçalves
http://pedrogoncalves.com.br
 |
|
 |
|