Opa pessoal boa noite, sou iniciante em java porém adorei o java já de inicio, o meu problema é tenho esse método no repositórioProduto que é uma implementação de uma interface IRepositorioProduto: Pelo o que eu acho não tenho certeza aqui está tudo certo.
// Metodo alterar Produto que usa como Argumento do Parametro um Objeto Produto
@Override
public void alterar(Produto p) throws RepositorioException, ConexaoException {
Connection c = g.conectar(); //solicitação de uma conexão
String sqlAlterar = "UPDATE produto SET nome_produto=?,preco=?,qtd_estoque=?,fornecedor_codigo_fornecedor=?,tipo_produto_codigo_tipo_produto=? WHERE codigo_produto=?"; //script SQL
try {
PreparedStatement pstm = c.prepareStatement(sqlAlterar);
pstm.setString(1,p.getNomeProduto()); //Retorna o nome do produto a ser modificado
pstm.setDouble(2,p.getPreco()); // Retorna o preço do produto a ser modificado
pstm.setInt(3,p.getQtdEstoque()); //Retorna a quantidade d o produto a ser modificada
pstm.setInt(4,p.getCodigoFornecedor()); // Retorna o codigo do fornecedor do produto
pstm.setInt(5,p.getCodigoTipoProduto()); //retorna o codigo do tipo de Produto
pstm.setInt(6,p.getCodigoProduto()); // retorna om codigo do produto a ser alterado
pstm.executeUpdate(); // faz as atualização requeridas no comando SQL
pstm.close(); // libera o PreparedStatement
}catch(SQLException ex){
throw new RepositorioException(ex.getMessage());
}
finally{
g.desconectar(c); // libera a conexão com o banco de dados
}
}//fim dometodo alterar com parametro um objeto Produto
Na camada de negocio tento tratar algumas exceções :
public void alterar (Produto p)throws RepositorioException, ConexaoException, GeralException {
// validação dos campos da classe Produto neste método
if((p.getNomeProduto()==null) || (p.getNomeProduto().equals("")))
throw new GeralException("Nome do Produto Inválido");
if(p.getPreco()<0)
throw new GeralException("Preço do Produto Inválido");
if(p.getQtdEstoque()<0)
throw new GeralException("Quantidade de Produto Inválida");
if(p.getCodigoProduto()<1){
throw new GeralException("Codigo do Produto Invalido");
}
try{
rep.alterar(p);
}catch(RepositorioException e){
throw new GeralException(" Repositório com Problema");
}catch(ConexaoException e){
throw new GeralException("O Banco de Dados Esta com Problemas de Conexão");
}
}// fim do metodo alterar produto usando um objeto de Produto
Meu Problema inicia de fato aqui, quando tenho que utilizar a fachada não sei bem como criar o método alterarProduto na fachada fiz isso:
public void alterarProduto(int codigoProduto,Produto p )throws GeralException, RepositorioException, ConexaoException{
//Consultar
p = negocioProduto.consultar(codigoProduto);
//Alterar
negocioProduto.alterar(p);
}
No main quando tento rodar um teste cai no excepion " Repositório com Problema" porém não encontro o defeito no repositório o main está assim:
public class Main {
// instância de um objeto fachada
private static Fachada fachada = new Fachada();
// Metodo principal que se encarregará de roda a aplicação
public static void main(String [] args){
// teste dos metodos de salvar,consultar,excluir e listar Produto.
//testeSalvarProduto();
//testeExcluirProduto();
// testeConsultarProduto();
//testeListarProduto();
testeAlterarProduto();
}
private static void testeAlterarProduto() {
System.out.println("Inicio Teste Alterar");
Produto p;
try{
fachada.alterarProduto(1,p = new Produto("Diablo 3",99.9,30,1,1 ));
}catch(GeralException e){
JOptionPane.showMessageDialog(null, e.getMessage());
}catch(ConexaoException e){
JOptionPane.showMessageDialog(null, "Conexão bugada");
}catch(RepositorioException e){
JOptionPane.showMessageDialog(null, "Repositorio Com defeito");
}
System.out.println("Fim Alterar Produto");
}
}
Sei que aparti da camada de negocio fiquei perdido, queria a juda de vocês para poder sanar esse problema.
Abraços.