Chamar Metodo

Boa noite, tenho uma classe chama ValidaCPF, juntamente com o campo CPF e Botão Salvar.
Minha duvida é, como eu vou chamar esse método, eu chamo o metedo no CPF ou no Botão?

public class ValidaCPF {
private static final int[] pesoCPF = {11, 10, 9, 8, 7, 6, 5, 4, 3, 2};


private static int calcularDigito(String str, int[] peso) {
int soma = 0;
for (int indice=str.length()-1, digito; indice >= 0; indice-- ) {
digito = Integer.parseInt(str.substring(indice,indice+1));
soma += digito*peso[peso.length-str.length()+indice];
}
soma = 11 - soma % 11;
return soma > 9 ? 0 : soma;
}

public static boolean isValidCPF(String cpf) {
if ((cpf==null) || (cpf.length()!=11)) return false;

  Integer digito1 = calcularDigito(cpf.substring(0,9), pesoCPF);
  Integer digito2 = calcularDigito(cpf.substring(0,9) + digito1, pesoCPF);
  return cpf.equals(cpf.substring(0,9) + digito1.toString() + digito2.toString());
}

eu falei isso pra vc no outro topico

1 curtida

Sim, mas tentei meio que tudo e nada, ele da erro
identar
ValidaCPF valida = new ValidaCPF();
valida.isValidCPF();

    if(isValidaCpf(txtCpfCamp.getText())){
        Adicionar();
    } else {
        JOptionPane.showInputDialog(this,"Erro");

Desculpe minha ignorância, eu estava puxando direto no botão, mas era no metodo como vc falou.
so que ainda da um erro, ele não esta validando
identar private void Adicionar() {

    String sql = "insert into tbcampista(Nomecamp,endcamp,cpfcamp,TelefoneCamp,PlacaCamp,observacoes,Enbarca,Tipo,Perfil)"
            + " values(?,?,?,?,?,?,?,?,?"
            + ")";

    try {
        pst = conexao.prepareStatement(sql);
        pst.setString(1, txtNomeCamp.getText());
        pst.setString(2, txtEndeCamp.getText());
        pst.setString(3, txtCpfCamp.getText());
        pst.setString(4, txtfonecam.getText());
        pst.setString(5, TxtPlaca.getText());
        pst.setString(6, jObervacoes.getText());
        pst.setString(7, Embarca.getSelectedItem().toString());
        pst.setString(8, LTipo.getSelectedItem().toString());
        pst.setString(9, TipoUsuario.getSelectedItem().toString());

        if (((txtNomeCamp.getText().isEmpty()) || (txtCpfCamp.getText().isEmpty()))) {
            JOptionPane.showMessageDialog(null, " Todos os Campos Marcados com *, são Obrigatórios");
        
        } if (isValidCPF(txtCpfCamp.getText())) {
                JOptionPane.showMessageDialog(null, "Atenção, o CPF digitado não é válido");
                }

        else  {

            int adicionado = pst.executeUpdate();

            if (adicionado > 0) {
                JOptionPane.showMessageDialog(null, "Campista  Cadastrado com Sucesso!!!");
                txtNomeCamp.setText(null);
                //txtNomeCamp.setText(null);
                txtEndeCamp.setText(null);
                txtCpfCamp.setText(null);
                txtfonecam.setText(null);
                TxtPlaca.setText(null);
                jObervacoes.setText(null);
                Embarca.setSelectedItem(null);
                LTipo.setSelectedItem(null);
                TipoUsuario.setSelectedItem(null);

                //TipoUsuario.setSelectedItem(null);
            }
        }
    } catch (Exception e) {
        JOptionPane.showMessageDialog(this,e);
    }

}

private void PesquisarCampistas() {
    String sql = " select * from tbcampista where CpfCamp like ?";
    try {
        pst = conexao.prepareStatement(sql);
        // Passando da caixa de pesquisa
        pst.setString(1, txtPesquisarCamp.getText() + "%");
        // executa a query
        rs = pst.executeQuery();
        // usa a biblioteca para preencher a tabela
        tblCampista.setModel(DbUtils.resultSetToTableModel(rs));

    } catch (Exception e) {
        JOptionPane.showMessageDialog(null, e);
    }

}

Mas qual erro ta dando?

ele adiciona cpf inválidos. olha meu codigo pra adicionar, eu acho que to errando nos Ifs
identar public TelaCampista() {

    conexao = Conexao.Conector();
    initComponents();

    //LTipo.setVisible(false);
}

private void Adicionar() {

    String sql = "insert into tbcampista(Nomecamp,endcamp,cpfcamp,TelefoneCamp,PlacaCamp,observacoes,Enbarca,Tipo,Perfil)"
            + " values(?,?,?,?,?,?,?,?,?"
            + ")";

    try {
        pst = conexao.prepareStatement(sql);
        pst.setString(1, txtNomeCamp.getText());
        pst.setString(2, txtEndeCamp.getText());
        pst.setString(3, txtCpfCamp.getText());
        pst.setString(4, txtfonecam.getText());
        pst.setString(5, TxtPlaca.getText());
        pst.setString(6, jObervacoes.getText());
        pst.setString(7, Embarca.getSelectedItem().toString());
        pst.setString(8, LTipo.getSelectedItem().toString());
        pst.setString(9, TipoUsuario.getSelectedItem().toString());

        if (((txtNomeCamp.getText().isEmpty()) || (txtCpfCamp.getText().isEmpty()))) {
            JOptionPane.showMessageDialog(null, " Todos os Campos Marcados com *, são Obrigatórios");
        
        } if (isValidCPF(txtCpfCamp.getText())) {
                JOptionPane.showMessageDialog(null, "Atenção, o CPF digitado não é válido");
                
                }else {

          

            int adicionado = pst.executeUpdate();

            if (adicionado > 0) {
                JOptionPane.showMessageDialog(null, "Campista  Cadastrado com Sucesso!!!");
                txtNomeCamp.setText(null);
                //txtNomeCamp.setText(null);
                txtEndeCamp.setText(null);
                txtCpfCamp.setText(null);
                txtfonecam.setText(null);
                TxtPlaca.setText(null);
                jObervacoes.setText(null);
                Embarca.setSelectedItem(null);
                LTipo.setSelectedItem(null);
                TipoUsuario.setSelectedItem(null);

                //TipoUsuario.setSelectedItem(null);
            }
        }
    } catch (Exception e) {
        JOptionPane.showMessageDialog(this,e);
    }

Cara, faz um teste isolado primeiro, sem adicionar no banco, exemplo, na classe que vc criou com o método de validar, faz o teste lá:

public static void main(String[] args){
    if(isValidCPF(123456789-00){
       System.out.println("o cpf é valido");
    } else {
       System.out.println("esse cpf nao existe");   
    }
}

Depois de funcionar, vc faz as condições antes do prepareStatement, fica mais facil pra organizar:

if(blablabla){
   //erro
} else {
   //salva os arquvios
   try {
      pst = conexao.prepareStatement(sql);
      pst.setString(1, txtNomeCamp.getText());
      pst.setString(2, txtEndeCamp.getText());
      .....
}

Teste a classe validação como vc falou, esta funcionando, só o método que não consigo chamar, to ja a dois dias nisso kkk

O método é static, só chamar ele no botão de cadastrar

acho que eu fiz errado a pergunta, digo colocar os Ifs de validação, pois tenho outro de campo obrigatórios, dai quando aperto em cadastrar eme chama ate o metodo faz sabe, só que não valida, mas teste só na classe ele da certo.
identar private void Adicionar() {

    String sql = "insert into tbcampista(Nomecamp,endcamp,cpfcamp,TelefoneCamp,PlacaCamp,observacoes,Enbarca,Tipo,Perfil)"
            + " values(?,?,?,?,?,?,?,?,?"
            + ")";

    {

        try {

            pst = conexao.prepareStatement(sql);
            pst.setString(1, txtNomeCamp.getText());
            pst.setString(2, txtEndeCamp.getText());
            pst.setString(3, txtCpfCamp.getText());
            pst.setString(4, txtfonecam.getText());
            pst.setString(5, TxtPlaca.getText());
            pst.setString(6, jObervacoes.getText());
            pst.setString(7, Embarca.getSelectedItem().toString());
            pst.setString(8, LTipo.getSelectedItem().toString());
            pst.setString(9, TipoUsuario.getSelectedItem().toString());

            if (((txtNomeCamp.getText().isEmpty()) || (txtCpfCamp.getText().isEmpty()))) {
                JOptionPane.showMessageDialog(null, " Todos os Campos Marcados com *, são Obrigatórios");

                //se o cpf digitado for válido
                //deixa cadastrar
            } else {

                int adicionado = pst.executeUpdate();

                if (adicionado > 0) {
                    JOptionPane.showMessageDialog(null, "Campista  Cadastrado com Sucesso!!!");
                    txtNomeCamp.setText(null);
                    //txtNomeCamp.setText(null);
                    txtEndeCamp.setText(null);
                    txtCpfCamp.setText(null);
                    txtfonecam.setText(null);
                    TxtPlaca.setText(null);
                    jObervacoes.setText(null);
                    Embarca.setSelectedItem(null);
                    LTipo.setSelectedItem(null);
                    TipoUsuario.setSelectedItem(null);

                    //TipoUsuario.setSelectedItem(null);
                }
            }
        } catch (HeadlessException | SQLException e) {
            JOptionPane.showMessageDialog(this, e);
        }

    }

}

eu fiz isso em um site, entao não está identado e pode ter erro de digitação ou sintaxe, mas se vc fizer assim funciona, e seu código fica mais organizado

private void saveData(){
	String SQL = "insert into tbcampista(Nomecamp,endcamp,cpfcamp,TelefoneCamp,PlacaCamp,observacoes,Enbarca,Tipo,Perfil)"
    + " values (?,?,?,?,?,?,?,?,?"
    + ")";
    
    if ((txtNomeCamp.getText().isEmpty()) || (txtCpfCamp.getText().isEmpty())) {
        System.out.println("Preencha os campos obrigatórios...");
    } else {
        if(!isValidCPF(txtCpfCamp.getText()){
            //cpf invalido
             System.out.println("Preencha o cpf corretamente...");
        } else {
           //cpf válido
           //salva os dados
           try {
                pst = conexao.prepareStatement(sql);
                pst.setString(1, txtNomeCamp.getText());
                pst.setString(2, txtEndeCamp.getText());
                pst.setString(3, txtCpfCamp.getText());
                pst.setString(4, txtfonecam.getText());
                pst.setString(5, TxtPlaca.getText());
                pst.setString(6, jObervacoes.getText());
                pst.setString(7, Embarca.getSelectedItem().toString());
                pst.setString(8, LTipo.getSelectedItem().toString());
                pst.setString(9, TipoUsuario.getSelectedItem().toString());
                pst.executeUpdate();
                
                clearData();
          } catch (Exception e){
              e.printStackTrace();
          }
        }
	}
}

private void clearData(){
    txtNomeCamp.setText(null);
    //txtNomeCamp.setText(null);
    txtEndeCamp.setText(null);
    txtCpfCamp.setText(null);
    txtfonecam.setText(null);
    TxtPlaca.setText(null);
    jObervacoes.setText(null);
    Embarca.setSelectedItem(null);
    LTipo.setSelectedItem(null);
    TipoUsuario.setSelectedItem(null);
    
    //TipoUsuario.setSelectedItem(null);
}
1 curtida

Seu método é estático, é só invocar ele e pronto.

Outra coisa, faça as validações ANTES de criar o PreparedStatement, não faz sentido você testar depois de ter criado ele.

Exemplo:

private void Adicionar() {
    try {
        String nome = txtNomeCamp.getText();
        String cpf = txtCpfCamp.getText();
        
        if (nome == null || "".equals(nome)
          || cpf == null || "".equals(cpf)) {
            JOptionPane.showMessageDialog(null, "Todos os Campos Marcados com *, são Obrigatórios");
            return;
        }
        
        if (!ValidaCPF.isValidCpf(cpf)) {
            JOptionPane.showMessageDialog(null, "CPF inválido");
            return;
        }

        String sql = "insert into tbcampista(Nomecamp,endcamp,cpfcamp,TelefoneCamp,PlacaCamp,observacoes,Enbarca,Tipo,Perfil)"
               + " values(?,?,?,?,?,?,?,?,?)";
               
        pst = conexao.prepareStatement(sql);
        pst.setString(1, nome);
        pst.setString(2, txtEndeCamp.getText());
        pst.setString(3, cpf);
        pst.setString(4, txtfonecam.getText());
        pst.setString(5, TxtPlaca.getText());
        pst.setString(6, jObervacoes.getText());
        pst.setString(7, Embarca.getSelectedItem().toString());
        pst.setString(8, LTipo.getSelectedItem().toString());
        pst.setString(9, TipoUsuario.getSelectedItem().toString());
        int adicionado = pst.executeUpdate();

        if (adicionado > 0) {
            JOptionPane.showMessageDialog(null, "Campista  Cadastrado com Sucesso!");
            txtNomeCamp.setText(null);
            txtEndeCamp.setText(null);
            txtCpfCamp.setText(null);
            txtfonecam.setText(null);
            TxtPlaca.setText(null);
            jObervacoes.setText(null);
            Embarca.setSelectedItem(null);
            LTipo.setSelectedItem(null);
            TipoUsuario.setSelectedItem(null);
        }
    } catch (HeadlessException | SQLException e) {
        JOptionPane.showMessageDialog(this, e);
    }
}
1 curtida

@staroski, me tira uma dúvida, se eu pego o valor do txtNomeCamp , por exemplo, ele já não recebe ""/vazio?

1 curtida

Provavelmente vai ter momentos em que vai retornar null ao invés de "", pois nosso colega @Henri199 está fazendo chamadas como essa:

txtNomeCamp.setText(null);
2 curtidas

Hmmm, entendi. Valeu!!

2 curtidas

Amigos, primeiramente quero agradecer vcs, por pela humildade e disponibilidade que estão tento. Faz as alterações, mas agora j-só da Cpf invalido. Vou deixar a classe que estou usando pra validar.

identar texto pré-formatado por 4 espaços

public class ValidaCPF {
public static boolean ValidacaoCPF(String CPF) {
// considera-se erro CPF’s formados por uma sequencia de numeros iguais
if (CPF.equals(“00000000000”) ||
CPF.equals(“11111111111”) ||
CPF.equals(“22222222222”) || CPF.equals(“33333333333”) ||
CPF.equals(“44444444444”) || CPF.equals(“55555555555”) ||
CPF.equals(“66666666666”) || CPF.equals(“77777777777”) ||
CPF.equals(“88888888888”) || CPF.equals(“99999999999”) ||
(CPF.length() != 11))
return(false);

    char dig10, dig11;
    int sm, i, r, num, peso;
      
    // "try" - protege o codigo para eventuais erros de conversao de tipo (int)
    try {
    // Calculo do 1o. Digito Verificador
        sm = 0;
        peso = 10;
        for (i=0; i<9; i++) {              
    // converte o i-esimo caractere do CPF em um numero:
    // por exemplo, transforma o caractere '0' no inteiro 0         
    // (48 eh a posicao de '0' na tabela ASCII)         
        num = (int)(CPF.charAt(i) - 48); 
        sm = sm + (num * peso);
        peso = peso - 1;
        }
      
        r = 11 - (sm % 11);
        if ((r == 10) || (r == 11))
            dig10 = '0';
        else dig10 = (char)(r + 48); // converte no respectivo caractere numerico
      
    // Calculo do 2o. Digito Verificador
        sm = 0;
        peso = 11;
        for(i=0; i<10; i++) {
        num = (int)(CPF.charAt(i) - 48);
        sm = sm + (num * peso);
        peso = peso - 1;
        }
      
        r = 11 - (sm % 11);
        if ((r == 10) || (r == 11))
             dig11 = '0';
        else dig11 = (char)(r + 48);
      
    // Verifica se os digitos calculados conferem com os digitos informados.
        if ((dig10 == CPF.charAt(9)) && (dig11 == CPF.charAt(10)))
             return(true);
        else return(false);
            } catch (InputMismatchException erro) {
            return(false);
        }
    }
      
    public static String imprimeCPF(String CPF) {
        return(CPF.substring(0, 3) + "." + CPF.substring(3, 6) + "." +
        CPF.substring(6, 9) + "-" + CPF.substring(9, 11));
        
    }
   // public static void main(String[] args){
//if(ValidacaoCPF("95353305000")){
  // System.out.println("o cpf é valido");
//} else {
  // System.out.println("esse cpf nao existe");   
}

Se o seu validador tá com bug, copia o meu.

1 curtida