[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]