[Dúvida] Excluir registro usando Floggy

9 respostas
H

Olá pessoal.
Estou fazendo um pequeno sistema para celular apenas para aprendizado.
O sistema consiste em cadastrar atividades pendentes da faculdade,registrando a disciplina e o trabalho a ser feito,coisas do tipo.

Estou usando o Floggy para armazenar os registros.
Eu incluo uma atividade na memória e lista os registros atravéz de uma Lista.Portanto estou conseguindo inserir e ler os registros.

Segue o código de inclusão e leitura:

[size=18]Inserir: [/size]
} else if (command == cmSalvar) {
                CadTrabalho atividade = new CadTrabalho();
                atividade.setDisciplina(tfDisciplina.getString());
                atividade.setDesc(tfDesc.getString());

                // Testa de que forma é a atividade ( Grupo ou Individual )
                if ( cgTipo.getSelectedIndex() == 0 )
                    atividade.setTipo("Individual");
                else
                    atividade.setTipo("Grupo");

                atividade.setIntegrantes(tfIntegrantes.getString());
                atividade.setDtEntrega(dfEntrega.getDate());

                atividade.salvar();
                getDisplay().setCurrent(listAtividade);

                try {
                    listarAtividade();
                    // write post-action user code here
                } catch (FloggyException ex) {
                    ex.printStackTrace();
                }

[size=18]
Listar[/size]

public void listarAtividade() throws FloggyException {
        ObjectSet os = null;
        getListAtividade().deleteAll(); //Limpa a lista
       
        try{
           os = PersistableManager.getInstance().findAll(CadTrabalho.class);
           for (int i = 0; i < os.count(); i++) 
                listAtividade.append( "Disciplina: " + ((CadTrabalho) os.get(i)).getDisciplina() +
                     "\nEntrega: " + ((CadTrabalho) os.get(i)).getDtEntrega(),null);
           
        }catch(FloggyException fe){
           fe.printStackTrace();
        }
    }

Tudo acima esta funcionando.
Agora minha dúvida é:

" Como faço para excluir um registro escolhido ? Por exemplo,o usuário vai na lista,seleciona um registro qualquer e atravéz da opção "excluir" ele exclue o registro da memória ?

Tentei o código abaixo que fiz mas não da muito certo,rsrs :
public void excluirAtividade(){
        CadTrabalho atividade = new CadTrabalho();

        try {
            PersistableManager pm = PersistableManager.getInstance();
            pm.load(atividade, listAtividade.getSelectedIndex());
            
            pm.delete(atividade);

        } catch (FloggyException e) {

    }

Obrigado

Abraços

9 Respostas

tmoreira2020

Bom dia Henrique,

Você deve manter um segunda lista com os ids das entidades para poder carregá -las antes de excluí-las. O método getSelectedIndex() retorna o índice selecionado no componente de tela e não o id da entidade no sistema Floggy/RMS.

Um abraço

H

Olá,obrigado pela resposta amigo :smiley:

Quer dizer que o ID do componente List vai ser diferente do registrado na memória ? Achei que ele meio que ordenasse e ficasse semelhante a ordem que esta na memória,rsrs.Obrigado pelo toque.

Mas eu acho que vai ser meio estranho eu implementar isto né.Vai ser meio dificil eu casar o Index selecionado do componente com o ID do registro.
Acha melhor eu criar um campo do tipo código no cadastro ? Dai na hora de excluir eu dou um find em cima do código selecionado e logo em seguinda eu excluo,funciona isto ? Como posso proceder ?

Abraços e desculpa pelas perguntas,rsrs

EDITADO
O Lance do código que falei também não é a melhor solução pois terei que consultar o ultimo código e incrementar ,perco tempo e espaço com isto,rsrs

O detalhe é como eu saber qual é o registro que esta em foco na lista,ou seja, qual o ID do armazem de registros que ele representa.

H

UP
Alguem a implementou algo parecido ?

Abraços

H

[size=18]Solução[/size]

public void excluirAtividade(){
        try {
            // Variável criada para especificar qual elemento será excluído
            Persistable excluir;

            PersistableManager pm = PersistableManager.getInstance();
            ObjectSet os = PersistableManager.getInstance().findAll(CadTrabalho.class);

            // Verifica se há registros na lista            
            if ( os.count() < 1){
                aviso = new Alert("Atenção", "Não há nenhuma atividade selecionada.", null, AlertType.ERROR);
                switchDisplayable(aviso, listAtividade);
                aviso.setTimeout(3000);
                return;
            }

            // Pego o index selecionado pelo usuário
            excluir = os.get(listAtividade.getSelectedIndex());

            //Exclusão
            pm.delete(excluir);
            
        } catch (FloggyException e) {
            System.out.println("Erro ao iniciar Função (excluirAtividade)");
        }
    }

O código que fiz acima funcionou perfeitamente, ainda estou testando corretamente,criando novos itens e excluindo de forma aleatória.Pelo que percebi o index da lista bate com o index da memória.

Obrigado ae pessoal.
Se alguém observar algum erro,favor me avisar ,rsrs

Obrigado

Abraços

cherador

tipo eu consigo excluir os dados normalmente, mas o Floggy deixa uns registros j9rms no Palm que eu nao tenho esse controle, alguem tem alguma ideia como eu faria pra pegar esses j9rms?

agradeço

Jhoseph_Araujo

aproveitando o embalo alguem tem o metodo editar ??/??
to com dúvida nele e ta dificil entender a logica …

se alguem poder ajudar desde já agradeço.

cherador

cara pra editar eu fiz meio q um gato pra funfar,

na minha lista eu tinha os dados, cada dado tinha seu id, quando eu selecionava um e depois clicava em editar eu pegava esse id e depois setava os dados q eu queria pra mostrar na tela, quando fazia isso eu excluia o dado e retirei o comando voltar. Assim a unica opção era gravar os dados atualizados.

espero ter ajudado

Jhoseph_Araujo

vc cria tipo uma tabela com os atributos e um dos atributos era um cod do usuario (exemplo) e esse cod e setado com o id do usuario é isso???
manda o cod pra eu analizar … … .
flw;

J
Henrique_silva:
[size=18]Solução[/size]
public void excluirAtividade(){
        try {
            // Variável criada para especificar qual elemento será excluído
            Persistable excluir;

            PersistableManager pm = PersistableManager.getInstance();
            ObjectSet os = PersistableManager.getInstance().findAll(CadTrabalho.class);

            // Verifica se há registros na lista            
            if ( os.count() < 1){
                aviso = new Alert("Atenção", "Não há nenhuma atividade selecionada.", null, AlertType.ERROR);
                switchDisplayable(aviso, listAtividade);
                aviso.setTimeout(3000);
                return;
            }

            // Pego o index selecionado pelo usuário
            excluir = os.get(listAtividade.getSelectedIndex());

            //Exclusão
            pm.delete(excluir);
            
        } catch (FloggyException e) {
            System.out.println("Erro ao iniciar Função (excluirAtividade)");
        }
    }

O código que fiz acima funcionou perfeitamente, ainda estou testando corretamente,criando novos itens e excluindo de forma aleatória.Pelo que percebi o index da lista bate com o index da memória.

Obrigado ae pessoal.
Se alguém observar algum erro,favor me avisar ,rsrs

Obrigado

Abraços

Olá Henrique_silva, td bem? Implantei sua solução e aparentemente está funcionando tudo OK.
O tópico está com um certo tempo, mas tenho uma dúvida parecida.

Pergunta: esse teu método excluirAtividade() exclui o registro do RMS igual ao índice selecionado no componente de tela? ele não apaga pelo id da entidade no sistema Floggy/RMS?
Você pega o indice (lista.getSelectedIndex() , por exemplo) e manda apagar o registro com o mesmo índice do Floggy?

e se você tiver a situação (pelo que o tmoreira2020 escreveu, isso é possível acontecer):
Lista
item1 (indice 0)
item2 (indice 1)
item3 (indice 2)

Floggy/RMS
registro1 (id 1)
registro2 (id 2)
registro3 (id 4)

Foi isso que entendi da sua solução, porém estou confuso ainda. Estou errado ao pensar dessa maneira?

Criado 4 de maio de 2009
Ultima resposta 24 de jan. de 2010
Respostas 9
Participantes 5