GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

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


#1

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 (WWW.sintegra.gov).
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: thiagohmatos@yahoo.com.br ou pelo fórum.


#2

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


#3

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.


#4

Que legal kra, vou baixar para testar, valeu


#5

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.


#6

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 ^^


#7

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


#8

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

.


#9

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


#10

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


#11

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...


#12

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


#13

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


#14

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

abs,

AS


#15

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


#16

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


#17

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


#18

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


#19

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


#20

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?