private void converterEndereco(Endereco endereco) throws EnderecoException {
    String[] stringEndereco = endereco.getLogradouro().split(",");

    if (stringEndereco.length == 5) {
      endereco.setLogradouro(stringEndereco[0]);

      String[] numeroEBairro = stringEndereco[1].split("-");
      if (numeroEBairro.length > 2) {
        endereco.setNumero(numeroEBairro[0].trim() + "-" + numeroEBairro[1].trim());
        endereco.setBairro(numeroEBairro[2].trim());
      } else {
        endereco.setNumero(numeroEBairro[0].trim());
        endereco.setBairro(numeroEBairro[1].trim());
      }

      String[] municipioESiglaUF = stringEndereco[2].split("-");
      endereco.setMunicipio(municipioESiglaUF[0].trim());
      endereco.setSiglaUF(municipioESiglaUF[1].toUpperCase().trim());

      endereco.setCep(stringEndereco[3].replace("-", "").trim());
      endereco.setPais(stringEndereco[4].trim());
    } else {
      throw new EnderecoException(
          "Formato de endereço inválido! Verifique a presença de todos os campos obrigatórios: CEP, UF, Município, Bairro e Número");
    }
  }
 private void validarNumero(Endereco endereco) throws EnderecoException {
   if (endereco.getNumero() == null || endereco.getNumero().isEmpty()) {
     throw new EnderecoException("Número é obrigatório!");
   } else {
     if (endereco.getNumero().length() > COMPRIMENTO_MAXIMO_NUMERO) {
       throw new EnderecoException(
           "Número deve ter no máximo " + COMPRIMENTO_MAXIMO_NUMERO + " caracteres!");
     }
   }
 }
 private void validarCEP(Endereco endereco) throws EnderecoException {
   if (endereco.getCep() == null || endereco.getCep().isEmpty()) {
     throw new EnderecoException("CEP é obrigatório!");
   } else {
     endereco.setCep(endereco.getCep().replace("-", "").replace(" ", ""));
     if (endereco.getSiglaUF().length() > COMPRIMENTO_MAXIMO_CEP) {
       throw new EnderecoException(
           "CEP deve ter no máximo " + COMPRIMENTO_MAXIMO_CEP + " caracteres!");
     }
   }
 }
 private void validarSiglaUF(Endereco endereco) throws EnderecoException {
   if (endereco.getSiglaUF() == null || endereco.getSiglaUF().isEmpty()) {
     throw new EnderecoException("Unidade Federativa é obrigatório!");
   } else {
     if (endereco.getSiglaUF().length() > COMPRIMENTO_MAXIMO_SIGLA_UF) {
       throw new EnderecoException(
           "Unidade Federativa deve ter no máximo "
               + COMPRIMENTO_MAXIMO_SIGLA_UF
               + " caracteres!");
     }
   }
 }
  public void validate(Endereco endereco) throws EnderecoException {
    if (endereco == null) {
      throw new EnderecoException("Endereço está null!");
    }

    converterEndereco(endereco);

    if (endereco.getLogradouro() == null || endereco.getLogradouro().isEmpty()) {

      throw new EnderecoException("Logradouro é obrigatório!");
    }

    validarNumero(endereco);

    if (endereco.getBairro() == null || endereco.getBairro().isEmpty()) {

      throw new EnderecoException("Bairro é obrigatório!");
    }

    if (endereco.getMunicipio() == null || endereco.getMunicipio().isEmpty()) {

      throw new EnderecoException("Município é obrigatório!");
    }

    validarSiglaUF(endereco);

    validarCEP(endereco);
  }