Shiva – Um framework para mapeamento objeto-diretório

Shiva – Um framework para mapeamento objeto-diretório

O projeto

O objetivo do projeto foi desenvolver um framework Open Source em Java capaz de mapear classes POJO para diretórios LDAP, provendo desta forma funcionalidades de persistência e validação dos objetos destas classes. Algo semelhante ao Hibernate (dadas as devidas proporções), porém, tendo como backend um serviço de diretórios (OpenLdap, Active Directory).

As principais features

• Mapeamento objeto-diretório: assim como o mapeamento objeto relacional temos um mapeamento relacionando as classes a diretórios e atributos da classe Java com atributos do diretório;

mapeamento objeto-diretório
exemplo de mapeamento objeto-diretório

• Validação dos objetos a serem persistidos: existem anotações de validação de atributos com o objetivo de deixar a base padronizada.

  1. @Cnpj (String)
  2. @Cpf (String)
  3. @Email (String)
  4. @Pattern (String) expressões regulares
  5. @Range (Integer) min + max
  6. @Min (Integer) valor minimo
  7. @Max (Integer) valor máximo
  8. @NotEmpty (String) diferente de nulo e vazio (“”)
  9. @Length (String) quantidade minima e máxima de caracteres
validação de atributo
exemplo de validação de atributo

• Persistência e recuperação de objetos  de forma transparente.

Modelo arquitetural do projeto Shiva

Conjunto de elementos significativos em termos de arquitetura
Conjunto de elementos significativos em termos de arquitetura

Configuração (como utilizar o Shiva no meu projeto?)

•    Baixar o binário do Projeto Shiva;
•    Adicionar o “shiva_1.0.jar”, “message.properties” e o “shiva.properties” ao classpath;
•    Configurar o “shiva.properties”;

configuração do shiva.properties
exemplo de configuração do “shiva.properties”

•    Configurar o “message.properties”;

exemplo de configuração do message.properties
exemplo de configuração do “message.properties”

•    Realizar o mapeamento objeto-diretório nas classes de entidade;
•    Registrar as classes de entidade previamente mapeadas;
•    Chamar o método “configure()” da classe “shiva.cfg.Configuration”.

Exemplo de mapeamento

exemplo de mapeamento de classe de domínio
exemplo de mapeamento de classe de domínio

Exemplo de utilização

exemplo de listagem de e-mail de todos os funcionários
exemplo de listagem de e-mail de todos os funcionários

Trabalhos Futuros

• Criar uma interface para as aplicações clientes conseguirem parametrizar os valores dos parâmetros de conexão. Ex: cache_statements (habilita o cache de queries), secure(habilita conexões TLS/SSL) etc;
• Trabalhar o conceito de Attached / Detached dos objetos das classes de entidade;
• Registrar as anotações e classes de validação do usuário;
• Criar métodos de pesquisa flexíveis de consulta de entradas no serviço de diretórios.

Disponibilização

• Site do projeto: http://project-shiva.googlecode.com
• Download em formato binário: http://project-shiva.googlecode.com/files/shiva_1.0.jar
• Download do código fonte, via subversion: http://project-shiva.googlecode.com/svn/trunk