Estou utilizando o Floggy para a persistência de dados o qual recebe 2200 regsitros de um banco de dados e os salva no aparelho.
Estes registros são salvos em duas classes sendo a primeira de cabeçalho e a segunda de linha.
A primeira classe contém um array de objetos da segunda classe. Para salvar não tenho problema algum. O problema acontece ao recuperar alguma informação, pois ele demora de 20 a 40 minutos para trazer uma referência a esse objeto do cabeçalho.
O código é o seguinte:
boolean lazy = false;
ObjectSet os = Util.PM.find(OrdemProducao.class, new OrdemProducaoNumOpFilter(op), null, lazy);
if (os != null && os.size() > 0) {
return (OrdemProducao) os.get(0);
}
return null;
onde:
OrdemProducao é o objeto de cabeçalho;
OrdemProducaoNumOpFilter é o filtro que compara o atributo “op” que é único entre os objetos do tipo OrdemProducao;
Nesse caso, o tipo de consulta é não é LAZY pois esse objeto possui referencias aos objetos de linha.
O objetivo é minimizar o tempo da consulta.
Esse é um problema já conhecido em processo de solução. Estamos implementando a funcionalidade de índice no Floggy. Já existe uma versão funcional que está em fase de testes, caso lhe interesse por favor se inscreva na lista do Floggy (https://lists.sourceforge.net/lists/listinfo/floggy-user) para se manter atualizado.
Ainda estamos testando somente internamente mas estamos procurando um caso real para ajudar a aparar as arestas… Vocês estariam dispostos a ser um beta test?
Quando a fazer um teste, eu topo sim!
Caso você precise de um email pra contato pode ser pelo rafaelbdutra@gmail.com, caso contrário estou sempre por aqui!
Desculpe a demora pra responder e também dar o feedback dos testes com a nova feature do Floggy, opi sestou sem máquina em casa e tá meio complicado executar os testes.
Sim, estou na lista do Floggy, e até estava procurando seu email para tirar algumas dúvidas em relação aos testes pois não sei se compreendi mal ou se simplesmente não estou sabendo como habilitar o índice.
Você possui algum “tutorial” (howto) pra eu seguir? hehehe
Ou se eu puder lhe enviar o código para que você possa me ajudar.
Esse é um problema já conhecido em processo de solução. Estamos implementando a funcionalidade de índice no Floggy. Já existe uma versão funcional que está em fase de testes, caso lhe interesse por favor se inscreva na lista do Floggy (https://lists.sourceforge.net/lists/listinfo/floggy-user) para se manter atualizado.
Um abraço![/quote]
Como funcionaria estes índices no Floggy? :lol:
Bom, ainda estou com algumas dúvidas em relação a utilização dos índices. Porém esta funcionalidade ainda não está presente em nenhuma versão liberada para uso, ou seja, ainda está em fase de testes.
Não posso te dar mais detalhes porque ainda não consegui fazer funcionar, acho que deixei passar alguma coisa.
Não consigo prosseguir com os testes pois não tenho informação suficiente.
Se alguém também estiver realizando os testes com o índice do floggy então peço ajuda na seguinte questão:
Eu salvo meus objetos porém na hora da consulta não me retorna nada. Seguem os códigos:
/*
* To change this template, choose Tools | Templates
* and open the template in the editor.
*/
package br.com.cooxupe.armazem.pojo;
import net.sourceforge.floggy.persistence.Persistable;
import org.json.me.JSONException;
import org.json.me.JSONObject;
/**
*
* @author rafael
*/
public class Carregador implements Persistable {
private String id;
private String nome;
private boolean lista;
public Carregador() {
this.id = new String();
this.nome = new String();
this.lista = false;
}
public Carregador(String id, String nome) {
this.id = id;
this.nome = nome;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getNome() {
return nome;
}
public void setNome(String nome) {
this.nome = nome;
}
public boolean isLista() {
return lista;
}
public void setLista(boolean lista) {
this.lista = lista;
}
public String toString() {
return (id + " " + nome);
}
}
Método de teste de chamada:
public static void teste() throws FloggyException {
Carregador c = new Carregador();
IndexFilter f = new IndexFilter("byId", new String("227"));
ObjectSet os = Util.PM.find(Carregador.class, f, true);
int size = os.size();
System.out.println("Here 1");
for (int i = 0; i < size; i++) {
os.get(i, c);
System.out.println(">" + i + "\t" + c.getNome());
}
System.out.println("Here 2");
}
Saída do método de teste:
Here 1
0>
Here 2
Obs: Eu salvo normalmente utilizando o método SAVE do PERSISTABLE MANAGER.
Obs2: Utilizando o método FIND com os FILTROS normais também não encontro nenhum registro quando realizo toda a configuração dos índices. Quando não é feita nenhuma configuração em relação aos índices, o método FIND com o filtro normal retorna os dados normalmente.
Percebi uma coisa bem estranha também. Quando coloco esse código:
Carregador c = new Carregador();
IndexFilter f = new IndexFilter("byId", new String("227"));
ObjectSet os = Util.PM.find(Carregador.class, f, true);
int size = os.size();
System.out.println("Here 1");
for (int i = 0; i < size; i++) {
os.get(i, c);
System.out.println("> " + i + " " + c.getNome());
}
System.out.println("Here 2: " + size);
A saída é a seguinte:
Here 1
0
Here 2: 1
Ou seja, encontrou apenas um registro, que é o certo, porém não retornou nada no atributo nome.
E quando eu uso este código:
Carregador c = new Carregador();
IndexFilter f = new IndexFilter("byId", new String("227"));
ObjectSet os = Util.PM.find(Carregador.class, f, true);
int size = os.size();
System.out.println("Here 1");
for (int i = 0; i < size; i++) {
os.get(i, c);
System.out.println("> " + i + " " + c.getNome());
System.out.println("> " + i + " " + c.getId());
System.out.println("> " + c);
}
System.out.println("Here 2: " + size);