Pattern DAO?

Salve galera…

Seguinte, eu preciso de fazer um esquema usando DAO, preciso inserir/alterar uns registros.
Eh algo do tipo, se existir o registro atualiza se nao insere.

to tentando assim.

// classe modulos
public class Modulos{
    private Long id;
    private String modulo;
    private String nomeModulo;

    //get e set

// classe perfil
public class Perfil{
     private Long id;
     private String perfil.
     private String observacao;

     //get e set
}


//classe permissoes, relacionada entre Perfil e Modulos
public class Permissoes{
      private Long id;
      private String inserir;
      private String alterar;
      private String consultar;
      private String imprimir;
      private Modulos modulo;
      private Perfil perfil;

     // get e set
      
}

}

// aqui onde estou populando os beans e tentando usar o DAO
Perfil perfil = new Perfil();
perfil.setId(Long.parseLong(idPerfil.getText()));
Modulos modulo = new Modulos();
Permissoes permissoes = new Permissoes();
PermissoesDAO pmDAO = new PermissoesDAO();
for(int x = 0 ; x < tabelaPermissoes.getRowCount(); x++){
     modulo.setId(tabelaPermissoes.getValueAt(x, 0);  // id dos modulos
     modulo.setInserir(tabelaPermissoes.getValueAt(x, 2);
     modulo.setAlterar(tabelaPermissoes.getValueAt(x, 3);
     modulo.setConsultar(tabelaPermissoes.getValueAt(x, 4);
     modulo.setImprimir(tabelaPermissoes.getValueAt(x, 5);

      permissoes.setPerfil(perfil);
      permissoes.setModulos(modulo);
      pmDAO.inserir(permissoes);      
}


// aqui o meu DAO, onde tento inserir ou alterar caso exista.
public class PermissoesDAO{
     public void inserir(Permissoes permissoes) throws SQLException{
             PreparedStatement stm = this.con.prepareStatement("REPLACE INTO permissoes (idperfil, idmodulo, inserir, alterar, consultar, imprimir) VALUES (?,?,?,?,?,?)"); 
             stm.setLong(1, permissoes.getPerfil().getId());
             stm.setLong(2, permissoes.getModulo().getId());
             stm.setString(3, permissoes.getInserir());
             stm.setString(4, permissoes.getAlterar());
             stm.setString(5, permissoes.getConsultar());
             stm.setString(6, permissoes.getImprimir());
             stm.executeUpdate();
             stm.close();
      }
}

O REPLACE INTO do mysql, permite alterar ou inserir registros, porem nao estou conseguindo fazer isso…Ou alguma outra maneira de fazer.

Alguma sugestao ???

obrigado

Qual a mensagem de erro?

Entaum, eu num tenho nenhuma msg de erro…

Funciona assim…Eu tenho um cadastro de Perfil e um cadastro de Modulos, logo depois eu tenho a tela de Permissoes. Nesta tela de permissoes eu tenho o Jtextfield(idPerfil), onde insiro o codigo do perfil. Logo abaixo eu tenho um JTable com todos os codigos dos modulos que tbm cadastrei no cadastro de modulos.
Bem, eu preciso inseri-los, isso eu consigo. O que nao consigo eh se no caso de eu cadastrar um novo modulo eu inseri-lo juntamente com as permissoes que ja inseri antes com relacao ao perfil, entende ???

seria algo assim.

tabela Perfil
tabela Modulos
tabela Permissoes – aqui eu insiro o codigo do Perfil e o codigo do Modulo.

No caso de eu cadastrar um novo modulo, eu quero pegar o codigo do perfil ja cadastrado e inserir o novo modulo que cadastrei.

Não sei fazer isso, por isso gostaria de saber uma maneira de fazer isso. Alguma sugestão ??? Exemplo ???

obrigado

Quando você roda o SQL gerado pela sua aplicação manualmente funciona como você espera?

opa Daveiga…

Para inserção sim, eu consigo inserir as permissoes normalmente a primeira vez.
O que preciso, eh se caso o usuario cadastrar um novo modulo ele possa vincula-lo ao perfil que ja cadastrei antes, e assim dar as permissoes ao novo modulo cadastrado com o perfil existente…Espero que entenda isso. !!!

pseudo codigo seria.

Eu queria fazer isso apenas na linha do “REPLACE INTO” do mysql que faz o trabalho de inserir ou alterar, mas ainda nao encontrei como fazer.

Pelo visto vou acabar tendo que usar o bom e velho " if " …kkkkk !!!

aqui a screenshot da tela, onde o usuario informa o Perfil e abaixo no JTable tem os modulos com suas permissoes
http://www.4shared.com/photo/QU-917GY/Captura_de_tela-2.html

aqui a screenshot do modelo de relacionamento
http://www.4shared.com/photo/nlPOpMlz/modelo.html

[]'s e obrigado.

use o hibernate que ele cuida de tudo isso pra vc!!!

pois eh, hibernate naum eh uma opcao…eu ateh comecei a usa-lo, porem achei bem mais complicado e sinceramente prefiro jdbc pois tenho mais controle sobre minha aplicação.

alguma outra sugestao de como fazer isso q preciso???

obrigado

Alguma sugestao ??? …

Acho q vou ter q usar o bom e velho if msm…dando um for na coluna dos codigos de modulos no jtable e verificando se ja estaum cadastrados para o perfil juntamente com o while.

[]s

Salve galera…

Consegui resolver meu problema.Tive msm q usar o bom e velho if para resolver.

aqui como fiz.

//esse eh meu DAO 
public void alterar(Yperfilmodulo pm) throws SQLException{        
        PreparedStatement stm = this.con.prepareStatement("SELECT * FROM yperfilmodulo "
                                                        + "WHERE yperfilmodulo.idperfil = ? AND yperfilmodulo.idmodulo = ?");
        stm.setLong(1, pm.getPerfil().getId());
        stm.setLong(2, pm.getModulo().getId());
        ResultSet rs = stm.executeQuery();        
        PreparedStatement stmInsertUpdate;                
        if(rs.next()){
            stmInsertUpdate = this.con.prepareStatement("UPDATE yperfilmodulo SET "
                                                          + "inserir = ?, alterar = ?, consultar = ?, imprimir = ? "
                                                          + "WHERE yperfilmodulo.idcontrole = ? AND yperfilmodulo.idmodulo = ?");
            stmInsertUpdate.setString(1, String.valueOf(pm.getInserir()));
            stmInsertUpdate.setString(2, String.valueOf(pm.getAlterar()));
            stmInsertUpdate.setString(3, String.valueOf(pm.getConsultar()));
            stmInsertUpdate.setString(4, String.valueOf(pm.getImprimir()));
            stmInsertUpdate.setLong(5, pm.getIdControle());   
            stmInsertUpdate.setLong(6, pm.getModulo().getId());                   
        }else{
            stmInsertUpdate = this.con.prepareStatement("INSERT INTO yperfilmodulo (idcontrole, idperfil, idmodulo, inserir, alterar, consultar, imprimir) "
                                                        + "VALUES (?,?,?,?,?,?,?)");        
            stmInsertUpdate.setLong(1, pm.getIdControle());
            stmInsertUpdate.setLong(2, pm.getPerfil().getId());
            stmInsertUpdate.setLong(3, pm.getModulo().getId());
            stmInsertUpdate.setString(4, String.valueOf(pm.getInserir()));
            stmInsertUpdate.setString(5, String.valueOf(pm.getAlterar()));
            stmInsertUpdate.setString(6, String.valueOf(pm.getConsultar()));
            stmInsertUpdate.setString(7, String.valueOf(pm.getImprimir()));                                
        }               
        stmInsertUpdate.executeUpdate();
        stmInsertUpdate.close();
    }


//aqui os beans
public class Yperfil{    
    private Long id;
    private String perfil;
    private String observacao;
    //sets and gets
}

public class Ymodulos {
    private Long id;
    private String modulo;
    private String nomeModulo;
    private String observacao;
    //sets and gets
}

public class Yperfilmodulo {  
    private Long id;
    private Long idControle;
    private Boolean inserir;
    private Boolean alterar;
    private Boolean consultar;
    private Boolean imprimir;
    private Yperfil perfil;
    private Ymodulos modulo;
    //sets and gets
}

é isso ae…Como não consegui fazer de outra maneira, recorri ao if, 100% funcionando.

t+ e vlw a todos ae.