Java - arquitetura em camadas e JDBC

Java

11/11/2016

Bom dia Gente!

Será que alguém pode ,e dar uma forcinha?!
Estou tentando implementar uma classe repositório de uma aplicação JDBC.
Na classe Certidao existe o objeto Orgao_Emissor orgao_emissor.
Eu travei na hora de implementar as condições do método. Quando é variável normal eu consigo instanciar mas nos casos de objeto me complico:

[package br.com.certidoes.classes;

public class Certidao {

private int id;
private String nome;
private String DiasEmissao;
private Orgao_Emissor Orgao_Emissor_id;

public int getId() {
return id;
}
public void setId(int id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public String getDiasEmissao() {
return DiasEmissao;
}
public void setDiasEmissao(String diasEmissao) {
DiasEmissao = diasEmissao;
}
public Orgao_Emissor getOrgao_Emissor_id() {
return Orgao_Emissor_id;
}
public void setOrgao_Emissor_id(Orgao_Emissor orgao_Emissor_id) {
Orgao_Emissor_id = orgao_Emissor_id;

}



}
]

package br.com.certidoes.jdbc;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.PreparedStatement;
import java.sql.ResultSet;
import java.sql.SQLException;
import br.com.certidoes.classes.Certidao;
import br.com.certidoes.classes.Orgao_Emissor;

public class RepositorioCertidoesBD implements RepositorioCertidoes{

private String nomeDriver;
private String urlConexao;
private String usuarioConexao;
private String senhaConexao;
private boolean indDriverCarregado;

private static final String MSG_FALHA_CARGA_DRIVER =
"Nome do driver JDBC usado não corresponde a uma classe válida";
private static final String MSG_ERRO_CONEXAO =
"Erro ao obter conexão com o banco de dados";

private static final String MSG_ERRO_ACESSO_BD =
"Erro de acesso ao banco de dados";

private static final String MSG_CERTIDAO_CADASTRADA =
"Certidao já cadastrada";

private static final String MSG_ID_NAO_ENCONTRADO =
"ID não encontrado";

private static final String MSG_ID_INVALIDO =
"ID inválido";

private static final String INSERT_CERTIDAO =
"INSERT INTO certidao (id, nome, DiasEmissao, Orgao_Emissor_id) VALUES (?,?,?,?)";

private static final String PROCURA_CERT=
"SELECT id, nome, DiasEmissao, Orgao_Emissor_id FROM certidao WHERE id = ?";

private static final String LISTA_CERT =
"SELECT id, nome, DiasEmissao, Orgao_Emissor_id FROM certidao";

private static final String DELETE_CERT =
"DELETE FROM certidao WHERE id = ?";

public RepositorioCertidoesBD(

String pNomeDriver,
String pUrlConexao,
String pUsuarioConexao,
String pSenhaConexao) {

super();

nomeDriver = pNomeDriver;
urlConexao = pUrlConexao;
usuarioConexao = pUsuarioConexao;
senhaConexao = pSenhaConexao;
indDriverCarregado = false;
}

private Connection getConexao() {

if (!indDriverCarregado) {
try {
Class.forName(nomeDriver);
indDriverCarregado = true;
} catch (ClassNotFoundException e) {
System.err.print(MSG_FALHA_CARGA_DRIVER);
}
}
try {
return DriverManager.getConnection(
urlConexao,
usuarioConexao,
senhaConexao);
} catch (SQLException e) {
System.err.print(MSG_ERRO_CONEXAO);
return null;
}
}

public void inserir(Certidao c) {

if (c != null) {
Connection con = getConexao();
PreparedStatement psCert = null;
PreparedStatement psEnd = null;

try {
psCert = con.prepareStatement(INSERT_CERTIDAO);
psCert.setInt(1, c.getId());
psCert.setString(2, c.getNome());
psCert.setString(3, c.getDiasEmissao());

Certidao cert = new Certidao();
cert.setOrgao_Emissor(4, c.getOrgao_Emissor_id(1, "ana", "10", 4 ));


// observe que os demais eu setei mas o objeto nao. Ver acima

psCert.executeUpdate();

} catch (SQLException e) {
System.err.print(e.getMessage());
} finally {
fechaRecursos(con, psCert, null);
fechaRecursos(con, psEnd, null);
}
}
}

public Certidao procurar(int id) {
if (id != 0) {
Connection con = getConexao();
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = con.prepareStatement(PROCURA_CERT);
ps.setInt(1, id);
rs = ps.executeQuery();
if (rs.next()) {
int bdId = rs.getInt(1);
String bdNome = rs.getString(2);
String bdDiasEmissao = rs.getString(3);
Orgao_Emissor bdOrgao_Emissor_id = ((Object) rs).getOrgao_Emissor(4);




Certidao cert = new Certidao();
cert.setId(bdId);
cert.setNome(bdNome);
cert.setDiasEmissao(bdDiasEmissao);
cert.setOrgao_Emissor_id(bdOrgao_Emissor_id);

cert.setOrgao_Emissor_id(bdOrgao_Emissor_id());


return cert;


} else {
System.err.print(MSG_CERTIDAO_CADASTRADA);
}
} catch (SQLException e) {
System.err.println(MSG_ERRO_ACESSO_BD);
System.err.println(e.getMessage());
} finally {
fechaRecursos(con, ps, rs);
}
}
return null;
}

public ResultSet listar() {
Connection con = getConexao();
PreparedStatement ps = null;
ResultSet rs = null;
try {
ps = con.prepareStatement(LISTA_CERT);
rs = ps.executeQuery();
if (rs.next()){
return rs;
}
} catch (SQLException e) {
System.err.println(MSG_ERRO_ACESSO_BD);
System.err.println(e.getMessage());
}
return rs;
}




public void remover(int id) {
if (id != 0) {
Connection con = getConexao();
PreparedStatement ps = null;
try {
ps = con.prepareStatement(DELETE_CERT);
ps.setInt(1, id);
int rows = ps.executeUpdate();
if (rows <= 0) {
System.err.println("ID não encontrado");
}
} catch (SQLException e) {
System.err.println(MSG_ID_NAO_ENCONTRADO);
System.err.println(e.getMessage());
} finally {
fechaRecursos(con, ps, null);
}
} else {
System.err.println(MSG_ID_INVALIDO);
}
}

private void fechaRecursos(
Connection con,
PreparedStatement ps,
ResultSet rs) {

try {
if (rs != null)
rs.close();
} catch (Exception e) {
}
try {
if (ps != null)
ps.close();
} catch (Exception e) {
}
try {
if (con != null)
con.close();
} catch (Exception e) {
}
}


}




]
Janaína Bandeira

Janaína Bandeira

Curtidas 0
POSTAR