Floggy: Framework de Persistência de Dados J2ME

06 junho 2009

Agora você não precisa mais escrever milhares de linhas de código de persistência. O Floggy fará o trabalho pesado para você!


Floggy é um framework de persistência free para J2ME/MIDP, desenvolvido por brasileiros. Seu principal objetivo é abstrair os detalhes da persistência de dados para o desenvolvedor, reduzindo os esforços de desenvolvimento e manutenção.

Está sob a licença Apache License, version 2.0, o que significa que você pode usar Floggy em Open Sources e projetos comerciais.

Arquitetura

O Floggy é composto por 2 módulos:

-Framework: responsável por fornecer os métodos de persistência como salvar, remover, recuperar os dados, através de uma pequena API (11k) que deve ser adicionada a sua aplicação.
-Compilador: responsável por analisar, gerar e compilar o bytecode.

Para usar Floggy seu MIDlet ou classe tem que implementar a interface net.sourceforge.floggy.persistence.Persistable ou estender alguma classe que implementa esta interface.

Tipos suportados

O Floggy suporta todos os tipos primitivos como: boolean, byte, char, double, float, int, long e short.
Suporta os pacotes java.lang (Boolean, Byte, Character, Double, Float, Integer, Long, Short, String, StringBuffer) e java.util (Calendar, Date, Hashtable, Stack, TimeZone, Vector).
Suporta todos os objetos implementados por net.sourceforge.floggy.persistence.Persistable e arrays unidimensionais de vários tipos como byte[], Integer[], Date[] ou Persistable[].

Métodos do Floggy

Salvando um novo objeto

Pessoa p = new Pesoa();
p.setNome(“Maria”);
p.setSexo(“F”);
p.setNascimento(“18/03/1960”);
p.setTelefone(“3423-2020”);

try {
PersistableManager pm = PersistableManager.getInstance();
// Um novo ID para instanciar um objeto é gerado
//Salva o objeto p no Record Store e retorna o ID onde ele foi armazenado
int id = pm.save(p);

} catch (FloggyException e) {
...
}

Carregando um objeto armazenado

Pessoa p = new Pessoa();

try {
PersistableManager pm = PersistableManager.getInstance();

/* Para carregar um objeto use o ID gerado
* pela operação save()
*/
pm.load(p,id);
} catch (FloggyException e) {
...
}

Deletando um objeto salvo

Pessoa p = new Pessoa();

try {
PersistableManager pm = PersistableManager.getInstance();

// Deleta o objeto
pm.delete(p);
} catch (FloggyException e) {
...
}

Deletando todos os registros baseados em uma classe

try {
PersistableManager pm = PersistableManager.getInstance();

// Deleta todos os objetos baseados na classe de nome informado
pm.deleteAll(Pessoa.class);
} catch (FloggyException e) {
...
}

Deletando todas as entidades armazenadas que estão ligadas ao MIDlet

try {
PersistableManager pm = PersistableManager.getInstance();

// Deleta todos os objetos.
pm.deleteAll();
} catch (FloggyException e) {
...
}

Listando todos os objetos

PersistableManager pm = PersistableManager.getInstance();

ObjectSet pos = pm.find(Pessoa.class, null, null);
for (int i = 0; i < pos.size(); i++) {
Pessoa p = (Pessoa) pos.get(i);
...
}

A função find(a,b,c) possui 3 parâmetros: o primeiro é o nome da classe que implementa o Persistable, o segundo é refere-se a um filtro, para exibir só os registros que obedecem a um determinado requisito e o terceiro a um comparador, que faz ordenação da exibição dos registros. Quando for exibir todos, sem nenhuma ordenação ou filtro os dois últimos parâmetros são null.

Listando todos os objetos (versão mais rápida)

PersistableManager pm = PersistableManager.getInstance();

Pessoa p = new Pessoa();

ObjectSet pos = pm.find(Pessoa.class, null, null);
for (int i = 0; i < pos.size(); i++) {
pos.get(i, p);
list.add(p.getNome());
...
}

Usando um filtro para encontrar objetos específicos

PersistableManager pm = PersistableManager.getInstance();

// filtrando as pessoas pelo sexo
ObjectSet pos = pm.find(Pessoa.class, new MasculinoFilter(), null);
for (int i = 0; i < pos.size(); i++) {
Pessoa p = (Pessoa) pos.get(i);
...
}

...

public class MasculinoFilter implements net.sourceforge.floggy.persistence.Filter {

public boolean matches(Persistable persistable) {
Pessoa p = (Pessoa) persistable;
return p.getSexo() == 'M';
}

}

Usando um comparador para ordenar o resultado de uma pesquisa

PersistableManager pm = PersistableManager.getInstance();

// Ordenando as pessoas pela idade (ordem crescente)
ObjectSet pos = pm.find(Pessoa.class, null, new IdadeCompator());

...

public class IdadeComparator implements net.sourceforge.floggy.persistence.Comparator {

public int compare(Persistable o1, Persistable o2) {
Pessoa p1 = (Pessoa) o1;
Pessoa p2 = (Pessoa) o2;

if (p1.getNascimento().getTime() < p2.getNascimento().getTime()) {
return PRECEDES;
}
if (p1.getNascimento().getTime() > p2.getNascimento().getTime()) {
return FOLLOWS;
}

return EQUIVALENT;
}

}

Verificando se um objeto já está armazenado

Pessoa p = new Pessoa();

try {
PersistableManager pm = PersistableManager.getInstance();

// Verifica se o objeto já está armazenado. Neste ponto
//retornará falso
boolean persisted= pm.isPersisted(p);

// Para carregar um objeto, use o ID gerado pela operação save()
pm.load(p, id);

//Agora retornará true
persisted= pm.isPersisted(p);
} catch (FloggyException e) {
...
}

Para utilizar o Floggy é necessário adicionar um jar ao seu projeto e também configurar o seu ambiente integrado de desenvolvimento (IDE). No próximo post (Configurando o Netbeans para usar Floggy) estaremos explicando como fazer estes passos para a IDE Netbeans.

1 comentários:

  • cara como que tu nao detalha que merrrr....
    da próxima ve se tu morre.......
    que issso nao servio de nada .....

  • Postar um comentário