Package br.com.caelum.stella.tinytype

Source Code of br.com.caelum.stella.tinytype.CNPJ

package br.com.caelum.stella.tinytype;

import br.com.caelum.stella.format.CNPJFormatter;
import br.com.caelum.stella.validation.CNPJValidator;

/**
* Representa um Cadastro Nacional da Pessoa Jurídica - CNPJ.
*
* @author leobessa
*/
public final class CNPJ {

    /**
     * Número do CNPJ. Possui apenas os caracteres numéricos.
     */
    private final String numero;

    /**
     * Número do CNPJ. No formato dd.ddd.ddd/dddd-dd .
     */
  private String numeroFormatado;

    /**
     * Constrói um CPF com o número especificado. Se o número contiver
     * apenas caracteres numéricos ou estiver no formato dd.ddd.ddd/dddd-dd,
     * ele é guardado com e sem formatação nos respectivos atributos.
     * Caso contrário, ele guarda o parâmetro como passado em ambos os atributos.
     *
     * @param numero número do CPF.
     */
    public CNPJ(String numero) {
      CNPJFormatter formatador = new CNPJFormatter();
      if (formatador.isFormatted(numero)) {
      this.numero = formatador.unformat(numero);
      this.numeroFormatado = numero;
    } else if (formatador.canBeFormatted(numero)) {
      this.numero = numero;
      this.numeroFormatado = formatador.format(numero);
    } else {
      this.numero = this.numeroFormatado = numero;
    }
    }

    /**
     * Retorna o número do CNPJ apenas com os caracteres numéricos.
     *
     * @return número do CNPJ.
     */
    public String getNumero() {
        return numero;
    }

    /**
     * Retorna o número do CNPJ no formato dd.ddd.ddd/dddd-dd .
     *
     * @return número do CNPJ no formato dd.ddd.ddd/dddd-dd .
     */
    public String getNumeroFormatado() {
      return numeroFormatado;
    }

    /**
     * Retorna se o número do CNPJ é válido. O resultado é <code>true</code>
     * se os dígitos verificadores estão de acordo com a regra de cálculo.
     *
     * @return se o número do CNPJ é valido.
     *
     * @see CNPJValidator
     */
    public boolean isValid() {
      return new CNPJValidator().invalidMessagesFor(numero).isEmpty();
    }

    /**
     * Retorna uma representação em string desse CNPJ. A intenção desse método
     * é ser usado para impressão e retorna o número no formato dd.ddd.ddd/dddd-dd .
     *
     * @return número do CNPJ no formato dd.ddd.ddd/dddd-dd .
     */
    @Override
    public String toString() {
      return getNumeroFormatado();
    }

    /**
     * Retorna um hash code para esse CPNJ.
     *
     * @return um valor de hash code para esse objeto.
     */
    @Override
    public int hashCode() {
        final int prime = 31;
        int result = 1;
        result = prime * result + ((numero == null) ? 0 : numero.hashCode());
        return result;
    }

    /**
     * Compara esse <code>CNPJ</code> ao <code>Object</code>
     * especificado.  O resultado é <code>true</code> se e só se
     * o argumento é um objeto <code>CNPJ</code> com o mesmo número.
     *
     * @param obj o objeto a ser comparado
     * @return <code>true</code> se esse objeto é igual a <code>obj</code>;
     * <code>false</code> caso contrário.
     */
    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
      return true;
    }
        if (obj == null) {
      return false;
    }
        if (getClass() != obj.getClass()) {
      return false;
    }
        final CNPJ other = (CNPJ) obj;
        if (numero == null) {
            if (other.numero != null) {
        return false;
      }
        } else if (!numero.equals(other.numero)) {
      return false;
    }
        return true;
    }

}
TOP

Related Classes of br.com.caelum.stella.tinytype.CNPJ

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.