Consultar Floggy

6 respostas
maxdavis

Pessoal eu tenho um metodo de busca usando o floggy e tenho uma lista q uso o LWUIT para as minhas views, sendo oq ta acontencendo q eu nao estou conseguindo pegar o item desta lista, toda vez q tento pegar ele sempre mim traz o primeiro da lista. PORFAVOR HELP!!! :oops:

AGRADECO TODOS VCS DESDE JA

AKI EU CHAMO MEU METODO DE CONSULTAR

public void actionPerformed(ActionEvent e) {
           if(e.getSource() == voltar){
            OpenWindow.showMenu();

            } else if (e.getSource() == consultarDadosAberta) {
              
              //TENTO PEGAR O ID AKI
                int id  = list.getSelectedIndex();
                    
                 Os pegarOs = new Os();
               
                    try {
                       
                        pegarOs = os.consultarDadoAberta(id);
                        System.out.println(pegarOs);


                    } catch (FloggyException ex) {
                        ex.printStackTrace();
                    }

                OpenWindow.showDetalheAberta();
}

MEU FORM ONDE EU TRAGO A LISTA

public Form CreateForm(){
   
        try {
            osMobileIcon = Image.createImage("/osMobilePequeno.png");
            osMobileBackground = Image.createImage("/backgroundCompleto.png");
        } catch (Exception e) {
            System.out.println("Erro ao adicionar a imagem : " + this.getClass());
        }

        //formListar = new Form("Listagem OS Aberta");
        this.setLayout(new BorderLayout());
        this.setBgImage(osMobileBackground);

       
        this.addCommandListener(this);
        //formListar.getTitleStyle().setBgColor(0xff8040);
        Label ImagemLabel = new Label(osMobileIcon);
        this.addComponent(BorderLayout.NORTH ,ImagemLabel);

        this.addCommand(voltar);
        this.addCommand(consultarDadosAberta);
        this.addCommand(deletarDadoEscolhido);

         ListModel model = new DefaultListModel(os.listarOSEmAberta());

         list.setModel(model);
              
      
       this.addComponent(BorderLayout.CENTER,list);

        return this;
    }

MEU METODO DE CONSULTAR ONDE EU PASSO ID COMO PARAMENTRO

//consultar um dado e detalhar
    public Os consultarDadoAberta(int id) throws FloggyException {

        Os osbjeto = new Os();

        try {

            PersistableManager.getInstance().load(osbjeto, id);

            System.out.println(osbjeto.toString());


        } catch (FloggyException e) {
        }
        return osbjeto;
    }

6 Respostas

rafdutra

Bom dia Maxdavis.

Acredito que o método LOAD do floggy não é o mais apropriado pra vc nesse momento. Se não me engano esse método recupera um objeto através do seu id (id criado pelo RMS e não id do seu objeto, nem o índice que ele se encontra na lista).

Caso você esteja populando sua lista LWUIT com o Objeto, basta vc recuperar o objeto através do método list.getSelectedObject(), pegar o seu id (ou qualquer outro atributo que vc deseje utilizar para recuperá-lo do banco).
Caso você esteja populando sua lista LWUIT apenas com o nome (ou outro atributo desse objeto Os), basta vc recuperá-lo da lista e repassar ao método consultarDadoAberta().

Você também deverá utilizar o método find() de PersistableManager para recuperar os objetos do RMS. Com ele vc pode utilizar um filtro para pegar apenas a informação que precisa, ou se você achar mais fácil, pode recuperar todos os objetos e compará-los em um loop.

Bom, acho q é isso.

Se eu me enganei, por favor alguém me corrija.

Abraço.

maxdavis

Mas no caso eu coloco uma lista, como mostra meu metodo abaixo. Daria pra fazer dessa forma?

//metodo de listar OS Em Aberta
    public Vector listarOSEmAberta() {
        ObjectSet ose = null;
        //Gera um filtro
        EmAbertaFilter filtro = new EmAbertaFilter();
        Vector listarOSEmAberta = new Vector();

        try {
            ose = PersistableManager.getInstance().find(Os.class, filtro, null);
            for (int i = 0; i < ose.size(); i++) {
                Os objetoOs = (Os) ose.get(i); //obtem as instancias do banco
                listarOSEmAberta.addElement(objetoOs.getCod() + " - " + objetoOs.getDescricao());
            }
        } catch (FloggyException ex) {
            listarOSEmAberta.addElement("Erro list record");
        }
        return listarOSEmAberta;
    }
maxdavis

Valeu rafdutra! Foi melhor trabalhar com o Objeto, eu tb tava erado na hora de listar e adcionar os meus itens no meu List. SEGUE MEU CODIGO ABAIXO

Minha Classe Form

public class Listar_OsAberta extends Form implements ActionListener {

    //private Form formListar;
    private Image osMobileIcon;
    private Image osMobileBackground;
    Vector listaAberta;
    List list;
    ListModel model;
    Os os = new Os();
    Form formLista;
    Form formDetalhe;
    private Command voltar = new Command("Voltar", 1);
    private Command detalharListaOSAberta = new Command("Detalhar", 0);
    private Command atenderOsAberta = new Command("Atender OS", 0);

    public Listar_OsAberta() {
      
        super("Listagem OS Aberta");
        model = new DefaultListModel();
        list = new List(model);

        //NAO ESQUECER DE TIRAR ESSE METODO QUANDO FAEZR INTEGRACAO COM O XML
        Os.gerarDadosParaTesteAberta();
        Os.gerarDadosParaTesteAberta1();


        listaAberta = os.listarOSEmAberta();
        for (int i = 0; i < listaAberta.size(); i++) {
            Os objetoOs = (Os) listaAberta.elementAt(i); //obtem as instancias do banco
            model.addItem(objetoOs.getCod() + " - " + objetoOs.getDescricao());
        }

    }

    public Form CreateForm() {
        formLista = new Form();
        try {
            osMobileIcon = Image.createImage("/osMobilePequeno.png");
            osMobileBackground = Image.createImage("/backgroundCompleto.png");
        } catch (Exception e) {
            System.out.println("Erro ao adicionar a imagem : " + this.getClass());
        }

        //formListar = new Form("Listagem OS Aberta");
        formLista.setLayout(new BorderLayout());
        formLista.setBgImage(osMobileBackground);


        formLista.addCommandListener(this);
        //formListar.getTitleStyle().setBgColor(0xff8040);
        Label ImagemLabel = new Label(osMobileIcon);
        formLista.addComponent(BorderLayout.NORTH, ImagemLabel);

        formLista.addCommand(voltar);
        formLista.addCommand(detalharListaOSAberta);
        formLista.addComponent(BorderLayout.CENTER, list);

        return formLista;
    }

    public Form CreateFormDetalhe() {
        formDetalhe = new Form();
        try {
            osMobileIcon = Image.createImage("/osMobilePequeno.png");
            osMobileBackground = Image.createImage("/backgroundCompleto.png");
        } catch (Exception e) {
            System.out.println("Erro ao adicionar a imagem : " + this.getClass());
        }

        //formListar = new Form("Listagem OS Aberta");
        formDetalhe.setLayout(new BorderLayout());
        formDetalhe.setBgImage(osMobileBackground);
     
         mostrarDados();

        formDetalhe.addCommandListener(this);
        //formListar.getTitleStyle().setBgColor(0xff8040);
        Label ImagemLabel = new Label(osMobileIcon);

        formDetalhe.addComponent(BorderLayout.NORTH, ImagemLabel);
        formDetalhe.addCommand(voltar);
        formDetalhe.addCommand(atenderOsAberta);

        return formDetalhe;
    }

    public void actionPerformed(ActionEvent e) {
        if (e.getSource() == voltar) {
            OpenWindow.showMenu();

        } else if (e.getSource() == detalharListaOSAberta) {

            os = (Os) listaAberta.elementAt(model.getSelectedIndex());
            
            CreateFormDetalhe().show();
        } 
    }
    
    public void mostrarDados( ){
       TextArea dados = new TextArea("Verificar a Os Detalhada \n" +
                "Cod: " + os.getCod() +
                "\n Cliente: "+ os.getCliente().getNome() +
                "\n Telefone: " + os.getCliente().getTelefone()+
                "\n Data: " + os.getDataAbertura()+
                "\n Status: " + os.getStatus() +
                "\n Descricao da Os:\n" + os.getDescricao()+
                "");
        dados.setEditable(false);
        dados.setEnabled(true);
        formDetalhe.addComponent(BorderLayout.CENTER, dados);

  
    }

Meu Metodo de Listar!

//metodo de listar OS Em Aberta
    public Vector listarOSEmAberta() {
        ObjectSet ose = null;
        //Gera um filtro
        EmAbertaFilter filtro = new EmAbertaFilter();
        Vector listarOSEmAberta = new Vector();

        try {
           ose = PersistableManager.getInstance().find(Os.class, filtro, null);
            for (int i = 0; i < ose.size(); i++) {
                Os objetoOs = (Os) ose.get(i); //obtem as instancias do banco
                listarOSEmAberta.addElement(objetoOs);
            }
        } catch (FloggyException ex) {
            listarOSEmAberta.addElement("Erro list record");
        }
        return listarOSEmAberta;
    }
maxdavis
maxdavis:
Pessoal eu tenho um metodo de busca usando o floggy e tenho uma lista q uso o LWUIT para as minhas views, sendo oq ta acontencendo q eu nao estou conseguindo pegar o item desta lista, toda vez q tento pegar ele sempre mim traz o primeiro da lista. PORFAVOR HELP!!!!!!!!!!!!! :oops:

AGRADECO TODOS VCS DESDE JA

AKI EU CHAMO MEU METODO DE CONSULTAR
public void actionPerformed(ActionEvent e) {
           if(e.getSource() == voltar){
            OpenWindow.showMenu();

            } else if (e.getSource() == consultarDadosAberta) {
              
              //TENTO PEGAR O ID AKI
                int id  = list.getSelectedIndex();
                    
                 Os pegarOs = new Os();
               
                    try {
                       
                        pegarOs = os.consultarDadoAberta(id);
                        System.out.println(pegarOs);


                    } catch (FloggyException ex) {
                        ex.printStackTrace();
                    }

                OpenWindow.showDetalheAberta();
}
MEU FORM ONDE EU TRAGO A LISTA
public Form CreateForm(){
   
        try {
            osMobileIcon = Image.createImage("/osMobilePequeno.png");
            osMobileBackground = Image.createImage("/backgroundCompleto.png");
        } catch (Exception e) {
            System.out.println("Erro ao adicionar a imagem : " + this.getClass());
        }

        //formListar = new Form("Listagem OS Aberta");
        this.setLayout(new BorderLayout());
        this.setBgImage(osMobileBackground);

       
        this.addCommandListener(this);
        //formListar.getTitleStyle().setBgColor(0xff8040);
        Label ImagemLabel = new Label(osMobileIcon);
        this.addComponent(BorderLayout.NORTH ,ImagemLabel);

        this.addCommand(voltar);
        this.addCommand(consultarDadosAberta);
        this.addCommand(deletarDadoEscolhido);

         ListModel model = new DefaultListModel(os.listarOSEmAberta());

         list.setModel(model);
              
      
       this.addComponent(BorderLayout.CENTER,list);

        return this;
    }
MEU METODO DE CONSULTAR ONDE EU PASSO ID COMO PARAMENTRO
//consultar um dado e detalhar
    public Os consultarDadoAberta(int id) throws FloggyException {

        Os osbjeto = new Os();

        try {

            PersistableManager.getInstance().load(osbjeto, id);

            System.out.println(osbjeto.toString());


        } catch (FloggyException e) {
        }
        return osbjeto;
    }
V

e performance? Estou usando um código semelhante, mas estou sofrendo com problemas de performance.

V

Eu fiz alguns testes com vetores diferentes, mais específicos, para melhorar a performance e adiantou. Em vez de consultar um vetor só “único”, separei em vários vetores por categoria. Claro que uma consulta no geral (em todos juntos) ainda demora.

Criado 17 de junho de 2010
Ultima resposta 14 de jul. de 2010
Respostas 6
Participantes 4