Problemao Ireports e Banco de Dados!

1 resposta
manolo

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:

[img]http://img6.imageshack.us/img6/792/diagramak.png[/img]

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 :

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;
    }

Geração de relatorio de Cliente:

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;
    }
}

Classe excutavel:

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);


                    }

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...

1 Resposta

Ev3rton

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

Criado 15 de abril de 2011
Ultima resposta 16 de abr. de 2011
Respostas 1
Participantes 2