Classe para chamar o relatorio utilizando IReport + Hibernate XML

2 respostas
brulex

Primeiramente queria pedir desculpas se estou utilizando a aria errada do fórum, "já que vi aqui alguns tópicos relacionados ao IReport resolvi colocar aqui mesmo"
estou estudando Java a 4 meses, comecei agora minha vida de estudos na programação, e ja estou aprendendo a utilizar o Hibernate “mesmo vendo só a parte de XML ainda, já estou maravilhado com seu poder”.

O que me ocorre é o seguinte, estou fazendo um pequeno sistema para a loja do meu pai, o meu formulário funciona perfeitamente todos os eventos botões etc… o meu problema é que criei um relatório usando IReport, e não tenho a minima ideia de como criar a classe para chamar o relatório e como fazer a conexão IReport + Hibernate, sei que existem muitos tópicos aqui relacionado ao assunto já li vários ontem, porem nenhum esclareceu minha duvidas de como “criar essa classe”

Eu não quero nada de mão beijada só quero aprender, e se alguém tiver disposição para fazer está classe para mim baseada nos codigos que vou postar abaixo, ou então me indicar material para que eu posso estudar ficaria muito grato, tendo em vista que o livro “Desenvolvendo Relatórios Profissionais com IReport etc…” ja deve chegar semana que vem em minha casa.

Esté é meu Hibernate.properties

hibernate.dialect = org.hibernate.dialect.PostgreSQLDialect
hibernate.connection.driver_class = org.postgresql.Driver
hibernate.connection.url = jdbc:postgresql://localhost:5432/MirandaDB
hibernate.connection.username = postgres
hibernate.connection.password = root
hibernate.show_sql = true
hibernate.format_sql = true

Hibernate.cfg.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-configuration PUBLIC "-//Hibernate/Hibernate Configuration DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-configuration-3.0.dtd">
<hibernate-configuration>
  <session-factory>
    <mapping resource="br/com/brninformatica/controle/km.hbm.xml"/>
  </session-factory>
</hibernate-configuration>

Aquivo de Mapeamento “separado do cfg.xml”

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE hibernate-mapping PUBLIC "-//Hibernate/Hibernate Mapping DTD 3.0//EN" "http://hibernate.sourceforge.net/hibernate-mapping-3.0.dtd">
<hibernate-mapping>
  <class name="br.com.brninformatica.bean.Quilometragem">
    <id name="id">
      <generator class="sequence">
        <param name="sequence">km_sequence</param>
      </generator>
    </id>
    <property name="dia"/>
    <property name="mes"/>
    <property name="manha"/>
    <property name="almoco"/>
    <property name="volta_almoco"/>
    <property name="tarde"/>
    <property name="total_km_dia"/>
  </class>
</hibernate-mapping>

Classe Bean

package br.com.brninformatica.bean;

import java.io.Serializable;
import java.util.Date;

/**
 *
 * @author brulex
 */

public class Quilometragem implements Serializable {
    
    public Quilometragem() //método construtor vazio
    {  }
 
    private int id; 
    private Date dia;
    private String mes;
    private int manha;
    private int almoco;
    private int volta_almoco;
    private int tarde;
    private int total_km_dia;
    
   /* Métodos getters e Setrers

HibernateUtil

package br.com.brninformatica.hibernateutil;

/**
 *
 * @author brulex
 */
import org.hibernate.Session;
import org.hibernate.SessionFactory;
import org.hibernate.cfg.Configuration;
import javax.swing.JOptionPane;

public class HibernateUtil{

    private static SessionFactory FabricaSessoes;
    static {

        try {
            FabricaSessoes = new Configuration().configure().buildSessionFactory();
        }
        catch(Exception erro) {
            JOptionPane.showMessageDialog(null, "Erro na fabrica de sessoes = "+erro);
            FabricaSessoes = null;
        }
    }

    public static Session getSessao() {
        return FabricaSessoes.openSession();
    }

}

DAOGenerico que implemente uma interface

package br.com.brninformatica.persistence;
import br.com.brninformatica.hibernateutil.HibernateUtil;
import java.util.List;
import javax.swing.JOptionPane;
import org.hibernate.HibernateException;
import org.hibernate.Session;
import org.hibernate.Transaction;

public class DAOGenerico<Generico> implements InterfaceDAOGenerico {

    private final Session sessao;
    Transaction transacao = null;
    private Generico generico;
    public DAOGenerico(Generico generico){

         this.sessao = HibernateUtil.getSessao();
         this.generico = generico;
    }

    @Override
    public void gravarAletrar() {
        try {
            transacao = sessao.beginTransaction();
            sessao.saveOrUpdate(generico);
            transacao.commit();
        }
        catch(HibernateException erro){
            JOptionPane.showMessageDialog(null, "Erro na inserção = "+erro);
            transacao.rollback();
        }
    }

    @Override
    public void excluir() {
        try {
            transacao = sessao.beginTransaction();
            sessao.delete(generico);
            transacao.commit();
        }
        catch(HibernateException erro){
            JOptionPane.showMessageDialog(null, "Erro na exclusão = "+erro);
            transacao.rollback();
        }
    }
     @Override
    public void alterar() {
        
    }
     
    @Override
    public List listar(String classe) {
        List lista = sessao.createQuery("from "+classe).list();
        return lista;
    }

}

Bom é isso ai, me desculpem pelo tópico extenso e se fiz algo de erro… com o tempo vou me acostumando com o fórum!
aguardo respostas e Obrigado.

2 Respostas

brulex

Alguem pode indicar alguma coisa? um tutorial… uma apostila sei la!!! um video =/

101574

Cara, eu estou procurando uma outra solução.
Não sei já conseguiu.
O que eu sei fazer e assim. Mas eu utilizo o vraptor.

Cria um pacote chamado relatorio e cria a classe modeloReport.java.

Onde modelo é a classe dos beans.

E altera onde está orcamento por sua classe de modelo.

import java.util.Collection;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
import br.com.softsol.compresempre.modelo.Orcamento;
import br.com.caelum.vraptor.jasperreports.Report;


public class OrcamentoReport implements Report&lt;Orcamento&gt; {
	private final List&lt;Orcamento&gt; data;
	private Map&lt;String, Object&gt; parameters;
	
	public OrcamentoReport(List&lt;Orcamento&gt; data) {
		this.data = data;
		this.parameters = new HashMap&lt;String, Object&gt;();
	}

	public Report&lt;Orcamento&gt; addParameter(String key, Object value) {
		this.parameters.put(key, value);
		return this;
	}

	public Collection&lt;Orcamento&gt; getData() {
		return data;
	}

	public String getFileName() {
		return "report" + System.currentTimeMillis();
	}

	public Map&lt;String, Object&gt; getParameters() {
		return this.parameters;
	}

	public String getTemplate() {
		return "/templates/orcamento1.jasper";
	}

Ta vendo aqui, /templates/orcamento1.jasper.

Esse arquivo você pega do ireport.
Cria uma pasta no src como o nome de templates, e coloca ele dentro.

No caso, no meu controller. Que é orcamento.controller, voce adicona esse metodos, lembrando, onde estiver orcamento troca pelo seu modelo.

// Relatórios

		@Path("/orcamento/pdf")
		public Download pdfReport() {
			Report&lt;Orcamento&gt; report = generateReport();
			return new ReportDownload(report, Pdf());
		}
		

		@Path("/orcamento/docx")
		public Download docxReport() {
			Report&lt;Orcamento&gt; report = generateReport();
			return new ReportDownload(report, Docx());
		}

		@Path("/orcamento/txt")
		public Download txtReport() {
			Report&lt;Orcamento&gt; report = generateReport();
			ExportFormat txt = new Txt();
			txt.configure(JRTextExporterParameter.OFFSET_X, 0).configure(
					JRTextExporterParameter.OFFSET_Y, 0);
			return new ReportDownload(report, txt, false);
		}

		@Path("/orcamento/odt")
		public Download odtReport() {
			Report&lt;Orcamento&gt; report = generateReport();
			return new ReportDownload(report, Odt());
		}

		@Path("/orcamento/rtf")
		public Download rtfReport() {
			Report&lt;Orcamento&gt; report = generateReport();
			return new ReportDownload(report, Rtf());
		}

		// Modelagem
		private Report&lt;Orcamento&gt; generateReport() {
			// Modelagem controller dao
			List&lt;Orcamento&gt; data = dao.listaTudo();
			// report
			return new OrcamentoReport(data);
		}

Onde tem @path é o nome da página que eu chamo o meu relatório.

Qualquer coisa, tamo ai.

Caso queira implementar o seu sistema no vraptor, hibernate taglib. Mais facil do que a forma que você está fazendo.

Tem uma apostila gratuita. FJ-28 na caelum.com.br.
Flw.

Criado 10 de abril de 2012
Ultima resposta 21 de nov. de 2012
Respostas 2
Participantes 2