BISMeta Annotations
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;
|