BISMeta Annotations

De BIS Wiki
Revisão de 21h53min de 17 de julho de 2015 por Rodrigogml (discussão | contribs) (Criou página com 'As BISMeta são Java Annotations oferecidas pelo BIS que permitem que os VOs tenham informações sobre sua própria definição: da classe e dos atributos. = BISMetaField =...')
(dif) ← Edição anterior | Revisão atual (dif) | Versão posterior → (dif)
Ir para navegação Ir para pesquisar

As BISMeta são Java Annotations oferecidas pelo BIS que permitem que os VOs tenham informações sobre sua própria definição: da classe e dos atributos.

BISMetaField

Os metadados disponíveis para atributos recebem o seguinte padrão de nome: "BISMeta" + <Tipo do Atributo> + <Nome Específico> + "Field". Sendo:

  • Tipo do Atributo - É o tipo do java que define o atributo. Ex: String, Integer, BigDecimal, etc.
  • Nome Específico - Essa parte só existe para alguns tipos de campos específicos. Por exemplo, para campos do tipo String que são usados como CNPJ a annotation BISMetaStringCNPJField pode ser usada para indicar que o atributo é um CNPJ.

Os Meta Dados que podem ser definidos dependem do tipo do atributo. Por exemplo para atributos do tipo String é possível informar o maxlength e minlength, já para atributos numéricos é possível informar valores mínimos e máximos, e assim por diante.

Alguns metadados são comuns para todas os atributos, são eles:

  • caption - Nome compreensível para o campo. Nome em português para o campo usado em mensagens de validação, na geração dos campos para a UI, etc. Embora não esteja sendo internacionalizado no momento, se em algum momento no futuro isso for necessário basta trocar os valores pelas chaves do Bundle e passar a resolve-las com o locale correto no momento do uso.
  • required - Obrigatoriedade. Define se a definição deste atributo é obrigatório ou não.
  • unique - Valor único entre os objetos existentes. Caso definido, indica que nenhuma outra instância do mesmo objeto terá o mesmo valor.

Alguns dos BISMetaFields existentes são:

  • BISMetaStringField - Conjunto de MetaDados para String.
  • BISMetaIntegerField - Conjunto de MetaDados para Integer.
  • BISMetaBigDecimalField - Conjunto de MetaDados para BigDecimal.
  • BISMetaEnumField - Conjunto de MetaDados para Enumerations.
  • BISMetaBooleanField - Conjunto de MetaDados para Booleans.

As BISMetaFields "personalizadas" permitem informar um uso específico para aquele atributo. Uma vez que o uso "personalizado" foi definido qualquer parte do sistema que leia as BISMetaAnnotations saberá como tratar o campo a partir das informações específicas. Algumas BISMetaFields para campos "personalizados" são:

  • BISMetaStringCNPJField - Transforma um atributo String em um atributo usado exclusivamente para CNPJ, já definindo tamanho máximo e mínimo, patterns, etc.
  • BISMetaStringCEPField - Transforma um atributo String em um atributo usado exclusivamente para CEP.
  • BISMetaStringPhoneField - Transforma um atributo String em um atributo para número de telefone no padrão do BIS: DDI|DDD|Telefone.


Exemplos de Uso
  /**
   * Define o nome da categoria.
   */
  @BISMetaStringField(caption = "Nome da Categoria", maxlength = 100, minlength = 3, required = true)
  private String name = null;

  /**
   * Define se o tipo desta categoria. 
   */
  @BISMetaEnumField(caption = "Tipo da Categoria", required = true)
  private CATEGORYTYPE categorytype = null;

  /**
   * Define um markup mínimo para a categoria.
   */
  @BISMetaBigDecimalField(caption = "MarkUp Mínimo", minIntegerValue = 0)
  private BigDecimal minmarkup = null;


BISMetaRelationshipField

A BISMetaRelationshipField é uma annotation especial para atributos a fim de declarar o relacionamento entre objetos. O relacionamento suportado é apenas entre BISDefaultVO. Esta annotation atualmente não suporta o relacionamento com outros tipos de objetos. No entanto, suporta relacionamento dentro de Listas e Hashs.

O relacionamento pode ser definido de dois tipos:

  • COMPOSITION - O Relacionamento de composição indica que o objeto sendo associado é um "sub conjunto" de informações deste objeto. No sentido que o objeto do relacionamento não existe sem este objeto. Quando este objeto for excluído ele deve ser excluído também! Afinal, ele é parte do objeto principal.
  • ASSOCIATION - A associação indica apenas um relacionamento entre dois objetos "distintos". Cada objeto tem sua própria existência independente da existência do outro. A exclusão de um não implica na exclusão do outro. Nesse tipo de relacionamento o objeto associado já existe no banco de dados previamente, não é cadastrado nem excluído em cascata.
Exemplos de Associação
  /**
   * Empresa associada.
   */
  @BISMetaRelationshipField(caption = "Empresa", relationship = RelationshipTypes.ASSOCIATION, required = true)
  private CompanyVO companyvo = null;


Exemplos de Composição
  /**
   * Guarda as configurações de cada empresa da categoria de itens.<br>
   * A chave é o ID da empresa, e o valor é o objeto com as configurações (<code>ItemCategoryCompanyVO</code>).
   */
  @BISMetaRelationshipField(caption = "Definições por Empresa", relationship = RelationshipTypes.COMPOSITION, required = true, moclazz = ItemCategoryCompanyMO.class)
  private List<ItemCategoryCompanyVO> itemcategorycompanylist = null;