Subversion Repositories Integrator Subversion

Rev

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
}