Bruno Laturner:
No equals, ao invés de várias checagens de instanceof, sobrecarregar o método, a JVM vai se encarregar de achar o certo:
public boolean equals(String cnpj)
public boolean equals(StringDigitsSequence cnpj)
public boolean equals(Long cnpj)
public boolean equals(BigInteger cnpj)
public boolean equals(Cnpj cnpj)
public boolean equals(Object cnpj) // se entrar aqui, certamente é false
hmmm…
public boolean equals(StringDigitsSequence cnpj) e public boolean equals(Cnpj cnpj) os a verdade é que StringDigitsSequence é generico de Cnpj … ele nunca vai entrar no errado ? mesmo com cast ? esses 2 não seria bom deixar no mesmo equals ? (apesar que o método de teste são iguais)…
Segundo ouvi, a sun aconselha um único return para cada método, e c vc ver, todos os meus métodos só tem 1 único return… não acho o break elegante tb, mais foi o modo que encontrei para manter um único return
Outra coisa que reparei, porém não sei se estou certo, é que um objeto CNPJ não garante sua própria integridade, digo, dá pra criar um CNPJ que não seja válido. Não sei se isto é esperado ou não.
Bom, estou fazendo meu sistema para um caso pratico, e no meu caso, tenho CPF inválidos em arquivo antigo, e acredito que alguem possa ter CNPJ inválido tb, por essa questão é possivel criar o CNPJ e o CPF inválido, assim como núlo, e a verdade é que no mundo real, CPFs e CNPJs inválidos ee falsos existem, e estão por ai em todo canto …
pensei em uma variável estatica, onde vc possa alterar o modo do CNPJ ou de outras classes como CPF, e Inscrições Estaduais, para lançar exceptions quando são criados com números invalidas.
não sei c vale a pena limitar o objeto a valores válidos, afinal, se existe CNPJ válido, é pq existe ele invalido, e pra isso que tem o isValid()
ele já existem
http://www.simrentacar.com.br/home/java/doc/org/lavieri/util/brazil/register/Cpf.html
http://www.simrentacar.com.br/home/java/doc/org/lavieri/util/brazil/register/Cpf.java
assim como tem tb, um objeto, que recupera os dados de um CEP de uma base de dados mantida por um site, que libera essa base, devolvendo um Value Object com os resultados, contendo todo os dados que o correio libera sobre um CEP, além de dados sobre a propria consulta, mais informações no link abaixo
http://www.simrentacar.com.br/home/java/doc/org/lavieri/util/brazil/cep/package-tree.html
Ps.: Essa parte do CEP nãoe sta com código fonte no site, porem tem 1 post meu aki no GUJ, falando sobre CEP, que eu postie o link pra o código fonte
funciona + ou - assim
WebServiceCep cep = CepSearchEngineByQueryString.searchCep("13345-325");
//caso a busca ocorra bem, imprime os resultados.
if (cep.wasSuccessful()) {
System.out.println("Cep: "+cep.getCep());
System.out.println("Logradouro: "+cep.getLogradouroFull());
System.out.println("Bairro: "+cep.getBairro());
System.out.println("Cidade: "+ cep.getCidade()+"/"+ cep.cep());
//caso haja problemas imprime o código e msg de erro.
} else {
System.out.println("Erro número: " + cep.getResulCode());
System.out.println("Descrição do erro: " + cep.getResultText());
} A resposta do console seria:/**
Cep: 13345325
Logradouro: Rua Cinco
Bairro: Jardim Rêmulo Zoppi
Cidade: Indaiatuba/SP
*/
…
Fora isso, tem tb a inscrição estadual, que estou criando o teste de validação, visto que cada um dos 27 estados, tem sua forma de validar, e algumas tem peculiaridades a respeito do modulo 11, enfim, estou montando a classe…
…
Ultima observação… não sei fazer teste Unit, c vc poder me dar algum link, eu agradeço