br.com.caelum.stella.boleto.bancos.Bancos Maven / Gradle / Ivy
package br.com.caelum.stella.boleto.bancos;
import br.com.caelum.stella.boleto.Banco;
import br.com.caelum.stella.boleto.exception.BancoNaoSuportadoException;
/**
* Enum que serve como fábrica de Bancos
*
* @author mariofts
* @author Turini
*
*/
public enum Bancos {
BANCO_DO_BRASIL("001", "Banco do Brasil") {
@Override
public Banco getBanco() {
return new BancoDoBrasil();
}
},
BRADESCO("237", "Bradesco") {
@Override
public Banco getBanco() {
return new Bradesco();
}
},
CAIXA("104", "Caixa") {
@Override
public Banco getBanco() {
return new Caixa();
}
},
HSBC("399", "HSBC") {
@Override
public Banco getBanco() {
return new HSBC();
}
},
ITAU("341", "Itaú") {
@Override
public Banco getBanco() {
return new Itau();
}
},
SANTANDER("033", "Santander") {
@Override
public Banco getBanco() {
return new Santander();
}
},
SAFRA("422", "Safra") {
@Override
public Banco getBanco() {
return new Safra();
}
};
private final String numeroDoBanco;
private final String nomeDoBanco;
/**
* Obtém o número do banco
*
* @return numero do banco
*/
public String getNumeroDoBanco() {
return numeroDoBanco;
}
public String getNomeDoBanco() {
return nomeDoBanco;
}
private Bancos(String numeroDoBanco, String nomeDoBanco) {
this.numeroDoBanco = numeroDoBanco;
this.nomeDoBanco = nomeDoBanco;
}
/**
* Obtém a instancia do banco para ser utilizada na geração dos boletos
*
* @return Banco para geração dos boletos
*/
public abstract Banco getBanco();
/**
* Obtém o Banco com base no número
*
* @param numero
* Número do banco com 3 dígitos.
* @return Banco correspondente ao número informado.
* @throws BancoNaoSuportadoException
* se o número informado não corresponder a nenhum dos bancos
* suportados.
*/
public static Banco getPorNumero(String numero) {
for (Bancos b : Bancos.values()) {
if (b.getNumeroDoBanco().equals(numero))
return b.getBanco();
}
throw new BancoNaoSuportadoException(numero);
}
}
© 2015 - 2025 Weber Informatics LLC | Privacy Policy