[Logo] Neo Framework Forum
  [Search] Busca   [Recent Topics] Tópicos Recentes   [Members]  Lista de Usuários   [Groups] De volta para a página principal 
[Register] Registrar / 
[Login] Entrar 
Suporte a relatórios???  XML
Índice dos Fóruns -> Dúvidas Ir para a página: 1, 2 Próximo 
Autor Mensagem
valdecijunior
Equipe
[Avatar]
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.
[Email] [Yahoo!] [MSN]
pedro.goncalves
Equipe
[Avatar]
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
[Email] [WWW] [MSN]
valdecijunior
Equipe
[Avatar]
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.
[Email] [Yahoo!] [MSN]
pedro.goncalves
Equipe
[Avatar]
Membro desde: 17/04/2007 16:12:20
Mensagens: 539
Localização: Belo Horizonte - MG
Offline

Falo!

Pedro Gonçalves
http://pedrogoncalves.com.br
[Email] [WWW] [MSN]
vinicius.janones
Template
[Avatar]

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
[Email]
pedro.goncalves
Equipe
[Avatar]
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
[Email] [WWW] [MSN]
valdecijunior
Equipe
[Avatar]
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.
[Email] [Yahoo!] [MSN]
pedro.goncalves
Equipe
[Avatar]
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
[Email] [WWW] [MSN]
valdecijunior
Equipe
[Avatar]
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.
[Email] [Yahoo!] [MSN]
pedro.goncalves
Equipe
[Avatar]
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
[Email] [WWW] [MSN]
valdecijunior
Equipe
[Avatar]
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.
[Email] [Yahoo!] [MSN]
pedro.goncalves
Equipe
[Avatar]
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
[Email] [WWW] [MSN]
valdecijunior
Equipe
[Avatar]
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.
[Email] [Yahoo!] [MSN]
pedro.goncalves
Equipe
[Avatar]
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
[Email] [WWW] [MSN]
pedro.goncalves
Equipe
[Avatar]
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
[Email] [WWW] [MSN]
 
Índice dos Fóruns -> Dúvidas Ir para a página: 1, 2 Próximo 
Ir para:   
Powered by JForum 2.1.7 © JForum Team