Problemao Ireports e Banco de Dados!

[b]Boa noite pessoal!

Galera, estou com um problemão para ser resolvido, para muitos vai ser moleza.

Estou aprendendo na faculdade camada de persistência, DAO, TO, design patters singleton e finalmente o bendito do IReports. :x

Let’s go!

O objetivo do trabalho é de implementar as ações C.R.U.D nas respectivas entidades do banco, e gerar seus respectivos relatorios.

Comecei modelando uma base de dados, que esta na imagem abaixo:[/b]

[b]Em seguida, na camada de persistência, criei três classes, DAO e TO, (uma para cada entidade do banco). E uma classe de conexão singleton.

A parte de C.R.U.D esta beleza para todos entidades do banco, sendo que o problema mesmo, e gerar os respectivos relatorios para as tabelas “Empregado” e Projeto". Abaixo vou postar uma classe DAO de Cliente, sua classe de geração de relatórios e a parte do método main :[/b]

[code]package unifil.linguagem.trabalho.persistencia.Dao;

import unifil.linguagem.trabalho.persistencia.To.ToEmpregado;
import java.sql.Connection;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import java.util.ArrayList;
import unifil.linguagem.trabalho.persistencia.ConexaoSingleton;

/**
*

  • @author manolo
    */
    public class DaoEmpregado {

    private Connection con;

    public DaoEmpregado(){
    con = new ConexaoSingleton().getConexao();
    }

    //GRAVAR
    //====================================
    public boolean grava(ToEmpregado emp) {
    try {

         PreparedStatement comandoSQL;
    
         comandoSQL = con.prepareStatement("insert into empregado( idempregado, servico_idservico, nome_emp, sobrenome_emp, salario) values(?, ?, ?, ?, ?)");
         comandoSQL.setInt(1, emp.getIdempregado());
         comandoSQL.setInt(2, emp.getIdservico());
         comandoSQL.setString(3, emp.getNome());
         comandoSQL.setString(4, emp.getSobrenome());
         comandoSQL.setDouble(5, emp.getSalario());
    
         comandoSQL.executeUpdate();
         //ConexaoSingleton.getConexao().commit();
         comandoSQL.close();
         return true;
    
    
    
     } catch (SQLException e) {
         e.printStackTrace();
     }
     return false;
    

    }

//ALTERAR
//====================================
public boolean atualiza(ToEmpregado emp) {
try {
PreparedStatement comandoSQL;
comandoSQL = con.prepareStatement(“update empregado set nome_emp = ?, sobrenome_emp = ?, salario = ? where idempregado = ?”);

        comandoSQL.setString(1, emp.getNome());
        comandoSQL.setString(2, emp.getSobrenome());
        comandoSQL.setDouble(3, emp.getSalario());
        comandoSQL.setInt(4, emp.getIdempregado());
        //comandoSQL.setInt(5, emp.getIdservico());
        comandoSQL.executeUpdate();
        //ConexaoSingleton.getConexao().commit();
        comandoSQL.close();

    } catch (SQLException e) {

        e.printStackTrace();
    }
    return false;
}

public boolean deletar(ToEmpregado emp) {

    try {
        PreparedStatement comandoSQL;

        comandoSQL = con.prepareStatement("delete from empregado where idempregado = ?");

        comandoSQL.setInt(1, emp.getIdempregado());
        comandoSQL.executeUpdate();
        //ConexaoSingleton.getConexao().commit();
        comandoSQL.close();

    } catch (SQLException ex) {
        ex.printStackTrace();
    }

    return false;

}

public ArrayList<ToEmpregado> getLista() throws SQLException {
    PreparedStatement stmt = con.prepareStatement("select * from empregado");

    ResultSet rs = stmt.executeQuery();

    ArrayList<ToEmpregado> empregados = new ArrayList<ToEmpregado>();

    while (rs.next()) {
        ToEmpregado cli = new ToEmpregado();
        cli.setIdempregado(rs.getInt("idempregado"));
        cli.setNome(rs.getString("nome_emp"));
        cli.setSobrenome(rs.getString("sobrenome_emp"));
        cli.setSalario(rs.getInt("salario"));


        empregados.add(cli);

    }
    rs.close();
    stmt.close();

    return empregados;
}[/code]

Geração de relatorio de Cliente:

[code]package unifil.linguagem.trabalho.relatorio;

import java.awt.Desktop;
import java.io.File;
import java.sql.Connection;
import java.util.HashMap;

import unifil.linguagem.trabalho.persistencia.*;

import net.sf.jasperreports.engine.JRException;
import net.sf.jasperreports.engine.JRExporterParameter;
import net.sf.jasperreports.engine.JasperFillManager;
import net.sf.jasperreports.engine.JasperPrint;
import net.sf.jasperreports.engine.export.JRPdfExporter;

/**
*

  • @author manolo
    */
    public class GerarRelCliente {

    Desktop desk;

    public GerarRelCliente() {

     Connection conexao;
     JRPdfExporter jpe = new JRPdfExporter();
     //Aqui coloca a localização do arquivo .jasper
     String jasperFile = "/home/manolo/NetBeansProjects/TesteBancoComSingleton/Jasper/report3.jasper";
     //Aqui coloca a localização de saída do arquivo gerado
     String pdfFile = "/home/manolo/NetBeansProjects/TesteBancoComSingleton/Relatorio/Relatorio de Empregados.pdf";
    
     try {
         conexao = (Connection) ConexaoSingleton.getConexao();
    
         JasperPrint print = JasperFillManager.fillReport(jasperFile, null, conexao);
    
         jpe.setParameter(JRExporterParameter.OUTPUT_FILE_NAME, pdfFile);
    
         jpe.setParameter(JRExporterParameter.JASPER_PRINT, print);
    
         jpe.exportReport();
    
         desk = Desktop.getDesktop();//defino meu Desktop
         desk.open(new File(pdfFile));//abre relatorio em meu desktop
    
     } catch (JRException e) {
         e.printStackTrace();
     } catch (Exception e) {
         e.printStackTrace();
         System.exit(1);
     }
    

    }

    public Desktop retornaRelatorio() {
    return desk;
    }
    }
    [/code]

Classe excutavel:

[code]private static int opcao, opcaoCad, opcaoServ;

public static void main(String args[]) throws SQLException, Exception {

    do {

        opcaoCad = Integer.parseInt(JOptionPane.showInputDialog(" Trabalho C.R.U.D "
                + "\n Digite uma opção: "
                + "\n 1) Manipular tabela Empregado "
                + "\n 2) Manipular tabela Servicos "
                + "\n 3) Sair "));

        switch (opcaoCad) {

            case 1:

                opcao = Integer.parseInt(JOptionPane.showInputDialog(" Trabalho C.R.U.D "
                        + "\n Digite uma opção: "
                        + "\n 1) Inserir Registro em Empregado "
                        + "\n 2) Deletar Registro em Empregado "
                        + "\n 3) Alterar Registro em Empregado"
                        + "\n 4) Listar os registros de Empregado"
                        + "\n 5) Imprimir Relatorios de Empregado"
                        + "\n 6) Sair "));

                ToEmpregado obj = new ToEmpregado();
                //DaoEmpregado env = new DaoEmpregado();
                DaoEmpregado conex = new DaoEmpregado();
                switch (opcao) {

                    case 1:

                        try {
                            String nome = JOptionPane.showInputDialog("Insira o nome:");
                            obj.setNome(nome);

                            String sob = JOptionPane.showInputDialog("Insira o sobrenome do(a) " + nome);
                            obj.setSobrenome(sob);

                            double sal = Double.parseDouble(JOptionPane.showInputDialog("Indique o salario do(a) pessoa " + nome));
                            obj.setSalario(sal);

                            conex.grava(obj);

                        } catch (Exception ex) {

                            ex.printStackTrace();
                        }

                        break;

                    case 2:

                        try {

                            int id = Integer.parseInt(JOptionPane.showInputDialog("Informe o id do empregado para exclusão"));
                            obj.setIdempregado(id);

                            conex.deletar(obj);

                        } catch (Exception ex) {

                            JOptionPane.showMessageDialog(null, ex.getMessage());
                        }

                        break;

                    case 3:

                        try {

                            String nome = JOptionPane.showInputDialog("Insira o novo nome para ser alterado:");
                            obj.setNome(nome);

                            String sob = JOptionPane.showInputDialog("Insira um novo sobrenome para alteração ");
                            obj.setSobrenome(sob);

                            double sal = Double.parseDouble(JOptionPane.showInputDialog("Insira um novo salario para alteração "));
                            obj.setSalario(sal);

                            int id = Integer.parseInt(JOptionPane.showInputDialog("Insira o id cadastrado do(a) pessoa para alteração"));
                            obj.setIdempregado(id);


                            conex.atualiza(obj);

                        } catch (Exception ex) {

                            ex.printStackTrace();
                        }

                        break;

                    case 4:

                        ArrayList<ToEmpregado> empregados = conex.getLista();
                        for (ToEmpregado contato : empregados) {
                            JOptionPane.showMessageDialog(null, "Id = " + contato.getIdempregado()
                                    + "\n Nome = " + contato.getNome()
                                    + "\n Sobrenome = " + contato.getSobrenome()
                                    + "\n Salario = " + contato.getSalario());
                        }

                        break;

                    case 5:

                        GerarRelCliente g = new GerarRelCliente();
                        g.retornaRelatorio();

                        break;

                    case 6:

                        System.exit(0);


                }

[/code]

[b]Galera, desculpa ter enviado um monte de coisa de uma vez, e qualquer coisa estou de prontidão para postar outras classes e esclarecer dúvidas.

Abraços…[/b]

Olá,

Não entendi o seu problema.

Você precisa gerar os relatórios para ‘Empregados’ e ‘Projetos’ e não sabe fazer exatamente o que?

[ ]'s