Details | Last modification | View Log | RSS feed
| Rev | Author | Line No. | Line |
|---|---|---|---|
| 623 | blopes | 1 | package br.com.ec.domain.util; |
| 2 | |||
| 3 | public class ValidadorCpfCnpjUtil { |
||
| 4 | |||
| 5 | public static boolean isCPF(String CPF) { |
||
| 6 | // considera-se erro CPF's formados por uma sequencia de numeros iguais |
||
| 7 | if (CPF.equals("00000000000") || CPF.equals("11111111111") || |
||
| 8 | CPF.equals("22222222222") || CPF.equals("33333333333") || |
||
| 9 | CPF.equals("44444444444") || CPF.equals("55555555555") || |
||
| 10 | CPF.equals("66666666666") || CPF.equals("77777777777") || |
||
| 11 | CPF.equals("88888888888") || CPF.equals("99999999999") || |
||
| 12 | (CPF.length() != 11)) |
||
| 13 | return(false); |
||
| 14 | |||
| 15 | char dig10, dig11; |
||
| 16 | int sm, i, r, num, peso; |
||
| 17 | |||
| 18 | // "try" - protege o codigo para eventuais erros de conversao de tipo (int) |
||
| 19 | try { |
||
| 20 | // Calculo do 1o. Digito Verificador |
||
| 21 | sm = 0; |
||
| 22 | peso = 10; |
||
| 23 | for (i=0; i<9; i++) { |
||
| 24 | // converte o i-esimo caractere do CPF em um numero: |
||
| 25 | // por exemplo, transforma o caractere '0' no inteiro 0 |
||
| 26 | // (48 eh a posicao de '0' na tabela ASCII) |
||
| 27 | num = (int)(CPF.charAt(i) - 48); |
||
| 28 | sm = sm + (num * peso); |
||
| 29 | peso = peso - 1; |
||
| 30 | } |
||
| 31 | |||
| 32 | r = 11 - (sm % 11); |
||
| 33 | if ((r == 10) || (r == 11)) |
||
| 34 | dig10 = '0'; |
||
| 35 | else dig10 = (char)(r + 48); // converte no respectivo caractere numerico |
||
| 36 | |||
| 37 | // Calculo do 2o. Digito Verificador |
||
| 38 | sm = 0; |
||
| 39 | peso = 11; |
||
| 40 | for(i=0; i<10; i++) { |
||
| 41 | num = (int)(CPF.charAt(i) - 48); |
||
| 42 | sm = sm + (num * peso); |
||
| 43 | peso = peso - 1; |
||
| 44 | } |
||
| 45 | |||
| 46 | r = 11 - (sm % 11); |
||
| 47 | if ((r == 10) || (r == 11)) |
||
| 48 | dig11 = '0'; |
||
| 49 | else dig11 = (char)(r + 48); |
||
| 50 | |||
| 51 | // Verifica se os digitos calculados conferem com os digitos informados. |
||
| 52 | if ((dig10 == CPF.charAt(9)) && (dig11 == CPF.charAt(10))) |
||
| 53 | return(true); |
||
| 54 | else return(false); |
||
| 55 | } catch (Exception erro) { |
||
| 56 | return(false); |
||
| 57 | } |
||
| 58 | } |
||
| 59 | |||
| 60 | public static String imprimeCPF(String CPF) { |
||
| 61 | return(CPF.substring(0, 3) + "." + CPF.substring(3, 6) + "." + |
||
| 62 | CPF.substring(6, 9) + "-" + CPF.substring(9, 11)); |
||
| 63 | } |
||
| 64 | |||
| 65 | public static boolean isCNPJ(String CNPJ) { |
||
| 66 | // considera-se erro CNPJ's formados por uma sequencia de numeros iguais |
||
| 67 | if (CNPJ.equals("00000000000000") || CNPJ.equals("11111111111111") || |
||
| 68 | CNPJ.equals("22222222222222") || CNPJ.equals("33333333333333") || |
||
| 69 | CNPJ.equals("44444444444444") || CNPJ.equals("55555555555555") || |
||
| 70 | CNPJ.equals("66666666666666") || CNPJ.equals("77777777777777") || |
||
| 71 | CNPJ.equals("88888888888888") || CNPJ.equals("99999999999999") || |
||
| 72 | (CNPJ.length() != 14)) |
||
| 73 | return(false); |
||
| 74 | |||
| 75 | char dig13, dig14; |
||
| 76 | int sm, i, r, num, peso; |
||
| 77 | |||
| 78 | // "try" - protege o código para eventuais erros de conversao de tipo (int) |
||
| 79 | try { |
||
| 80 | // Calculo do 1o. Digito Verificador |
||
| 81 | sm = 0; |
||
| 82 | peso = 2; |
||
| 83 | for (i=11; i>=0; i--) { |
||
| 84 | // converte o i-ésimo caractere do CNPJ em um número: |
||
| 85 | // por exemplo, transforma o caractere '0' no inteiro 0 |
||
| 86 | // (48 eh a posição de '0' na tabela ASCII) |
||
| 87 | num = (int)(CNPJ.charAt(i) - 48); |
||
| 88 | sm = sm + (num * peso); |
||
| 89 | peso = peso + 1; |
||
| 90 | if (peso == 10) |
||
| 91 | peso = 2; |
||
| 92 | } |
||
| 93 | |||
| 94 | r = sm % 11; |
||
| 95 | if ((r == 0) || (r == 1)) |
||
| 96 | dig13 = '0'; |
||
| 97 | else dig13 = (char)((11-r) + 48); |
||
| 98 | |||
| 99 | // Calculo do 2o. Digito Verificador |
||
| 100 | sm = 0; |
||
| 101 | peso = 2; |
||
| 102 | for (i=12; i>=0; i--) { |
||
| 103 | num = (int)(CNPJ.charAt(i)- 48); |
||
| 104 | sm = sm + (num * peso); |
||
| 105 | peso = peso + 1; |
||
| 106 | if (peso == 10) |
||
| 107 | peso = 2; |
||
| 108 | } |
||
| 109 | |||
| 110 | r = sm % 11; |
||
| 111 | if ((r == 0) || (r == 1)) |
||
| 112 | dig14 = '0'; |
||
| 113 | else dig14 = (char)((11-r) + 48); |
||
| 114 | |||
| 115 | // Verifica se os dígitos calculados conferem com os dígitos informados. |
||
| 116 | if ((dig13 == CNPJ.charAt(12)) && (dig14 == CNPJ.charAt(13))) |
||
| 117 | return(true); |
||
| 118 | else return(false); |
||
| 119 | } catch (Exception erro) { |
||
| 120 | return(false); |
||
| 121 | } |
||
| 122 | } |
||
| 123 | |||
| 124 | public static String imprimeCNPJ(String CNPJ) { |
||
| 125 | // máscara do CNPJ: 99.999.999.9999-99 |
||
| 126 | return(CNPJ.substring(0, 2) + "." + CNPJ.substring(2, 5) + "." + |
||
| 127 | CNPJ.substring(5, 8) + "." + CNPJ.substring(8, 12) + "-" + |
||
| 128 | CNPJ.substring(12, 14)); |
||
| 129 | } |
||
| 130 | |||
| 131 | } |