Location

De Wiki do Leitão
Revisão de 16h09min de 8 de agosto de 2023 por Rodrigogml (discussão | contribs) (Criou página com 'O serviço de location tem como finalidade concentrar as informações de endereçamento e localidade do sistema. As informações de localidade são agredas por País, Estados, Cidades e Endereços (Logradouros). A partir deste conceito serão agregadas novas informações conforme a necessidade do sistema. == Principais Utilizações == === Preenchimento automático por CEP === Por ter um cadastro completo das ruas do país, um dos principais serviços utilizados é...')
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para: navegação, pesquisa

O serviço de location tem como finalidade concentrar as informações de endereçamento e localidade do sistema. As informações de localidade são agredas por País, Estados, Cidades e Endereços (Logradouros). A partir deste conceito serão agregadas novas informações conforme a necessidade do sistema.

Principais Utilizações

Preenchimento automático por CEP

Por ter um cadastro completo das ruas do país, um dos principais serviços utilizados é a consulta de um endereço através do CEP para preenchimento automático em formulários. Ao utilizar esse serviço lembre-se de que algum CEP pode ainda não constar na base do serviço, e nesses casos deve-se permitir que o usuário complete os dados de Rua, Bairro, etc.. Isso impede que se use exclusivamente um relacionamento cegamente para o objeto de endereço.


Relacionamentos

Um relacionamento entre os objetos do sistema e o LocationAddressVO não é aconselhável, pois eles podem ser alterados ou corrigidos em uma atualização. O sistema deve conter seus próprios objetos para salvar o endereço. Além disso, o sistema deve prever a necessidade de se incluir um endereço (com CEP e ruas) que podem não constar no banco de dados ainda.

Já para os objetos LocationCityVO, LocationStateVO e LocationCountryVO um relacionamento não deve ser problema, pois esses objetos não devem ter atualizações tão frequentes. No caso apenas o relacionamento com o LocationCityVO fará todo o tamanho.


Estrutura de Dados

Endereços

  • CEP
  • Tipo (Avenida, Rua, Praça, Viela, Ladeira, etc.)
  • Nome da Rua (Logradouro)
  • Bairro
  • Cidade

Cidade

  • Nome
  • Latitude (do Centro)
  • Longitude (do Centro)
  • DDD
  • Código do IBGE
  • Estado

Estado

  • Nome
  • Acrônimo (SP, BA, RS, etc.)
  • Código do IBGE
  • País

País

  • Nome
  • Acrônimo (br, ar, pt, etc.)
  • Código BACEN


Persistindo ou Buscando Os VOs

Os objetos Location*VO fornecidos no framework tem RFWMetaAnnotations e se integram com o restante do Framework. Porém não tem nenhuma anotação do RFW.ORM. Caso utilize o módulo RFW.ORM, veja a sessão sobre o DAOResolver na página do RFWDAO. Há ferramentas que permitem informas o schema e a tabela implementando a interface DAOResolver, como a seguir:


Java 256.png Exemplo de utilização do DAOResolver para Persistir os LocationsVO
  @Override
  public String getSchema(Class<? extends RFWVO> entityType, RFWDAOAnnotation entityDAOAnn) throws RFWException {
    if (entityType.equals(LocationCountryVO.class)) {
      return "appSchema";
    } else if (entityType.equals(LocationStateVO.class)) {
      return "appSchema";
    } else if (entityType.equals(LocationCityVO.class)) {
      return "appSchema";
    } else if (entityType.equals(LocationAddressVO.class)) {
      return "appSchema";
    }
    return null;
  }

  @Override
  public String getTable(Class<? extends RFWVO> entityType, RFWDAOAnnotation entityDAOAnn) throws RFWException {
    if (entityType.equals(LocationCountryVO.class)) {
      return "k_locationcountry";
    } else if (entityType.equals(LocationStateVO.class)) {
      return "k_locationstate";
    } else if (entityType.equals(LocationCityVO.class)) {
      return "k_locationcity";
    } else if (entityType.equals(LocationAddressVO.class)) {
      return "k_locationaddress";
    }
    return null;
  }