org.jrimum.bopepo.campolivre.AbstractCLItau Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of bpp-cobranca Show documentation
Show all versions of bpp-cobranca Show documentation
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: 16/04/2008 - 23:08:17
*
* ================================================================================
*
* 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: 16/04/2008 - 23:08:17
*
*/
package org.jrimum.bopepo.campolivre;
import static org.jrimum.vallia.Modulo.MOD10;
import java.util.HashSet;
import java.util.Set;
import org.jrimum.domkee.banco.Titulo;
import org.jrimum.vallia.Modulo;
/**
*
* Interface comum para todos os campos livres do Banco Itaú que venham a
* existir.
*
*
* @author Gilmar P.S.L
* @author Rômulo Augusto
*
* @since 0.2
*
* @version 0.2
*/
abstract class AbstractCLItau extends AbstractCampoLivre {
/**
*
*/
private static final long serialVersionUID = -3082903872777434482L;
/**
*
* Carteiras especiais sem registro na qual são utilizadas 15 posições numéricas
* para identificação do título liquidado (8 do Nosso Número e 7 do Seu Número).
*
*/
private static final Set CARTEIRAS_ESPECIAIS = new HashSet(8);
static{
CARTEIRAS_ESPECIAIS.add(106);
CARTEIRAS_ESPECIAIS.add(107);
CARTEIRAS_ESPECIAIS.add(122);
CARTEIRAS_ESPECIAIS.add(142);
CARTEIRAS_ESPECIAIS.add(143);
CARTEIRAS_ESPECIAIS.add(195);
CARTEIRAS_ESPECIAIS.add(196);
CARTEIRAS_ESPECIAIS.add(198);
}
/**
* Cria um campo livre com um determinado número de campos
*
* @see AbstractCampoLivre
*
* @param fieldsLength - Número de campos
*/
protected AbstractCLItau(Integer fieldsLength) {
super(fieldsLength);
}
protected static CampoLivre create(Titulo titulo){
checkCarteiraNotNull(titulo);
checkCodigoDaCarteira(titulo);
/*
* Se a carteira for especial, a forma de construir o campo livre será diferente.
*/
if(CARTEIRAS_ESPECIAIS.contains(titulo.getContaBancaria().getCarteira().getCodigo())) {
return new CLItauComCarteirasEspeciais(titulo);
}else {
return new CLItauPadrao(titulo);
}
}
/**
*
* Método auxiliar para calcular o dígito verificador dos campos 31 e 41.
* O dígito é calculado com base em um campo fornecido pelos métodos que o chamam
* (calculeDigitoDaPosicao31
e calculeDigitoDaPosicao41
)
*
*
* O cálculo é feito através do módulo 10.
*
*
* @param campo
* @return Dígito verificador do campo fornecido.
*
* @since
*/
protected Integer calculeDigitoVerificador(String campo) {
int restoDivisao = Modulo.calculeMod10(campo, 1, 2);
int digito = MOD10 - restoDivisao;
if(digito > 9) {
digito = 0;
}
return new Integer(digito);
}
}