Enregistrement de données, partie 1 (Storage)



Documents pareils
Chapitre 10. Les interfaces Comparable et Comparator 1

RMI le langage Java XII-1 JMF

Premiers Pas en Programmation Objet : les Classes et les Objets

Développement Logiciel

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Flux de données Lecture/Ecriture Fichiers

Guide pour l'installation ou la mise à jour de Foxmail 7.1 en Français

TP Composants Java ME - Java EE. Le serveur GereCompteBancaireServlet

Quelques patterns pour la persistance des objets avec DAO DAO. Principe de base. Utilité des DTOs. Le modèle de conception DTO (Data Transfer Object)

Programmation Par Objets

TP n 2 Concepts de la programmation Objets Master 1 mention IL, semestre 2 Le type Abstrait Pile

Page 1 sur 5 TP3. Thèmes du TP : l la classe Object. l Vector<T> l tutorial Interfaces. l Stack<T>

Généralités sur le Langage Java et éléments syntaxiques.

TD/TP PAC - Programmation n 3

RAPPELS SUR LES METHODES HERITEES DE LA CLASSE RACINE Object ET LEUR SPECIALISATION (i.e. REDEFINITION)

Programmation Orientée Objet - Licence TIS CM8/9. Rappel sur la séance précédente. Lancelot Pecquet Lancelot.Pecquet@math.univ-poitiers.

Polymorphisme, la classe Object, les package et la visibilité en Java... 1

Création d'un site dynamique en PHP avec Dreamweaver et MySQL

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Structure d un programme et Compilation Notions de classe et d objet Syntaxe

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Tutoriel Inscription et utilisation basique d'un blog hébergé chez Blogger.com

Programmation par composants (1/3) Programmation par composants (2/3)

Pluridisciplinarité. Classe de BTS DATR

Web Tier : déploiement de servlets

PHPWEBSITE -Tutoriel image

1. Introduction Création d'une macro autonome Exécuter la macro pas à pas Modifier une macro... 5

Programmer en JAVA. par Tama

1. Création d'un état Création d'un état Instantané Colonnes Création d'un état Instantané Tableau... 4

Application web de gestion de comptes en banques

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

progecad NLM Guide de l'utilisateur

Serveur d'archivage 2007 Installation et utilisation de la BD exist

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Le stockage local de données en HTML5

Cours 14 Les fichiers

Héritage presque multiple en Java (1/2)

TP SIN Programmation sur androïde Support : eclipse

Certificat Big Data - Master MAthématiques

Projet gestion d'objets dupliqués

GUIDE D INSTALLATION RAPIDE DEXH264

Animation Shop PREAMBULE... 2 CONTRAINTE... 2 CREER UNE ANIMATION... 2 AJOUTER DES IMAGES... 3 ENREGISTRER UNE ANIMATION... 3

Fiche aide pour votre messagerie Outlook, thunderbird, Gmail

Installation 4D. Configuration requise Installation et activation

Edutab. gestion centralisée de tablettes Android

Corrigé des exercices sur les références

Langage et Concepts de ProgrammationOrientée-Objet 1 / 40

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Le hub d entreprise est une application de déploiement des applications mais aussi un outil de communication


Package Java.util Classe générique

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

I. Introduction aux fonctions : les fonctions standards

Java RMI. Arnaud Labourel Courriel: Université de Provence. 8 mars 2011

Remote Method Invocation (RMI)

Installation 4D. Configuration requise Installation et activation

Langage Java. Classe de première SI

JavaServer Pages (JSP)

"! "#$ $ $ ""! %#& """! '& ( ")! )*+

4. Groupement d objets

ENDNOTE X2 SOMMAIRE. 1. La bibliothèque EndNote 1.1. Créer une nouvelle bibliothèque 1.2. Ouvrir une bibliothèque EndNote 1.3. Fermer une bibliothèque

API04 Contribution. Apache Hadoop: Présentation et application dans le domaine des Data Warehouses. Introduction. Architecture

NAS 106 Utiliser le NAS avec Microsoft Windows

HP Data Protector Express Software - Tutoriel 3. Réalisation de votre première sauvegarde et restauration de disque

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

Ripper vos DVD (extraire vos fichier du DVD pour les mettre sur votre pc)

P r ob lé m a t iq u e d e la g é n é r icit é. Pr in cip e d e la g é n é r icit é e n Ja v a ( 1 /3 )

SERVEUR DE MESSAGERIE

Découverte et prise en main de SWEET HOME 3D

Info0604 Programmation multi-threadée. Cours 5. Programmation multi-threadée en Java

Programmation Orientée Objet Java

Thunderbird en version Portable

Dans la série LES TUTORIELS LIBRES présentés par le site FRAMASOFT. Compression - Décompression avec 7-Zip. Georges Silva

Java Licence Professionnelle CISII,

Tutoriel Adobe Acrobat Pro (version 9.0.0) Créer les fichiers PDF de la thèse. Service Commun de la Documentation Service des thèses

Support de cours et TD Programmation Orientée Objet

Service de certificat

Déploiement d'une application Visual Studio Lightswitch dans Windows Azure.

Notes de cours Practical BigData

Classer et partager ses photographies numériques

Exercices INF5171 : série #3 (Automne 2012)

Cours intensif Java. 1er cours: de C à Java. Enrica DUCHI LIAFA, Paris 7. Septembre Enrica.Duchi@liafa.jussieu.fr

Une introduction à la technologie EJB (2/3)

OneDrive, le cloud de Microsoft

La sauvegarde (backup) de votre comptabilité a pour but de vous permettre de retrouver vos données si un incident est survenu.

Tutoriel d installation de Hibernate avec Eclipse

CA ARCserve Backup Patch Manager pour Windows

A.-M. Cubat PMB - Import de notices à partir d un tableur Page 1 Source :

TP1 : Initiation à Java et Eclipse

Dis papa, c est quoi un bus logiciel réparti?

Synchro et Threads Java TM

Acronis Backup & Recovery 10 Advanced Server Virtual Edition. Guide de démarrage rapide

Auto-évaluation Programmation en Java

Introduction à Java. Matthieu Herrb CNRS-LAAS. Mars

2- Relation entre Writer et Calc dans le mailing

Créer une base de données

Tp 1 correction. Structures de données (IF2)

Une introduction à Java

Transcription:

Enregistrement de données, partie 1 (Storage) CodenameOne propose 4 manières différentes pour sauvegarder des données. La plus simple, la plus portable et la plus conseillée pour la majorité des cas est le Storage. Le Storage peut être comparé au RMS du J2ME pour ceux qui connaissent. Il répond à la plupart des besoins de stockage. Vous pouvez y stocker des données de type primitifs ou des objets. Pensez à inclure le package com.codename1.io 1- Ecriture de données dans un Storage : L'exemple suivant est une fonction qui récupère un nom saisi dans une zone de texte d'une ligne (TextField), l'enregistre dans le téléphone avec la classe Storage et affiche une confirmation. Cette classe est un singleton. public void enregistrenom( String nom=nomf.gettext() ; boolean verification=storage.getinstance().writeobject("nom", nom); if(verification==true){ Dialog.show("Enregistrement OK", "Enregistrement effectué", "OK", else { Dialog.show("Enregistrement KO", "Echec d'enregistrement", "OK", La méthode writeobject permet d'effectuer l'écriture de données dans un Storage et prend deux choses en paramètres. Le premier paramètre est le nom de la zone d'enregistrement c'est à-dire le nom que vous voulez donner à l'emplacement (vous pouvez voir ça comme le nom d'un fichier) où sera enregistré votre information. Le second paramètre est la donnée que vous voulez enregistrer. Elle peut être un objet mais dans ce cas là, il y aurait un truc supplémentaire à faire que nous verrons plus bas. 2- Lecture de données depuis un Storage : L'exemple suivant est une fonction qui récupère du storage le nom que nous avions enregistré ci-dessus, qui l'insère dans une variable et qui l'affiche sur une boite de dialogue.

public void lecturenom() { String nom=(string)storage.getinstance().readobject("nom"); //ou bien: String nom=storage.getinstance().readobject("nom").tostring( ); if(nom!=null){ Dialog.show("Nom relu", "Le nom lu: "+nom, "OK", La méthode readobject permet d'effectuer la lecture de données depuis un storage. Elle prend une seule chose en paramètre et retourne un objet. Ce paramètre est le nom de la zone d'enregistrement. Étant donné que readobject retourne un Object, il va falloir que vous convertissez ce qui est retourné vers le type approprié avant de l'utiliser. Si c'était un String que vous aviez enregistré dans le storage alors convertissez ce qui est retourné par readobject en String avant toute utilisation. Idem pour les autres types de donnée. 3- Enregistrement d'un objet (d'une classe personnelle) dans un Storage : Prenons maintenant un cas où vous avez besoin d'enregistrer plusieurs informations en une fois dans un Storage comme par exemple un nom, un prénom et un age. Ce serait bizarre, chiant et pas pro d'avoir à créer un Storage pour chacune de ces informations. Pour cela, nous allons créer une classe, l'instancier et intégrer à l'intérieur nos données pour pouvoir l'enregistrer dans le Storage. CodenameOne fournit l'interface Externalizable qui est similaire à l'interface Externalizable de Java SE. Cette interface permet à un objet de se déclarer externalisable pour la sérialisation.(ce qui implique le fait qu'un objet peut alors être stocké dans un fichier, dans un storage ou être envoyé sur un réseau). A cause du manque de réflection et d'obfuscation, ces objets doivent être enregistrés avec la classe Util de CodenameOne. CodenameOne ne supportera probablement jamais l'api de sérialisation de Java SE.à cause de sa taille et des complexités liés à l'obfuscation. La majorité des objets manipulés par CodenameOne sont externalisables. Nous allons maintenant créer une classe nommée InfosPersonne qui va implémenter l'interface Externalizable. package com.mycompany.myapp; import com.codename1.io.externalizable; import com.codename1.io.util; import java.io.datainputstream;

import java.io.dataoutputstream; import java.io.ioexception; Tutoriel téléchargé sur www.codenameonefr.com public class InfosPersonne implements Externalizable{ private String nom; private String prenom; private int age; public String getnom() { return nom; public void setnom(string nom) { this.nom = nom; public String getprenom() { return prenom; public void setprenom(string prenom) { this.prenom = prenom; public int getage() { return age; public void setage(int age) { this.age = age; public int getversion() { return 1; public void externalize(dataoutputstream out) throws IOException { Util.writeUTF(nom, out); Util.writeUTF(prenom, out); out.writeint(age);

public void internalize(int version, DataInputStream in) throws IOException { nom=util.readutf(in); prenom=util.readutf(in); age=in.readint(); public String getobjectid() { return "InfosPersonne"; Nous allons maintenant passer à l'enregistrement de notre classe avec la classe Util pour le rendre externalisable. Cela se fait comme avec le code suivant: Util.register("InfosPersonne",InfosPersonne.class); Vous pouvez mettre ce code dans la fonction init (de préférence) ou dans start(). Maintenant il nous est possible d'enregistrer un objet de notre classe dans le Storage avec une nouvelle fonction que nous nommons enregistreinfos. public void enregistreinfos( InfosPersonne ip=new InfosPersonne() ; ip,setnom(nomf.gettext()) ; ip.setprenom(prenomf.gettext()) ; ip.setage(integer.parseint(agef.gettext())) ; boolean verification=storage.getinstance().writeobject("infos", ip); if(verification==true){ Dialog.show("Enregistrement OK", "Enregistrement effectué", "OK", else { Dialog.show("Enregistrement KO", "Echec d'enregistrement", "OK", Si vous avez plusieurs objets à enregistrer (ce qui implique dans notre cas plusieurs infos de personnes), alors vous pouvez insérer tous ces objets dans un Vector par exemple avant de l'enregistrer avec writeobject. Cela vous donne un Vector rempli de vos objets dont chacun représente les infos d'une personne. ça peut ressembler à ceci:

InfosPersonne personne1=new InfosPersonne(); InfosPersonne personne2=new InfosPersonne(); InfosPersonne personne3=new InfosPersonne();... //blablabla Vector personnes=new Vector(); personnes.addelement(personne1); personnes.addelement(personne2); personnes.addelement(personne3); Storage.getInstance().writeObject("Infos", personnes); //blablabla Pour la lecture des données, il vous suffit de récupérer le (ou les) objet(s) du storage avec readobject puis d'accéder à leur contenu avec les méthodes getxxx().