Cadastro em Camadas + Swing

Bom eu to fazendo um cadastro que tenho 3 classes e nelas tenho que ter os métodos de (inserir, alterar, excluir, listar e consultar) dai to com dúvida para ligar os métodos aos formulário. Tenho que fazer o programa em camadas.

vou mostrar o exemplo da minha classe Médico.

Minha classe RepositorioMedicoLista

[quote][code]public class RepositorioMedicoLista {

private Medico medico;
private RepositorioMedicoLista proximo;

public RepositorioMedicoLista() {

    this.medico = null;
    this.proximo = null;
}

public void inserirMedico(Medico medico) {
    if (this.medico == null) {
        this.medico = medico;
        this.proximo = new RepositorioMedicoLista();
    } else {
        this.proximo.inserirMedico(medico);
    }
}

public void removerMedico(String crm) {
    if (this.medico != null) {
        if (this.medico.getCrm().equals(crm)) {
            this.medico = this.proximo.medico;
            this.proximo = this.proximo.proximo;
        } else {
            this.proximo.removerMedico(crm);
        }
    }
}

public Medico listagemMedico() {
    return medico;

}

public Medico consultarCodigo(Medico medico) {
    Medico ret = null;
    if (this.medico == null) {
        throw new RuntimeException("Consulta sem resultado");
    } else {
        while (this.proximo != null) {
            if (this.medico.getCodigo().equals(medico.getCodigo())) {
                ret = this.medico;
            } else {
                this.medico = this.proximo.medico;
                this.proximo = this.proximo.proximo;
            }
        }
    }
    return ret;
}

public Medico consultarNome(Medico medico) {
    Medico ret = null;
    if (this.medico == null) {
        throw new RuntimeException("Consulta sem resultado");
    } else {
        while (this.proximo != null) {
            if (medico.getNome().equals(medico.getNome())) {
                ret = this.medico;
            } else {
                this.medico = this.proximo.medico;
                this.proximo = this.proximo.proximo;
            }
        }
    }
    return ret;
}

public Medico consultarCrm(Medico medico) {
    Medico ret = null;
    if (this.medico == null) {
        throw new RuntimeException("Consulta sem resultado");
    } else {
        while (this.proximo != null) {
            if (medico.getCrm().equals(medico.getCrm())) {
                ret = this.medico;
            } else {
                this.medico = this.proximo.medico;
                this.proximo = this.proximo.proximo;
            }
        }
    }
    return ret;
}

public Medico consultarTodos() {
    return medico;

}

public void alterarCodigo(String codigo) {
    if (this.medico != null) {
        if (this.medico.getCodigo().equals(codigo)) {
            this.medico = this.proximo.medico;
            this.proximo = this.proximo.proximo;
        } else {
            this.proximo.alterarCodigo(codigo);
        }
    }
}

public void alterarNome(String nome) {
    if (this.medico != null) {
        if (this.medico.getNome().equals(nome)) {
            this.medico = this.proximo.medico;
            this.proximo = this.proximo.proximo;
        } else {
            this.proximo.alterarNome(nome);
        }
    }
}

public void alterarCrm(String crm) {
    if (this.medico != null) {
        if (this.medico.getCrm().equals(crm)) {
            this.medico = this.proximo.medico;
            this.proximo = this.proximo.proximo;
        } else {
            this.proximo.alterarCrm(crm);
        }
    }
}

/**
 * @return the proximo
 */
public RepositorioMedicoLista getProximo() {
    return proximo;
}

/**
 * @param proximo the proximo to set
 */
public void setProximo(RepositorioMedicoLista proximo) {
    this.proximo = proximo;
}

}[/code][/quote]

Minha classe ControladorMedico

[quote][code]public class ControladorMedico {

private RepositorioMedicoLista repositorio;

public ControladorMedico() {
    this.repositorio = new RepositorioMedicoLista();
}

public void inserirMedico(Medico medico) throws ExcecaoMedico {
    if (medico == null) {
        throw new ExcecaoMedico("Infomar o medico");
    }
    if (medico.getCrm().trim().equals("")) {
        throw new ExcecaoMedico("Infomar o crm do medico");
    }
    if (medico.getNome().trim().equals("")) {
        throw new ExcecaoMedico("Infomar o nome do medico");
    }
    if (medico.getCodigo().trim().equals("")) {
        throw new ExcecaoMedico("Informar o código do medico");
    }
    this.repositorio.inserirMedico(medico);
}

public Medico listagemMedico(Medico medico) throws ExcecaoMedico {
    if (medico == null) {
        throw new ExcecaoMedico("Consulta sem resultados");
    } else {
        return repositorio.listagemMedico();
    }
}

public Medico consultarCodigo(Medico medico) throws ExcecaoMedico {
    if (medico.getCodigo() == null) {
        throw new ExcecaoMedico("Consulta sem resultados");
    } else {
        return repositorio.consultarCodigo(medico);
    }
}

public Medico consultarNome(Medico medico) throws ExcecaoMedico {
    if (medico.getNome() == null) {
        throw new ExcecaoMedico("Consulta sem resultados");
    } else {
        return repositorio.consultarNome(medico);
    }
}

public Medico consultarCrm(Medico medico) throws ExcecaoMedico {
    if (medico.getCrm() == null) {
        throw new ExcecaoMedico("Consulta sem resultados");
    } else {
        return repositorio.consultarCrm(medico);
    }
}

public Medico consultarTodos() throws ExcecaoMedico {
    return repositorio.consultarTodos();

}

}[/code][/quote]

Minha classe ExcecaoMedico

[quote][code]ublic class ExcecaoMedico extends Exception {

public ExcecaoMedico(String mensagem) {
    super(mensagem);
}

}[/code][/quote]

E minha classe Fachada

[quote][code]public class Fachada {

private ControladorConsulta controladorconsulta;
private ControladorMedico controladormedico;
private ControladorPaciente controladorpaciente;

public Fachada() {
    this.controladorconsulta = new ControladorConsulta();
    this.controladormedico = new ControladorMedico();
    this.controladorpaciente = new ControladorPaciente();
}

public void inserirConsulta(Consulta consulta) throws ExcecaoConsulta {
    this.controladorconsulta.inserirConsulta(consulta);
}

public void inserirMedico(Medico medico) throws ExcecaoMedico {
    this.controladormedico.inserirMedico(medico);
}

public void inserirPaciente(Paciente paciente) throws ExcecaoPaciente {
    this.controladorpaciente.inserirPaciente(paciente);
}

public Medico listagemMedico(Medico medico) throws ExcecaoMedico {
    return controladormedico.listagemMedico(medico);
}

public Medico consultarCodigo(Medico medico) throws ExcecaoMedico {
    return controladormedico.consultarCodigo(medico);
}

public Medico consultarNome(Medico medico) throws ExcecaoMedico {
    return controladormedico.consultarNome(medico);
}

public Medico consultarCrm(Medico medico) throws ExcecaoMedico {
    return controladormedico.consultarCrm(medico);
}

public Medico consultarTodos() throws ExcecaoMedico {
    return controladormedico.consultarTodos();
}

void listagemMedico(String[] s) {
    throw new UnsupportedOperationException("Not yet implemented");
}

}[/code][/quote]

Dai eu tenho meu FormMedico onde tem uma lista para aparecer minhas consultas. Um botão de inserir onde abre um novo form do tipo JDialog onde eu vou inserir os dados.
Ai beleza.
No Form JDialog eu fiz o código lá para adicionar meu Médico mas ta dando erro.

[quote]//Declarei em cima private Fachada fachadamedico; private void jButton1ActionPerformed(java.awt.event.ActionEvent evt) { try { // TODO add your handling code here: Medico adicionar = new Medico(); adicionar.setNome(campoNome.getText()); adicionar.setCodigo(campoCodigo.getText()); adicionar.setCrm(campoCrm.getText()); String[] s = new String[3]; s[0] = campoNome.getText(); s[1] = campoCodigo.getText(); s[2] = campoCrm.getText(); fachadamedico.listagemMedico(adicionar); } catch (ExcecaoMedico ex) { Logger.getLogger(FormCadastroMedico.class.getName()).log(Level.SEVERE, null, ex); }[/quote]

Dai ta dando erro ele não adicionar.
E no meu botão de consulta onde iria aparecer os dados que eu cadastrei ta assim.

[quote][code]private void BotaoConsultarActionPerformed(java.awt.event.ActionEvent evt) {
// TODO add your handling code here:

    try {
        Medico medico = new Medico();
        if (!campoConsultar.getText().trim().equals("")) {
            medico.setCodigo(campoConsultar.getText());
            medico = fachadamedico.consultarCodigo(medico);
            String[] s = new String[1];
            s[0] = medico.getCodigo();
            lista.setListData(s);
        } else {
            while (medico.getProximo() != null) {
                medico = medico.getProximo();
                medico = fachadamedico.consultarTodos();

            }
        }


    } catch (ExcecaoMedico ex) {
        Logger.getLogger(FormMedico.class.getName()).log(Level.SEVERE, null, ex);
    }
    



}[/code][/quote]

Se alguem puder me ajudar. Valeu.

E se algum puder postar um projeto com algum cadastro e telas também para eu dar uma olhada pra dar uma sacada eu agradeço também.
Valeu ai galera.

Olha, eu nunca fiz nenhum projeto com o swing na verdade eu estou desenvolvendo um.

Primeiro eu crio a classe básica.


    import java.util.Date;
    public class Funcionario{
        private int Codigo;
        private String Nome;
        private String Endereco;
        private String Cidade;
        private String Bairro;
        private String UF;
        private String Sexo;
        private Date DataNascimento;
        private Date DataAdmissao;
        private String RG;
        private String CPF;
        private String Login;
        private String Senha;
        private String Telefone;
        private String Celular;
        private String EMail;

       public Funcionario(){}



      public Funcionario(String Login, String Senha){

               this.Login = Login;
               this.Senha = Senha;
      }//Uso este construtor quando eu me logar ao sistema.

      //Métodos set e get
      public void setCodigo(int Codigo){
            this.Codigo = Codigo;
      }


    public int getCodigo(){
         return this.Codigo;
    }


   public void setNome(String Nome){
       this.Nome = Nome;
   }

   public String getNome(){
        return this.Nome;
   }

   public void setEndereco(String Endereco){
       this.Endereco = Endereco;
   }
   
   public String getEndereco(){
       return this.Endereco;
   }

   public void setCidade(String Cidade){
      this.Cidade = Cidade;
   }


   public String getCidade(){
       return this.Cidade;
   }

    public void setBairro(String Bairro){
         this.Bairro = Bairro;
    }

    public String getBairro(){
         return this.Bairro;
    }

    public void setUF(String UF){
        this.UF = UF;
    }

    public String getUF(){
        return this.UF;
    }

    public void setSexo(String Sexo){
        this.Sexo = Sexo;
    }

    public String getSexo(){
        return this.Sexo;
    }

    public void setDataNascimento(Date DataNascimento){
          this.DataNascimento = DataNascimento;
    }

    public Date getDataNascimento(){
          return this.DataNascimento;
    }

    public void setDataAdmissao(Date DataAdmissao){
         this.DataAdmissao = DataAdmissao;
    }

    public Date getDataAdmissao(){
          return this.DataAdmissao;
    }


    public void setRG(String RG){
          this.RG = RG;
    }

    public String getRG(){
           return this.RG;
    }

    public void setCPF(String CPF){
           this.CPF = CPF;
    }

    public String getCPF(){
          return this.CPF;
    }

    public void setLogin(String Login){
          this.Login = Login;
    }

   public String getLogin(){
         return this.Login;
   }

   public void setSenha(String Senha){
         this.Senha = Senha;
   }

   public String getSenha(){
         return this.Senha;
   }


   public void setTelefone(String Telefone){
         this.Telefone = Telefone;
   }

    public String getTelefone(){
         return this.Telefone;
    }

    public void setCelular(String Celular){
         this.Celular = Celular;
    }


    public String getCelular(){
          return this.Celular;
    }

    public void setEMail(String EMail){
            this.EMail = EMail;
    }


    public String getEMail(){
          return this.EMail;
    }



    }//fim da classe Funcionario

Bom aqui termina a minha classe básica Funcionário, depois eu coloco a parte do repositório e do cadastro.

E outra coisa que eu esqueci de colocar outro construtor no qual eu seto o valor do código que eu estou pesquisando.

    public Funcionario(int Codigo){
          this.Codigo = Codigo;
    }//se eu precisar obviamente colocarei outros tipos diferentes de construtores da mesma classe para n situações.

Eu estava vendo os teus posts, no seu caso você não está usando o banco de dados.

Bom eu nunca fiz assim.

Eu faço assim

      import java.sql.*;
      import java.util.Date;
      import java.util.List;
      import java.util.ArrayList;
      import funcionario.Funcionario;//Não pode esquecer de importar a classe básica.
      import utilitarios.GerenciadorMySQL;//utilizo a minha classe para me conectar ao meu banco, mas eu não vou mostrar a implementação dela aqui por ser óbvia demais o seu código, com certeza vc deve saber como conectar ao banco de dados em Java
     public class RepositorioFuncionario{
            
           public RepositorioFuncionario(){}

          public Funcionario BuscarFuncionario(int Codigo)throws  SQLException, ConsultaErroException{
                Connection Con = new GerenciadorMySQL().getConexao();// Eu uso esse método em todos os métodos dessa classe
                String Query = "Select * from funcionario Where Codigo = ? and estatus = 1";
                 PreparedStatement smt = Con.PreparedStatement(Query);//
                 Funcionario funcionario = null;
                 try{
                      smt.setInt(1, funcionario.getCodigo());
                      ResultSet set = smt.executeQuery();
                      
                      if(set.Next()){
                           funcionario = new Funcionario();
                           funcionario.setNome(set.getString("Nome"));
                           funcionario.setEndereco(set.getString("Endereco"));
                           funcionario.setCidade(set.getString("Cidade"));//e assim por diante
                      }
                 }catch(SQLException exe){
                         throw new ConsultaErroException("Funcionário não encontrado");
                 }finally{
                      Con.close;
                      smt.close;
                 }

               return funcionario;
          }


          //aqui vou fazer uma coisa parecida com essa, só que ao invés de ser com o código vai ser com login e senha.

         public Funcionario FuncionarioLogin(String Login, String Senha)throws SQLException, LoginInvalidoException{
                 Connection Con = new GerenciadorMySQL().getConexao();
                 String Query = "Select Login, Senha from funcionario Where Login = ? and Senha = ? and estatus = 1";
                 PreparedStatement smt = Con.preparedStatement(Query);
                 Funcionario funcionario = null;

                 try{
                        smt.setString(1, Login);
                        smt.setString(2, Senha);
                        
                        ResultSet set = smt.executeQuery();


                        if(set.Next()){
                              funcionario = new Funcionario();
                              funcionario.setLogin(set.getString("Login"));
                              funcionario.setSenha(set.getString("Senha"));
                        }
                 }catch(SQLExceptin exe){
                         throw new LoginInvalidoException("");
                  }finally{
                        Con.close();
                        smt.close();
                   }
         }

           public void InserirFuncionario(Funcionario funcionario)throws ConexaoErroException, SQLException{
                   Connection Con = new GerenciadorMySQL().getConexao();
                   String Query = "Insert Into funcionario(Nome, Endereco, Cidade, Bairro, UF, Sexo, RG, CPF, DataNascimento, DataAdmissao, Login, Senha, Telefone, Celular, EMail, estatus) value(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, 1)";
                   PreparedStatement smt = Con.preparedStatement(Query);
                   try{
                        smt.setString(1, funcionario.getNome());
                        smt.setString(2, funcionario.getEndereco());
                        smt.setString(3, funcionario.getCidade());
                        smt.setString(4, funcionario.getBairro());
                        smt.setString(5, funcionario.getUF());
                        smt.setString(6, funcionario.getSexo());
                        smt.setString(7, funcionario.getRG());
                        smt.setString(8, funcionario.getCPF());
                        smt.setDate(8, (Date) funcionario.getDataNascimento());
                        smt.setDate(9, (Date) funcionario.getDataAdmissao());
                        smt.setString(10, funcionario.getLogin());
                        smt.setString(11, funcionario.getSenha());
                        smt.setString(12, funcionario.getTelefone());
                        smt.setString(13, funcionario.getCelular());
                        smt.setString(14, funcionario.getEMail());

                        smt.executeUpdate();
                   }catch(SQLException exe){
                           throw new ConexaoErroException("Erro ao tentar Incluir o Funcionário");
                     }
           }


        public void ExcluirFuncionario(Funcionario funcionario)throws ConexaoErroException, SQLException{
              Connection Con = new GerenciadorMySQL().getConexao();
              String Query = "Update funcionario set estatus = 0 Where Codigo = ? and estatus = 1";
              PreparedStatement smt = Con.preparedStatement(Query);
              try{
                    smt.setInt(2, funcionario.getCodigo());
                    smt.executeUpdate();
              }catch(SQLException exe){
                    throw new ConexaoErroException("Erro ao tentar excluir o Funcionário");
                }
        }


        public void AlterarFuncionario(Funcionario funcionario)throws ConexaoErroException, SQLException{
        }


        public List<Funcionario> PesquisarFuncionario(Funcionario funcionario)throws ConsultaErroException, SQLException{
                    
        }

          
     }//fim da classe RepositorioFuncionario Depois eu continuo

Opa marcoslogan tranquilo ? Mal a demora a responder é que eu tava ocupado fazendo um sistema em Delphi. Eu não estou usando banco de dados e tambem não faço ideia de como conectar ao banco. To começando agora com o Java e o professor só ensinou o que é uma classe e como criar e dai mandou a gente fazer essse projeto em camadas e tals. Ai eu criei minhas classes como você viu o exemplo do médico. A minha dúvida é como ligar meu métodos aos formulário como citei anteriormente.

beleza então eu coloco a minha classe de conexão jdbc.

Olá amigos

que tal fazer assim:

classe bd:

package bd;

/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author silvio
 */


import java.io.IOException;
import java.io.InputStream;
import java.sql.Connection;
import java.sql.DriverManager;
import java.sql.SQLException;
import java.util.Properties;
import java.util.logging.Level;
import java.util.logging.Logger;



public class ConexaoBancoDados {

    public String url,username,password,driver;
    
    private static ConexaoBancoDados instance;

    public static ConexaoBancoDados getInstance(){
        if(instance == null){
            instance = new ConexaoBancoDados();
        }
        return instance;
    }
    
  public void readConfig() {
       Properties p = new Properties();
        try {
            InputStream con = this.getClass().getClassLoader().getResourceAsStream("config.properties");
            p.load(con);
        } catch (IOException ex) {
            ex.printStackTrace();
            Logger.getLogger(ConexaoBancoDados.class.getName()).log(Level.SEVERE, null, ex);
        }
       url = "jdbc:"+p.getProperty("PROTOCOL")+"://"+p.getProperty("HOSTNAME")+"/"+p.getProperty("DATABASE");
       username = p.getProperty("USER");
       password = p.getProperty("PASSWORD");
       driver = "org.postgresql.Driver";
}

public  Connection conexao() throws ClassNotFoundException,SQLException {
   Connection dbConnection = null;
   readConfig();
   try {
	Class.forName(driver); // Or any other driver
	System.out.println("driver loaded");
   } catch (Exception x) {
	System.out.println("Unable to load the driver class!");
	x.printStackTrace();
   }

   try {
	dbConnection = DriverManager.getConnection(url, username, password);
	System.out.println("connection opened");
   } catch (SQLException x) {
 	System.out.println("Couldn't get connection!");
	x.printStackTrace();
   }

 return dbConnection;
}

}

classe principal

public class FramePrincipal extends JFrame implements ActionListener{
...

       public Connection dbConnection = null;

    public FramePrincipal() throws ClassNotFoundException, SQLException {

        super("Sistema V. 1.0");

        this.dbConnection = bd.ConexaoBancoDados.getInstance().conexao();

...


    protected void createFramePatrimonio() throws PropertyVetoException, Exception {
        menu = menuBar;
        if (framePatrimonio == null) {
            framePatrimonio = new FramePatrimonio(this.dbConnection);  --->  aqui passe a conexão
            framePatrimonio.setVisible(true); //necessary as of 1.3
            desktop.add(framePatrimonio);
            framePatrimonio.pack();
            desktop.getDesktopManager().maximizeFrame(framePatrimonio);
        } else {
            framePatrimonio.setVisible(true);
        }
        try {
            framePatrimonio.setSelected(true);
        } catch (java.beans.PropertyVetoException e) {
        }
        
    }

frame de casdastro:

public class FramePatrimonio extends MyInternalFrame {
....

       public Connection dbConnection;

      public FramePatrimonio(Connection dbConnection) throws Exception {
        setTitle("Patimônio");

        this.dbConnection = dbConnection;
...

public void selecionaPatrimonio() throws Exception {
       try {
            stmt = dbConnection.createStatement();
            rs = stmt.executeQuery("select * from patrimonio where id='" + id_patrimonio + "'");
            rs.next();
            tfNumeroTombamento. setText(rs.getString("tombamento"));
            tfDescricao.setText(rs.getString("descricao"));
            tfSetor.setText(rs.getString("setor"));
            tfDataTombamento.setText(data.getDataBR(rs.getString("data")));
            cboSetor.setSelectedItem(rs.getString("setor"));
       } catch (SQLException ex) {
            Logger.getLogger(FramePatrimonio.class.getName()).log(Level.SEVERE, null, ex);
       }
       stmt.close();
}

dessa forma vc abre apenas uma conexão para o seu sistema.

Silvio guedes

Galera eu não estou usando nenhum banco de dados. Estou armazenando meus dados em uma lista. A minha dúvida é de como chamar meus métodos para dicionar em um Jlist, pegar os dados na tela e salvar na lista… Essas coisas.

Ajuda ai galera!