All Downloads are FREE. Search and download functionalities are using the official Maven repository.

org.jrimum.domkee.pessoa.AbstractCPRF Maven / Gradle / Ivy

Go to download

This is a fork and merge from JRimum ( http://www.jrimum.org ), - Bopepo: https://github.com/jrimum/bopepo - Texgit: https://github.com/jrimum/texgit - Valia: https://github.com/jrimum/vallia - Utilix: https://github.com/jrimum/utilix - Domkee: https://github.com/jrimum/domkee For Brazillian Boleto Payment Method. So much thanks for original authors: Gilmar P. S. L, Misael Barreto and Rômulo Augusto.

The newest version!
/*
 * Copyright 2008 JRimum Project
 * 
 * Licensed under the Apache License, Version 2.0 (the "License"); you may not
 * use this file except in compliance with the License. You may obtain a copy of
 * the License at http://www.apache.org/licenses/LICENSE-2.0 Unless required by
 * applicable law or agreed to in writing, software distributed under the
 * License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS
 * OF ANY KIND, either express or implied. See the License for the specific
 * language governing permissions and limitations under the License.
 * 
 * Created at: 30/03/2008 - 19:03:20
 * 
 * ================================================================================
 * 
 * Direitos autorais 2008 JRimum Project
 * 
 * Licenciado sob a Licença Apache, Versão 2.0 ("LICENÇA"); você não pode usar
 * esse arquivo exceto em conformidade com a esta LICENÇA. Você pode obter uma
 * cópia desta LICENÇA em http://www.apache.org/licenses/LICENSE-2.0 A menos que
 * haja exigência legal ou acordo por escrito, a distribuição de software sob
 * esta LICENÇA se dará “COMO ESTÁ”, SEM GARANTIAS OU CONDIÇÕES DE QUALQUER
 * TIPO, sejam expressas ou tácitas. Veja a LICENÇA para a redação específica a
 * reger permissões e limitações sob esta LICENÇA.
 * 
 * Criado em: 30/03/2008 - 19:03:20
 * 
 */
package org.jrimum.domkee.pessoa;

import static org.apache.commons.lang3.StringUtils.EMPTY;
import static org.jrimum.utilix.Strings.fillWithZeroLeft;

import org.jrimum.utilix.Exceptions;
import org.jrimum.vallia.AbstractCPRFValidator;
import org.jrimum.vallia.AbstractCPRFValidator.TipoDeCPRF;

/**
 *
 * 

* Classe que representa um * Cadastro * de Pessoas na Receita Federal, esse cadastro pode ser o de pessoas * físicas ou jurídicas. *

* *

* O cadastro tem a finalidade de identificadar cada pessoa no país, seja ela de * natureza física ou jurídica. O * Cadastro * de Pessoa Física é o CPF, já o de * Pessoa * Jurídica é o CNPJ. *

* * * @author Gilmar P.S.L. * @author Misael Barreto * @author Rômulo Augusto * * @since 0.2 * * @version 0.2 */ public abstract class AbstractCPRF implements CPRF { /** * */ private String codigoFormatado; /** * */ private Long codigo; /** * */ protected AbstractCPRFValidator autenticadorCP; /** * Cria um {@linkplain CPRF} através de um long e seu * {@linkplain TipoDeCPRF}. * * @param cadastroDePessoa * @param tipoDeCadastro * @return AbstractCPRF (CPF ou CNPJ) * @throws IllegalArgumentException */ @SuppressWarnings("unchecked") public static C create(Long cadastroDePessoa, TipoDeCPRF tipoDeCadastro) throws IllegalArgumentException { return (C) create(String.valueOf(cadastroDePessoa), tipoDeCadastro); } /** * Cria um {@linkplain CPRF} através de uma string não formatada e seu * {@linkplain TipoDeCPRF}. * * @param cadastroDePessoa não formatado * @param tipoDeCadastro tipo * @return AbstractCPRF (CPF ou CNPJ) * @throws IllegalArgumentException */ @SuppressWarnings("unchecked") public static C create(String cadastroDePessoa, TipoDeCPRF tipoDeCadastro) throws IllegalArgumentException { String codigo = null; if (AbstractCPRFValidator.isParametrosValidos(cadastroDePessoa, tipoDeCadastro)) { switch_Cadastro: { if (tipoDeCadastro == TipoDeCPRF.CPF) { codigo = fillWithZeroLeft(cadastroDePessoa, 11); break switch_Cadastro; } if (tipoDeCadastro == TipoDeCPRF.CNPJ) { codigo = fillWithZeroLeft(cadastroDePessoa, 14); break switch_Cadastro; } } } return (C) create(codigo); } /** * Cria um {@linkplain CPRF} através de uma string formatada ou não. * * @param cadastroDePessoa - identificador do cadastro de pessoa formatado * ou não. * @return uma instância de AbstractCPRF. * @throws IllegalArgumentException - caso o parâmetro não esteja em um * formatador válido de cadastro de pessoa. */ @SuppressWarnings("unchecked") public static C create(String cadastroDePessoa) throws IllegalArgumentException { AbstractCPRF cp = null; AbstractCPRFValidator autenticadorCP = AbstractCPRFValidator.create(cadastroDePessoa); if (autenticadorCP.isValido()) { if (autenticadorCP.isFisica()) { cp = new CPF(autenticadorCP .getCodigoDoCadastro()); } else if (autenticadorCP.isJuridica()) { cp = new CNPJ(autenticadorCP .getCodigoDoCadastro()); } cp.autenticadorCP = autenticadorCP; } else { Exceptions.throwIllegalArgumentException( "O cadastro de pessoa [ \"" + cadastroDePessoa + "\" ] não é válido."); } return (C) cp; } /** * @return boolean */ public boolean isFisica() { return autenticadorCP.isFisica(); } /** * @return boolean */ public boolean isJuridica() { return autenticadorCP.isJuridica(); } protected void setCodigoFormatado(String codigoFormatado) { this.codigoFormatado = codigoFormatado; } protected void setCodigo(Long codigo) { this.codigo = codigo; } public Long getCodigo() { return codigo; } public String getCodigoComZeros() { if (isFisica()) { return fillWithZeroLeft(getCodigo(), 11); } else { return fillWithZeroLeft(getCodigo(), 14); } } public String getCodigoFormatado() { return codigoFormatado; } public Long getRaiz() { if (isFisica()) { return Long.valueOf(codigoFormatado.split("-")[0].replaceAll("\\.", EMPTY)); } else { return Long.valueOf(codigoFormatado.split("/")[0].replaceAll("\\.", EMPTY)); } } public String getRaizComZeros() { if (isFisica()) { return fillWithZeroLeft(getRaiz(), 9); } else { return fillWithZeroLeft(getRaiz(), 8); } } public String getRaizFormatada() { if (isFisica()) { return codigoFormatado.split("-")[0]; } else { return codigoFormatado.split("/")[0]; } } public Integer getDv() { return Integer.valueOf(codigoFormatado.split("-")[1]); } public String getDvComZeros() { return codigoFormatado.split("-")[1]; } /** * Realizado através da ordem natural do {@linkplain #getCodigo()}. * * @see java.lang.Comparable#compareTo(java.lang.Object) */ public int compareTo(Object other) { if (other != null) { if (other instanceof AbstractCPRF) { AbstractCPRF cprf = (AbstractCPRF) other; if (this.autenticadorCP.isFisica()) { return this.codigo.compareTo(cprf.codigo); } else { return this.autenticadorCP.getCodigoDoCadastro().compareTo(cprf.autenticadorCP.getCodigoDoCadastro()); } } else { return -1; } } else { return 1; } } /** * @see java.lang.Object#hashCode() */ @Override public int hashCode() { final int prime = 31; int result = 1; result = prime * result + ((codigo == null) ? 0 : codigo.hashCode()); result = prime * result + ((codigoFormatado == null) ? 0 : codigoFormatado.hashCode()); return result; } /** * @see java.lang.Object#equals(java.lang.Object) */ @Override public boolean equals(Object obj) { if (this == obj) { return true; } if (obj == null) { return false; } if (!(obj instanceof AbstractCPRF)) { return false; } AbstractCPRF other = (AbstractCPRF) obj; if (codigo == null) { if (other.codigo != null) { return false; } } else if (!codigo.equals(other.codigo)) { return false; } if (codigoFormatado == null) { if (other.codigoFormatado != null) { return false; } } else if (!codigoFormatado.equals(other.codigoFormatado)) { return false; } return true; } /** * @see java.lang.Object#toString() */ @Override public String toString() { return getCodigoFormatado(); } }




© 2015 - 2024 Weber Informatics LLC | Privacy Policy