org.jrimum.bopepo.BancosSuportados Maven / Gradle / Ivy
Show all versions of bpp-cobranca Show documentation
/*
* 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:08:39
*
* ================================================================================
*
* 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:08:39
*
*/
package org.jrimum.bopepo;
import java.util.HashMap;
import java.util.Map;
import org.jrimum.domkee.pessoa.CNPJ;
import org.jrimum.domkee.banco.Banco;
import org.jrimum.domkee.banco.CodigoDeCompensacaoBACEN;
/**
*
* Enumeração dos bancos segundo o supervisão da BACEN em
* funcionamento no país e que possuem pelo menos uma implementação de
* ICampoLivre
.
*
*
*
* A partir de um EnumBanco
específico, como o
* BANCO_DO_BRASIL
, você pode solicitar um nova instância de um
* banco representado por IBanco
ou utilizar as costantes
* enumeradas e não enumeradas como melhor for o caso.
*
*
* EXEMPLOS:
*
*
* Para uma nova instância do Banco do Brasil faça:
*
*
* IBanco bancoDoBrasil = EnumBancos.BANCO_DO_BRASIL.newInstance();
*
*
*
*
* Para utilizar somento o código de compensação:
*
*
* EnumBancos.BANCO_DO_BRASIL.getCodigoDeCompensacao();
*
*
*
*
* Para saber se um banco é suportado pelo componete, veja a lista antes
* (LinkParaLista) ou faça:
*
*
* EnumBancos.isSuportado(banco.getCodigoDeCompensacao)
*
*
*
* @author Gilmar P.S.L.
* @author Misael Barreto
* @author Rômulo Augusto
* @author Samuel Valério
* @author Lukas
* Antunes - Colaborador com o banco Intermedium (077)
* @author Fernando Dias -
* Colaborador com o banco Rural (453)
* @author Paulo Porto - Colaborador com o
* Banco do Nordeste do Brasil (004).
* @author Fabiano Carrijo -
* Colaborador com o Banco Citibank (756).
* @author Douglas Ramiro -
* Colaborador com o Banco de Brasília (070).
*
* @see org.jrimum.bopepo.campolivre.CampoLivre
* @see org.jrimum.domkee.banco.Banco
*
* @since 0.2
*
* @version 0.2
*/
public enum BancosSuportados {
/*
* <=====================================================================>
* Observe que toda a enumeração segue a ORDEM dos códigos de compensação.
* Caso queira modificar alguma coisa, leve sempre em consideração essa
* ORDEM.
* <=====================================================================>
*/
/**
* Tipo enumerado que representa o Banco do Brasil, código
* de compensação 001 site.
*
* @since 0.2
*/
BANCO_DO_BRASIL("001", "00000000000191", "BANCO DO BRASIL S.A.", "Banco do Brasil - Banco Múltiplo"),
/**
* Tipo enumerado que representa o Banco do Nordeste do
* Brasil, código de compensação 004
* (site).
*
* @since 0.2-Helio
*/
BANCO_DO_NORDESTE_DO_BRASIL("004", "07237373000120", "BANCO DO NORDESTE DO BRASIL S.A.", "Banco Múltiplo"),
/**
* Tipo enumerado que representa o Banestes, Banco do Estado do
* Espírito Santo, código de compensação
* 021
*
* site.
*
* @since 0.2
*/
BANCO_DO_ESTADO_DO_ESPIRITO_SANTO("021", "28127603000178", "BANCO DO ESTADO DO ESPIRITO SANTO S.A.", "Banco Múltiplo"),
/**
* Tipo enumerado que representa o Santander Banco Santander
* (Brasil) S. A., código de compensação 033
* site.
*
* @since 0.2
*/
BANCO_SANTANDER("033", "90400888000142", "BANCO SANTANDER (BRASIL) S. A.", "Banco Mútiplo"),
/**
* Tipo enumerado que representa o Banrisul, Banco do Estado do Rio
* Grande do Sul, código de compensação
* 041
* site.
*
* @since 0.2
*/
BANCO_DO_ESTADO_DO_RIO_GRANDE_DO_SUL("041", "92702067000196", "BANCO DO ESTADO DO RIO GRANDE DO SUL S.A.", "Banco Múltiplo"),
/**
* Tipo enumerado que representa o Banco BRB - Banco de
* Brasília, código de compensação 070 site.
*
* @since 0.2
*/
BANCO_DE_BRASILIA("070", "00000208000100", "BRB- Banco de Brasília S.A.", "Banco Múltiplo"),
/**
* Tipo enumerado que representa o BANISA, Banco
* Intermedium, código de compensação
* 077
*
* site.
*
* @since 0.2
*/
BANCO_INTEMEDIUM("077", "00416968000101", "BANCO INTERMEDIUM S.A.", "Banco Múltiplo"),
/**
* Tipo enumerado que representa o CECRED, Cooperativa Central de
* Crédito Urbano, código de compensação
* 085
* site.
*
* @since 0.2
*/
CECRED("085", "05.463.212/0001-29", "COOPERATIVA CENTRAL DE CRÉDITO URBANO - CECRED", "Cooperativa de Crédito"),
/**
* Tipo enumerado que representa o Banco Caixa Econômica
* Federal, código de compensação 104 site.
*
* @since 0.2
*/
CAIXA_ECONOMICA_FEDERAL("104", "00360305000104", "CAIXA ECONOMICA FEDERAL", "Caixa Econômica Federal"),
/**
* Tipo enumerado que representa o Banco Bradesco, código
* de compensação 237
* site.
*
* @since 0.2
*/
BANCO_BRADESCO("237", "60746948000112", "BANCO BRADESCO S.A.", "Banco Múltiplo"),
/**
* Tipo enumerado que representa o Banco Itaú, código de
* compensação 341
* site.
*
* @since 0.2
*/
BANCO_ITAU("341", "60701190000104", "BANCO ITAÚ S.A.", "Banco Múltiplo"),
/**
* Tipo enumerado que representa o Banco ABN AMRO Real
* (http://www.bancoreal.com.br),
* código de compensação 356.
*
* Obs: Os bancos Sudameris e Bandepe
* foram incorporados ao Banco Real, portanto para gerar boletos bancários
* dos bancos citados utilize este tipo enumerado.
*
*
* @since 0.2
*/
BANCO_ABN_AMRO_REAL("356", "33066408000115", "BANCO ABN AMRO REAL S.A.", "Banco Múltiplo"),
/**
* Tipo enumerado que representa o Banco Mercantil do
* Brasil
* (http://www.mercantildobrasil.com.br),
* código de compensação 389.
*
* @since 0.2
*/
MERCANTIL_DO_BRASIL("389", "17184037000110", "BANCO MERCANTIL DO BRASIL S.A.", "Banco Múltiplo"),
/**
* Tipo enumerado que representa o HSBC, código de
* compensação 399 site.
*
* @since 0.2
*/
HSBC("399", "01701201000189", "HSBC BANK BRASIL S.A.", "Banco Múltiplo"),
/**
* Tipo enumerado que representa o Unibanco, código de
* compensação 409 site.
*
* @since 0.2
*/
UNIBANCO("409", "33700394000140", "UNIBANCO-UNIAO DE BANCOS BRASILEIROS S.A.", "Banco Múltiplo"),
/**
* Tipo enumerado que representa o Unibanco, código de
* compensação 422 site.
*
* @since 0.2
*/
BANCO_SAFRA("422", "58160789000128", "BANCO SAFRA S.A.", "Banco Múltiplo"),
/**
* Tipo enumerado que representa o Citibank, código de
* compensação 756 site.
*
* @since 0.2
*/
CITIBANK("745", "33479023000180", "BANCO CITIBANK S.A.", "Banco Múltiplo"),
/**
* Tipo enumerado que representa o Banco Sicredi, código de
* compensação 748 site.
*
* @since 0.2
*/
BANCO_SICREDI("748", "01181521000155", "BANCO COOPERATIVO SICREDI S.A.", "Banco Mútiplo Cooperativo"),
/**
* Tipo enumerado que representa o Banco Rural, código de
* compensação 453 site.
*
* @since 0.2
*/
BANCO_RURAL("453", "58160789000128", "BANCO RURAL S.A.", "Banco Múltiplo"),
/**
* Tipo enumerado que representa o Bancoob, código de
* compensação 756 site.
*
* @since 0.2
*/
BANCOOB("756", "02038232000164", "BANCO COOPERATIVO DO BRASIL S.A. - BANCOOB", "Banco Comercial Cooperativo");
/**
* Singleton Map
para pesquisa por bancos suportados no
* componente.
*
* @since 0.2
*/
public static final Map suportados = new HashMap(
BancosSuportados.values().length);
static {
suportados.put(BANCO_DO_BRASIL.codigoDeCompensacaoBACEN, BANCO_DO_BRASIL);
suportados.put(BANCO_DO_NORDESTE_DO_BRASIL.codigoDeCompensacaoBACEN, BANCO_DO_NORDESTE_DO_BRASIL);
suportados.put(CAIXA_ECONOMICA_FEDERAL.codigoDeCompensacaoBACEN, CAIXA_ECONOMICA_FEDERAL);
suportados.put(BANCO_BRADESCO.codigoDeCompensacaoBACEN, BANCO_BRADESCO);
suportados.put(BANCO_ABN_AMRO_REAL.codigoDeCompensacaoBACEN, BANCO_ABN_AMRO_REAL);
suportados.put(UNIBANCO.codigoDeCompensacaoBACEN, UNIBANCO);
suportados.put(HSBC.codigoDeCompensacaoBACEN, HSBC);
suportados.put(BANCO_ITAU.codigoDeCompensacaoBACEN, BANCO_ITAU);
suportados.put(BANCO_SAFRA.codigoDeCompensacaoBACEN, BANCO_SAFRA);
suportados.put(BANCO_DO_ESTADO_DO_RIO_GRANDE_DO_SUL.codigoDeCompensacaoBACEN, BANCO_DO_ESTADO_DO_RIO_GRANDE_DO_SUL);
suportados.put(MERCANTIL_DO_BRASIL.codigoDeCompensacaoBACEN, MERCANTIL_DO_BRASIL);
suportados.put(BANCO_DO_ESTADO_DO_ESPIRITO_SANTO.codigoDeCompensacaoBACEN, BANCO_DO_ESTADO_DO_ESPIRITO_SANTO);
suportados.put(BANCO_RURAL.codigoDeCompensacaoBACEN, BANCO_RURAL);
suportados.put(BANCO_SANTANDER.codigoDeCompensacaoBACEN, BANCO_SANTANDER);
suportados.put(BANCO_INTEMEDIUM.codigoDeCompensacaoBACEN, BANCO_INTEMEDIUM);
suportados.put(BANCO_SICREDI.codigoDeCompensacaoBACEN, BANCO_SICREDI);
suportados.put(BANCOOB.codigoDeCompensacaoBACEN, BANCOOB);
suportados.put(CITIBANK.codigoDeCompensacaoBACEN, CITIBANK);
suportados.put(BANCO_DE_BRASILIA.codigoDeCompensacaoBACEN, BANCO_DE_BRASILIA);
suportados.put(CECRED.codigoDeCompensacaoBACEN, CECRED);
}
/**
* Códigos de instituições bancárias na compensação - COMPE BACEN.
*
* @since 0.2
*/
private String codigoDeCompensacaoBACEN;
/**
* CNPJ registrado na
* BACEN.
*
* @since 0.2
*/
private String cNPJ;
/**
* Nome da instituição registrado na BACEN.
*
* @since 0.2
*/
private String instituicao;
/**
* Segmento bancário da instituição registrado na BACEN.
*
* @since 0.2
*/
private String segmento;
/**
*
* Construtor naturalmente private
responsável por criar uma
* única instância para cada banco.
*
*
* @param codigoDeCompensacaoBACEN
* @param cNPJ
* @param instituicao
* @param segmento
*
* @see java.lang.Enum
* @see Enum
* Guide
*
* @since 0.2
*
*/
private BancosSuportados(String codigoDeCompensacaoBACEN, String cnpj,
String instituicao, String segmento) {
this.codigoDeCompensacaoBACEN = codigoDeCompensacaoBACEN;
this.cNPJ = cnpj;
this.instituicao = instituicao;
this.segmento = segmento;
}
/**
*
* Verifica se exite suporte (implementação) de "Campos Livres" para o banco
* representado pelo codigoDeCompensacao
.
*
*
* @param codigoDeCompensacao
* @return verdadeiro se existe implementação para o banco em questão.
*
* @since 0.2
*/
public static boolean isSuportado(String codigoDeCompensacao) {
return suportados.containsKey(codigoDeCompensacao);
}
/**
*
* Cria uma instância para o banco representado pelo tipo enumerado.
*
*
* Cada instância retornada por este método contém:
*
* - Código de componsação
* - Nome da instituição
* - CNPJ da instituição
* - Segmento da instituição bancária
*
*
*
* @return Uma instância do respectivo banco.
*
* @see
* org.jrimum.domkee.financeiro.banco.febraban.Banco#Banco(CodigoDeCompensacaoBACEN,
* String, CNPJ, String)
* @see Bancos supervisionados
* pela BACEN
*
* @since 0.2
*/
public Banco create() {
return new Banco(new CodigoDeCompensacaoBACEN(this.codigoDeCompensacaoBACEN), this.instituicao, new CNPJ(
this.cNPJ), this.segmento);
}
/**
* @return the codigoDeCompensacaoBACEN
*
* @since 0.2
*/
public String getCodigoDeCompensacao() {
return codigoDeCompensacaoBACEN;
}
/**
* @return the cNPJ
*
* @since 0.2
*/
public String getCNPJ() {
return cNPJ;
}
/**
* @return the instituicao
*
* @since 0.2
*/
public String getInstituicao() {
return instituicao;
}
/**
* @return the segmento
*
* @since 0.2
*/
public String getSegmento() {
return segmento;
}
private static final Map CACHE_INSTANCE = new HashMap<>();
public static Banco instancia(String numero) {
Banco banco = CACHE_INSTANCE.get(numero);
if (banco == null) {
BancosSuportados suportado = suportados.get(numero);
if (suportado != null) {
banco = suportado.create();
}
CACHE_INSTANCE.put(numero, banco);
}
return banco;
}
}