A apresentação está carregando. Por favor, espere

A apresentação está carregando. Por favor, espere

Programa Expresso de Capacitação Módulo J2ME Aula 5 – Record Management System.

Apresentações semelhantes


Apresentação em tema: "Programa Expresso de Capacitação Módulo J2ME Aula 5 – Record Management System."— Transcrição da apresentação:

1 Programa Expresso de Capacitação Módulo J2ME Aula 5 – Record Management System

2 Pausa para reflexão "Sem esforço não há progresso, mas com esforço também não há progresso” Ryotan TokudaRyotan Tokuda, Mestre Zen

3 Record Management System Gereciamento de registros persistentes Registro Identificador ligado a um array de bytes Equivalente a armazenamento em arquivo de J2SE Classes para armazenar, recuperar, enumerar, comparar e filtrar dados não-voláteis

4 RMS Armazém de registros (RecordStore) Nomenclatura Até 32 caracteres UNICODE (16 bits) ID de registroDado 1Array de bytes

5 RMS Informações adicionais Número da versão: um valor inteiro que é incrementado a cada modificação do conteúdo do armazém Indicação de data/hora: última modificação do armazém A existência dos registros está limitada à do MIDlet que os criou

6 RMS - Métodos static RecordStore openRecordStore(String nome, boolean criarSeNecessario); void closeRecordStore(); void delete recordStore(String nome); int addRecord(byte[] dados, int offset, int numBytes); void setRecord(int recordId, byte[] novosDados, int offset, int numBytes); byte[] getRecord(int recordId); int getRecord(int recordId, byte[] buffer, int offset);

7 RMS – Métodos (Cont.) int getNumRecords(); long getLastModified(); String getName(); addRecordListener(RecordListener listener); removeRecordListener(RecordListener listener);

8 RMS - Exemplo... RecordStore rs = null; String nome = “Eduardo”;... try { rs = RecordStore.openRecordStore( “meusdados", true ); byte[] recData = nome.getBytes(); rs.addRecord(recData, 0, recData.length); //Grava dados... //Recupera dados String retorno = new String( rs.getRecord(1) ); } catch( Exception e ) { // tratamento de exceção }

9 RecordEnumeration Interface que fornece métodos de movimentação para frente e para trás em registros Semelhante ao Iterator em J2SE Pode levar em conta filtros (para pesquisa) e/ou comparadores (para ordenação) Ex: classificar registros em ordem alfabética

10 RecordEnumeration Métodos Principais RecordEnumerator enumerateRecords(RecordFilter filter, RecordComparator comparator, boolean keepUpdated); * byte nextRecord(); byte previousRecord(); Boolean hasNextElement(); Boolean hasPreviousElement(); Void keepUpdated(boolean keep); * Método da classe RecordStore

11 Exemplo..... RecordEnumeration enum = re.enumerateRecords(null, null, false); while ( re.hasNextElement() ) { //armazena o próximo registro em um String String str = new String(re.nextRecord()); … processa algo… } …

12 RecordComparator Interface para comparação entre registros Método a ser implementado Int compare(byte[] rec1, byte[] rec2); Tipos de RecordComparator EQUIVALENT – rec1 é equivalente a rec2 FOLLOWS – rec1 vem depois de rec2 PRECEDES – rec1 vem antes de rec2

13 Exemplo... public class Comparador implements RecordComparator { public int compare(byte rec1, byte rec2) { String str1 = new String(rec1); String str2 = new String(rec2); int resultado = str1.compareTo(str2); if (resultado == 0) return RecordComparator.EQUIVALENT; else if (result < 0) return RecordComparator.PRECEDES; else return RecordComparator.FOLLOWS; }

14 Exemplo (Cont.)... //Cria um novo comparador para ordenar Comparador comp = new Comparador(); //Referencia o comparador ao criar a enumeração RecordEnumeration re = rs.enumerateRecords(null, comp, false); //Itera nos registros, que já estarão ordenados While ( re.hasPreviousElement ) {... String s = new String(re.previousRecord());... } …

15 RecordFilter Interface para filtro de registros Apenas os resultados que correspondem ao critério do filtro, farão parte do conjunto enumerador Método a ser implementado boolean matches(byte[] candidate)

16 Exemplo... class Filtro implements RecordFilter { private String textoBuscado = null; public Filtro(String textoBuscado) { //este é o texto a ser pesquisado this.textoBuscado = textoBuscado.toLowerCase(); } public boolean matches(byte[] candidato) { String str = new String(candidato).toLowerCase(); //procura uma correspondência if ( textoBuscado != null && str.indexOf(textoBuscado) != -1 ) { return true; } else { return false; }

17 Exemplo (Cont.)... //Cria um novo filtro de busca Filtro filtro = new Filtro(“Texto a ser buscado”); //Referencia o filtro ao criar o enumerador RecordEnumeration re = rs.enumerateRecords(filtro, null, false); /*Se houver pelo menos um registro no conjunto de resultados, uma correspondência foi encontrada*/ if (re.getNumRecords() > 0) { //Manipula os resultados } …

18 RecordListener Notificação de que um registro foi adicionado, removido ou atualizado Ex: Salvar preferências de um usuário Opera como os outros Receptores de eventos já vistos em aula Métodos a serem implementados void recordAdded(RecordStore rs, int recordId); void recordChanged(RecordStore rs, int recordId); void recordDeleted(RecordStore rs, int recordId);

19 Exercício Implemente a persistencia de uma agenda. Considere que cada elemento é composto de 3 Strings: Nome, Endereco e Telefone. Escreva filtros em cima da implementação acima.

20 Referências Tutoriais da Sun


Carregar ppt "Programa Expresso de Capacitação Módulo J2ME Aula 5 – Record Management System."

Apresentações semelhantes


Anúncios Google