private static final String DIGITO_CAIXA = "0";
@Override
public String geraCodigoDeBarrasPara(Boleto boleto) {
Beneficiario beneficiario = boleto.getBeneficiario();
String carteiraDoEmissor = beneficiario.getCarteira();
StringBuilder campoLivre = new StringBuilder();
if (carteiraDoEmissor.equals("1")) {
campoLivre.append(carteiraDoEmissor);
campoLivre.append(leftPadWithZeros(beneficiario.getCodigoBeneficiario(), 6));
campoLivre.append(getNossoNumeroFormatado(beneficiario));
} else if (carteiraDoEmissor.equals("2")) {
String nossoNumeroCompleto = getNossoNumeroFormatado(beneficiario);
campoLivre.append(leftPadWithZeros(beneficiario.getCodigoBeneficiario(), 6));
campoLivre.append(beneficiario.getDigitoCodigoBeneficiario());
campoLivre.append(nossoNumeroCompleto.substring(2, 5));
campoLivre.append(nossoNumeroCompleto.substring(0, 1));
campoLivre.append(nossoNumeroCompleto.substring(5, 8));
campoLivre.append(nossoNumeroCompleto.substring(1, 2));
campoLivre.append(nossoNumeroCompleto.substring(8));
campoLivre.append(geradorDeDigito.geraDigitoMod11(campoLivre.toString()));
} else if (carteiraDoEmissor.equals("24")) {
String nossoNumeroCompleto = getNossoNumeroFormatado(beneficiario);
campoLivre.append(leftPadWithZeros(beneficiario.getCodigoBeneficiario(), 6));
campoLivre.append(beneficiario.getDigitoCodigoBeneficiario());
campoLivre.append(nossoNumeroCompleto.substring(2, 5));
campoLivre.append(nossoNumeroCompleto.substring(0, 1));
campoLivre.append(nossoNumeroCompleto.substring(5, 8));
campoLivre.append(nossoNumeroCompleto.substring(1, 2));
campoLivre.append(nossoNumeroCompleto.substring(8));