Biblioteca para Validação de CNPJ, CPF, IE

19 respostas
T

Salve, salve galera do GUJ.

Sou iniciante em Java e criei uma biblioteca para validar CNPJ, CPF e IE.

Estou disponibilizando a mesma para avaliação. Se alguém gostar e quiser utilizar em suas aplicações sinta se a vontade. A lib. foi implementada com base nas informações do sintegra (<a href="http://WWW.sintegra.gov">WWW.sintegra.gov</a>).

Bem meu objetivo em postar esta lib. No fórum é receber opiniões e sugestões a seu repeito.

A utilização é simples, feita através da classe Validar de três métodos:

Construtor da classe validar: Validar(String t,String n)

// ‘t’ = tipo de validação desejada ex: cpf, CNPJ, SP, RJ e ‘n’ = número a ser validado.

Método que efetua a validação: verificador()

// retorna boolean.

Método que retorna o número: retornaNumFormatado()

// retorna a seqüência numérica validada acrescida dos caracteres especiais como: ?/?, ?.?,?-?etc .

No arquivo .rar também postei um formulário Swing para teste da biblioteca.

Link para baixar a biblioteca.: http://rapidshare.com/files/381411839/ValidacaoBR.rar.html

Link para baixar a biblioteca + código fonte.: http://rapidshare.com/files/381412642/ValidacaoBR_Jar_fonte.rar.html

Desde já obrigado

Contato: [email removido] ou pelo fórum.

19 Respostas

R

parabéns pela iniciativa de postar seu conhecimento…

existe uma biblioteta bem famosa por ter varias utilidades pra quem desenvolve soft brasileiro, é open source e vale dar uma olhada, até mesmo pra estudo

http://stella.caelum.com.br/

abrassssss

L

Existe um projeto brasileiro que faz essas validações (além de outras)

o nome do projeto se chama Stella o link para ele é http://stella.caelum.com.br/

ele utiliza no momento Hibernate Validator 3 para validar, mas em breve vai sair versão validando com o Bean Validator, que é a API padrão do Java EE 6… talvez valha a pena dar uma olhada no projeto, usar anotações em beans, é hoje a forma padrão de se validar com java…

De toda forma, parabens pela iniciativa.

C

Que legal kra, vou baixar para testar, valeu

G

Lavieri:
Existe um projeto brasileiro que faz essas validações (além de outras)

o nome do projeto se chama Stella o link para ele é http://stella.caelum.com.br/

Faz tanto tempo que eu não vejo movimentação do pessoal do stella que achei que o projeto estava zumbi. Semana passada eu fiz um projeto para validar essas coisas usando a JSR303 pensando em depois de testar publicar. Mas já que o stella tá saindo, vamos ver como vai ficar.

Hmm, tão novo assim no Java e já disponibilizando uma lib para a comunidade… meus parabéns pela iniciativa.

L

garcia-jj:
Lavieri:
Existe um projeto brasileiro que faz essas validações (além de outras)

o nome do projeto se chama Stella o link para ele é http://stella.caelum.com.br/

Faz tanto tempo que eu não vejo movimentação do pessoal do stella que achei que o projeto estava zumbi. Semana passada eu fiz um projeto para validar essas coisas usando a JSR303 pensando em depois de testar publicar. Mas já que o stella tá saindo, vamos ver como vai ficar.

já ta feito para o Bean Validator… fui eu que fiz na verdade… o.O

só falta publicar, é que sou pessimo na arte de FORK/MARGE no git hub … ai só sai com assistencia do lucas… mas já fiz e já testei no JSR 303 e esta funcionando OK ^^

G

Hmm, então já sei que posso esperar por coisa boa mesmo. Se tiver um snapshot manda o link :smiley:

L

Ta ai …

O caelum-stella-core-1.2.jar é o mesmo do site, é o core original 1.2

o caelum-stella-validator-1.2.jar é o pacote para bean validators em conformidade com o JSR 303

como nem precisa dizer o core é necessário. E é o jar orignal apenas com os .class, você pode pegar diretamente do site stella original.

o validator é o “caelum-stella-validator-1.2.jar” e além dos .class também tem os .java

.

G

Lavieri, obrigado. Cerveja por minha conta quando eu fazer uma visita aí para esses lados :slight_smile:

T

Valew pela foça

 tinha baixado a Stella e a BrazilUtils mais  num primeiro momento resolvi não descompactar por alguns motivos. O primeiro é que recem formado precisa é por a mão na massa, o segundo é que com conhecimento limitado iria levar algum tempo para compreender o funcionamento destas lib. consagradas que agora com certaza irei utilizar.

O objetivo pricipal foi desenvolver para afirmar alguns conceitos importantes da linguajem como: herança, polimorfismo e encapsulamento.

Fiz varios testes e achei facil de usar pra quem  comessando, aplicavel a praticamente todos componentes swing.

Obs: Bom a quem se interessar pelo SRC já fica aqui registrado o meu pedido de desculpas pela falta de comentários no código

L
ThiagoMatos:
Valew pela foça

Já tinha baixado a Stella e a BrazilUtils mais num primeiro momento resolvi não descompactar por alguns motivos. O primeiro é que recem formado precisa é por a mão na massa, o segundo é que com conhecimento limitado iria levar algum tempo para compreender o funcionamento destas lib. consagradas que agora com certaza irei utilizar.
O objetivo pricipal foi desenvolver para afirmar alguns conceitos importantes da linguajem como: herança, polimorfismo e encapsulamento.

Fiz varios testes e achei facil de usar pra quem tá comessando, aplicavel a praticamente todos componentes swing.
Obs: Bom a quem se interessar pelo SRC já fica aqui registrado o meu pedido de desculpas pela falta de comentários no código

se vc for bom de inglês, da uma lida aqui =>> http://docs.jboss.org/hibernate/stable/validator/reference/en/html_single/

em resumo, uma validação Beans Validator ficaraia assim

public Empresa {
    @Cnpj
    private String cnpj;
    @NotEmpty
    private String nome;
    @Email
    private String email;
    //gettrs and setter
}
para criar um validador vc só precisa usar esses comandos
ValidatorFactory factory = Validation.buildDefaultValidatorFactory();
        validator = factory.getValidator();
e para validar algo seria assim;
Empresa empresa = new Empresa();

emrepsa.setNome("Coca cola");
empresa.setEmail("ou louco meu");

 Set<ConstraintViolation<Empresa>> violacoes = validator.validate(empresa);

se violacoes.isEmpty() é pq passou em todos os testes, caso contrario vc pode ver quais forem os problemas usando a api do COnstraintViolation ....

para mais informações, verificar a api no link

abraços!!!

e continue assim, buscando novas soluções...

T

Lavieri valeu pela dica
Nunca usei o hibernate. Vi que vc já o tinha citado anteriormente e dei uma procurada na web pra saber do que se trata.
O link vai ajudar bastante já que o meu ingles não é dos piores.

Duvida: Hibernate só funciona com Java EE? PQ estou desenvolvendo uma aplicação SE e tenho intenção de usar o stela mais se conseguir atingir aos padrões não tem motivos para não utilizar a ValidacaoBR.

mais uma vez obrigado por mostrar o caminho.

Abrass

G

Não. Você pode usa-lo em ambiente JEE ou até mesmo em ambiente JSE normalmente.

A

Importei o stella mas como faço para usá-lo na minha web app?

abs,

AS

L

ThiagoMatos:
Lavieri valeu pela dica
Nunca usei o hibernate. Vi que vc já o tinha citado anteriormente e dei uma procurada na web pra saber do que se trata.
O link vai ajudar bastante já que o meu ingles não é dos piores.

Duvida: Hibernate só funciona com Java EE? PQ estou desenvolvendo uma aplicação SE e tenho intenção de usar o stela mais se conseguir atingir aos padrões não tem motivos para não utilizar a ValidacaoBR.

mais uma vez obrigado por mostrar o caminho.

Abrass

Bom, só para informar algumas coisas … o Hibernate é só uma das várias implementações para o BEAN VALIDATOR JS303 … pode haver outras…

Ela não depende do JEE, basta você colocar o pacoter das especificação JSR 303 dentro do seu classpath, e colcoar o pacote de uma implementação (por exemplo o hiberante) …

Feito isso é só usar… você pode criar facilmente suas proprias validações, é realmente bem simples, aquele link te esnina como fazer isso… você pode criar validações como combinações de outras validações existentes, ou criar uma totalmente nova…

qualquer dúvida fala ai

L

andredecotia:
Importei o stella mas como faço para usá-lo na minha web app?

abs,

AS

http://guj.com.br/posts/list/205405.java#1043594

mais ou menos assim… só que o CNPJ do stella é todo maiusculo =P …

para usar com o pacote que eu coloquei aki neste post, ou seja com o Beans Validator (equivalente ao Hiberante Validator 4) é necessário ter o jar do hiberante na pasta lib

T

Como usar na minha aplicação hibernate, onde devo chamar esta lib, no model, no control ou no view? Dê umexemplo prático

F

Alguem saberia me informar se estas bibliotecas de validação do Stella são compativeis com o JSF 2.0 ??

P

ThiagoMatos:
Salve, salve galera do GUJ.

Sou iniciante em Java e criei uma biblioteca para validar CNPJ, CPF e IE.

Estou disponibilizando a mesma para avaliação. Se alguém gostar e quiser utilizar em suas aplicações sinta se a vontade. A lib. foi implementada com base nas informações do sintegra (<a href="http://WWW.sintegra.gov">WWW.sintegra.gov</a>).

Bem meu objetivo em postar esta lib. No fórum é receber opiniões e sugestões a seu repeito.

A utilização é simples, feita através da classe Validar de três métodos:

Construtor da classe validar: Validar(String t,String n)

// ‘t’ = tipo de validação desejada ex: cpf, CNPJ, SP, RJ e ‘n’ = número a ser validado.

Método que efetua a validação: verificador()

// retorna boolean.

Método que retorna o número: retornaNumFormatado()

// retorna a seqüência numérica validada acrescida dos caracteres especiais como: ?/?, ?.?,?-?etc .

No arquivo .rar também postei um formulário Swing para teste da biblioteca.

Link para baixar a biblioteca.: http://rapidshare.com/files/381411839/ValidacaoBR.rar.html

Link para baixar a biblioteca + código fonte.: http://rapidshare.com/files/381412642/ValidacaoBR_Jar_fonte.rar.html

Desde já obrigado

Contato: [email removido] ou pelo fórum.

Thiago, posso adicionar sua contribuição no proj: http://code.google.com/p/opensutils-br4j/ ??

R

Ressucitando um tópico antigo mas td bem, tou precisando de uma ajudinha, certamente vcs trataram isso nas bibliotecas que vcs desenvolveram. Pois bem, estou utilizando o bean validator em um projeto e pra validar o cpf(deve ser válido e unico na base de dados)eu criei minha anotação:

@Documented
@Constraint(validatedBy = CPFUniqueConstraintValidator.class)
@Target({ ElementType.METHOD, ElementType.FIELD })
@Retention(RetentionPolicy.RUNTIME)
public @interface CPFUniqueConstraint {
	String message() default "{}";
	Class<?>[] groups() default {};
    Class<? extends Payload>[] payload() default {};

}
public class CPFUniqueConstraintValidator  implements ConstraintValidator<CPFUniqueConstraint, String> {
	
	
	public boolean isValid(String value, ConstraintValidatorContext ctx) {
			
		InitialContext ic = null ;
		 ResponsavelFacade rf = null;	
		 try {
			ic = new InitialContext();
			rf = (ResponsavelFacade)ic.lookup(ResponsavelFacade.URI);
		} catch (NamingException e) {
			e.printStackTrace();
		}
		  
		 if(value == null || value.isEmpty())
		 { 
			 ConstraintValidatorContext.ConstraintViolationBuilder builder =
						ctx.buildConstraintViolationWithTemplate("cpf=Informe o CPF");
					    builder.addConstraintViolation();
						return false;
		 }	
		 	 
		 if(!CnpjCpf.isValidCPF(value)){
			 
			 ConstraintValidatorContext.ConstraintViolationBuilder builder =
						ctx.buildConstraintViolationWithTemplate("cpf=Informe um número de CPF válido");
					    builder.addConstraintViolation();
						return false; 
			 
		 }	
		long count  = rf.findCountCPFResponsavel(value);	
		if(count > 0){	
			 ConstraintValidatorContext.ConstraintViolationBuilder builder =
						ctx.buildConstraintViolationWithTemplate("cpf=CPF já cadastrado na base de dados");
					    builder.addConstraintViolation();
						return false;
		}	
		return true;
	}
	@Override
	public void initialize(CPFUniqueConstraint arg0) {
		
	}

}

A anotação funciona, entretanto só quando estou inserindo, mas se por acaso na classe"Responsavel" que tem esse atributitos cpf e nome, se eu altero o nome e dou um update nessa classe, ele entra nessa anotação de validação e não deixa alterar porque o CPF já está cadastrado, como resolver essa situação?

Criado 29 de abril de 2010
Ultima resposta 10 de jan. de 2015
Respostas 19
Participantes 10