DESARROLLO DE SOLUCIONES EMPRESARIALES MOVILES USANDO TECNOLOGIA SUN APLICACIONES MOVILES CON J2ME RMS Ing. Ronald Criollo.

Slides:



Advertisements
Presentaciones similares
DESARROLLO DE SOLUCIONES EMPRESARIALES MOVILES USANDO TECNOLOGIA SUN
Advertisements

CJ02 – Técnicas avanzadas en java 1.4 y 5.0
FUNDAMENTALS OF THE JAVA PROGRAMMING LANGUAGE (SL-110) CAPÍTULO 13 Ing. Ronald Criollo.
Ayudantía Pre-Actividad 5 Multimedios. Ayudantía Pre-Actividad 5 (1) creación de varias clases, y composición (2) manejo de threads (3) manejo de excepciones.
Archivos de Texto. Introducción Los archivos son una secuencia de bits que se guarda en el disco duro. La ventaja de utilizar archivos es que los datos.
Archivos Binarios Usando Serializable. Introducción Utilizar archivos binarios nos ayuda a guardar y leer más fácilmente los datos de archivos. Pero como.
Archivos Binarios. Introducción En clase ya vimos el uso de archivos de texto en Java, pero el uso de archivos es mucho más poderoso que eso, al utilizar.
DESARROLLO DE SOLUCIONES EMPRESARIALES MOVILES USANDO TECNOLOGIA SUN APLICACIONES MOVILES CON J2ME Ing. Ronald Criollo.
Curso de Java Capitulo 6: Cadenas y Arrays Profesor:
EXCEPCIONES UNIDAD 5.
Tablas. Descripción general Introducción a las tablas Creación de tablas Uso de tablas.
Clases Extendidas La clase extendida hereda los campos y métodos de la clase de la cual extiende. La clase original se conoce como superclase y la clase.
Unidad 1. Manejo de ficheros
Capitulo 4 Excepciones.
Genéricos en Java Jaime Ramírez, Ángel Lucas González
1.2 Sintaxis del lenguaje Java.
RMI (Remote Method Invocation)
Encapsulamiento y Abstracción
Abstracción de Datos La abstracción es un recurso fundamental en la programación orientada a objetos y está además fuertemente ligado a reusabilidad.
Oscar Bedoya. Edificio 331, 2º piso, E.I.S.C. Estructuras de datos y algoritmos.
Archivos Contenido: Archivos de Texto Archivos de Acceso Aleatorio
Excepciones y archivos Info 033. Exception El término Exception es la palabra corta para la frase "evento excepcional." Definition: Una excepción es un.
Enterprise Java Beans Rubén Trujillo Sept-Dic 2008.
Tema 7: Polimorfismo Antonio J. Sierra. Índice Introducción. Sobrecarga de métodos. Objetos como parámetros. Paso de argumentos. Devolución de objetos.
Material de apoyo Unidad 2 Estructura de datos
Java Orientado a Objetos CLASES,OBJETOS Y MÉTODOS
El patrón de diseño Proxy Raúl Heras Alberto Blasco José Manuel Arévalo.
Clases y objetos La unidad fundamental de programación OO son las clases. Conjunto de métodos y semántica Qué se va a hacer POO Clase: que define la implementación.
Igor Santos Grueiro. De este tipo de pilas NO vamos a hablar.
Tema 6: Clases Antonio J. Sierra.
Técnicas avanzadas de programación Interfaces
Igor Santos Grueiro. Ahora tenemos datos y datos …
1 Streams en Java Agustín J. González ELO Generalidades Un Stream es simplemente una fuente o destino de bytes. Los streams más comunes son los.
1 TEMA 5. Seguridad en Java 1.Introducción a los Controladores de Seguridad 2.Decidir qué Métodos Sobreescribir del SecurityManager 3.Escribir un Controlador.
SCJP Sun Certified Programmer for Java 6
Semana 5 Subprogramas..
Clase Teórica No. 4 Programación IV
Suponiendo que además en la clase U hay: import java.util.*; class U{ static Scanner teclado = new Scanner(System.in); static public int readInt(String.
C++ LISTAS C++ 11/04/2017 Ing. Edgar Ruiz Lizama.
Patrón Observador Un patrón de diseño es una descripción de clases y objetos comunicándose entre si adaptada para resolver un problema de diseño general.
SCJP SUN CERTIFIED PROGRAMMER FOR JAVA 6. SEMANA TRES ASIGNACION.
El lenguaje de programación Java
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Objetos.
7. Interfaces Herencia múltiple Interfaces Comparable y Comparator
3.  Recursividad.
1 Persistencia en Java Agustín J. González ELO-329.
ESTRUCTURA DE DATOS EN JAVA
Patrones Creacionales
Estructuras de Datos Arreglos.
Programación Orientada a Objetos
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Encapsulamiento.
Manejo de Punteros y objetos en memoria dinámica en C++
Programación Orientada a Objetos Unidad 4 Excepciones Universidad de Chile Departamento de Ciencias de la Computación.
Técnicas avanzadas de programación Introspección
Patrón Iterator Santiago García Sánchez Rebeca Marcos Salcedo Mª Cristina Zapatero Gironda.
Detalles Generales sobre Java
Sistemas de Archivos Sistemas Operativos.  Se debe proporcionar un almacenamiento secundario que respalda a la memoria principal  El Sistema de archivos.
Definición y cumplimiento de responsabilidades Giovanni Hernández P. Nivel 4.
Ing. Esp. Ricardo Cujar.  Lenguaje de programación orientado a objetos.  Desarrollado por Sun MicroSystems.  Independiente del Sistema Operativo gracias.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS GUI.
Metodología de Programación Ayudantía 4 lelagos.ublog.cl 2009.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Tipo.
INTRODUCCIÓN A LA PROGRAMACIÓN ORIENTADA A OBJETOS Arreglo.
Factorías e Iterables Introducción del concepto de patrón de diseño Construcción de tipos para recorridos con for extendido Fundamentos de Programación.
Estructuras de control selectivas Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Versión Práctica 3.
Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Práctica 4 Versión Diseño de tipos Igualdad, representación, código,
Las interfaces Predicate y Function Versión Unidad Didáctica 17 Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos.
UNIVERSIDAD TECNOLÓGICA DE PANAMÁ Facultad de Ingeniería de Sistemas Computacionales Programa de Lic. en Informática Educativa Computación.
Crear Aplicación Cliente para Conectarse a una Base de Datos.
Arrays, Cadenas y Vectores Tipos Genéricos Fundamentos de Programación Departamento de Lenguajes y Sistemas Informáticos Unidad Didáctica 5 Versión
Transcripción de la presentación:

DESARROLLO DE SOLUCIONES EMPRESARIALES MOVILES USANDO TECNOLOGIA SUN APLICACIONES MOVILES CON J2ME RMS Ing. Ronald Criollo

Introducción RecordStore Record AGENDA

La información hasta ahora manejada ha sido de tipo no persistente, de tal forma que al terminar la aplicación y volverla a ejecutar, no se pueden recuperar los datos. Para lograr persistencia se requiere de la manipulación de archivos, elemento que no está presente en la mayoría de los dispositivos móviles con CLDC/MIDP. INTRODUCCIÓN

Para lograr la persistencia se requiere de un motor de persistencia conocida como RMS (Record Management System) que no es otra cosa que una pequeña base de datos empotrada en el dispositivo. La unidad básica de almacenamiento de la información es el registro (record), ubicado en un almacén de registros (record store). INTRODUCCIÓN

Sencillo sistema de almacenamiento. Almacenamiento permanente. Compuesto por Record Stores. Registro accesible desde cualquier MIDlet. RMS

Antes de operar un registro se debe abrir o crear. Las operaciones pueden ser de lectura y escritura. Se utiliza el paquete javax.microedition.rms.* RMS

Colección de registros La plataforma mantiene su integridad Borrar MIDlet borra RecordStore Manipulación de RecordStore: openRecordStore: abre/crea un RecordStore openRecordStore closeRecordStore: cierra un RecordStore closeRecordStore deleteRecordStore: borra un RecordStore deleteRecordStore RecordStore

Identificados por recordID:int 1er registros recordID =1 Manipulación de registros: addRecord: añade un registro addRecord deleteRecord: borra un registro deleteRecord getRecord: obtiene los datos de un registro getRecord setRecord: establece los datos de un registro setRecord Records

Record Store

Se cuentan con las interfaces de: RecordEnumeration RecordComparator RecordFilters RecordListener Los datos a agregar deben estar en formato de un arreglo de bytes rs.addRecord(bytes, 0, bytes.length) RMS

La interface RecordListener permite monitorizar los cambios en un RecordStore. Cuando se modifica un RecordStore se lanza un evento al RecordListener asociado. Hay 3 tipos de eventos: recordAdded(RecordStore rs,int recordId) recordChanged(RecordStore rs,int recordId) recordDeleted(RecordStore rs,int recordId) RMS

La clase RecordStore no dispone de ningún constructor, pero posee el método estático: static RecordStore openRecordStore(String name, boolean createIfNeccesary) Este método nos abre el Record Store con el nombre pasado como parámetro o nos crea uno si no existe cuando el parámetro createIfNeccesary es true. Además, existen otras dos versiones alternativas de este método: static RecordStore openRecordStore(String name, boolean createIfNeccesary, int autorización, boolean writable) static RecordStore openRecordStore(String name, String vendorName, String suiteName) CREACION DE UN RECORD STORE

El primero de ellos usa los siguientes parámetros: Autorización: AUTHMODE_PRIVATE: Sólo permite el acceso al Record Store a la MIDlet suite que lo creó. AUTHMODE_ANY: Permite el acceso a cualquier MIDlet del dispositivo. Este modo hay que usarlo con mucho cuidado ya que podría provocar problemas de privacidad y seguridad. writable: Indicamos si el Record Store puede ser modificado por cualquier MIDlet que pueda acceder a él. El segundo método lo usaremos para abrir un Record Store que está asociado a alguna MIDlet suite especificada por los parámetros vendorName y suiteName. El acceso vendrá limitado por el tipo de autorización del Record Store cuando fue creado CREACION DE UN RECORD STORE

Cuándo terminemos de usar el Record Store, hay que cerrar la comunicación con él. Esto lo haremos mediante el método: public void closeRecordStore() throws RecordStoreNotFoundException, RecordStoreException Para cerrar correctamente la comunicación con un Record Store, es necesario invocar este método tantas veces como llamadas se haya realizado al método openRecordStore(). CIERRE DE UN RECORD STORE

for (int i=1;i<=rs.getNumRecords();i++){ longitud = rs.getRecordSize(i); registro = rs.getRecord(i); System.out.println(Registro +i+: + new String(registro,0,longitud)); } Interfaz RecordEnumeration RECORRIENDO UN RECORD STORE

RecordEnumeration re = rs.enumerateRecords(null,null,false); while (re.hasNextElement()){ registro = re.nextRecord(); //Realizo las operaciones que quiera... } RECORRIENDO UN RECORD STORE

Para realizar una búsqueda eficiente de registros en un Record Store vamos a utilizar la interfaz RecordFilter. Esta interfaz se encarga de devolver al RecordEnumeration únicamente los registros que coincidan con un determinado patrón de búsqueda. Para usar esta interfaz hemos de implementar necesariamente el método: public boolean matches(byte [] candidato) que se encarga de comparar el registro candidato pasado como parámetro con el valor que queremos buscar y devolvemos true en caso de que coincidan. En el siguiente ejemplo vamos a crear un RecordFilter y así podremos ver su funcionamiento BUSQUEDA EN UN RECORD STORE

public class Filtro implements RecordFilter{ private String cadenaabuscar = null; public Filtro(String cadena){ this.cadenaabuscar = cadena.toLowerCase(); } public boolean matches(byte[] candidato){ boolean resultado = false; String cadenacandidata; ByteArrayInputStream bais; DataInputStream dis; try{ bais = new ByteArrayInputStream(candidato); dis = new DataInputStream(bais); cadenacandidata = dis.readUTF().toLowerCase(); } catch (Exception e){ return false; } if ((cadenacandidata != null) && (cadenacandidata.indexOf(cadenaabuscar) != -1)) return true; else return false; } BUSQUEDA EN UN RECORD STORE

Si usamos este RecordFilter a la hora de invocar a enumerateRecords(): //Creo un objeto de tipo RecordFilter Filtro buscar = new Filtro(Antonio); //Obtengo el RecordEnumeration usando el filtro anterior RecordEnumeration re = rs.enumerateRecords(buscar,null,false); //Si encuentro algún registro dado el patrón de búsqueda if (re.numRecords() > 0) System.out.println(Patron Antonio encontrado); el resultado será que el RecordEnumeration devuelto sólo contendrá los registros en los que se haya encontrado el patrón de búsqueda. BUSQUEDA EN UN RECORD STORE

La ordenación de registros se realiza a través del interfaz RecordComparator. Esta interfaz funciona básicamente igual que el RecordFilter. Existe un método public int compare(byte[] reg1, byte[] reg2) que ha de ser implementado obligatoriamente. Este método es el encargado de realizar la comparación entre los campos que deseemos de los registros y el entero que nos devuelve nos indica si reg1 va antes o después que reg2. El valor devuelto por este método puede ser: EQUIVALENT: Los registros pasados al método compare son equivalentes. FOLLOWS: El primer registro sigue al segundo. PRECEDES: El primer registro precede al segundo. ORDENACION DE UN RECORD STORE

La ordenación de registros se realiza a través del interfaz RecordComparator. Esta interfaz funciona básicamente igual que el RecordFilter. Existe un método public int compare(byte[] reg1, byte[] reg2) que ha de ser implementado obligatoriamente. Este método es el encargado de realizar la comparación entre los campos que deseemos de los registros y el entero que nos devuelve nos indica si reg1 va antes o después que reg2. El valor devuelto por este método puede ser: EQUIVALENT: Los registros pasados al método compare son equivalentes. FOLLOWS: El primer registro sigue al segundo. PRECEDES: El primer registro precede al segundo. ORDENACION DE UN RECORD STORE

public class Compara implements RecordComparator{ public boolean compare(byte[] reg1, byte[] reg2){ ByteArrayInputStream bais; DataInputStream dis; String cad1, cad2; try{ bais = new ByteArrayInputStream(reg1); dis = new DataInputStream(bais); cad1 = dis.readUTF(); bais = new ByteArrayInputStream(reg2); dis = new DataInputStream(bais); cad2 = dis.readUTF(); int resultado = cad1.compareTo(cad2); if (resultado == 0) return RecordComparator.EQUIVALENT; else if (result < 0) return RecordComparator.PRECEDES; else return RecordComparator.FOLLOWS; } catch (Exception e){ return RecordComparator.EQUIVALENT; } } } ORDENACION DE UN RECORD STORE

Esta clase puede usarse a la hora de crear el RecordEnumeration para recorrer los elementos de manera ordenada: //Creo un objeto de tipo RecordComparator Compara comp = new Compara(); //Obtengo el RecordEnumeration usando el objeto anterior, y // con los registros ordenados RecordEnumeration re = rs.enumerateRecords(null,comp,false); ORDENACION DE UN RECORD STORE