PROJET Java XML - Nisha

February 23, 2018 | Author: Anonymous | Category: Ingénierie, Informatique, Java Programming
Share Embed Donate


Short Description

Download PROJET Java XML - Nisha...

Description

LICENCE 2 MATHÉMATIQUES-INFORMATIQUE

PROJET

Programme Orientée Objet

Java XML

AUTEUR: Nishantha THAVARAJAH JURY: M.Lemaire et M.Liu Année 2013-2014 RAPPORT DE PROJET: PAGE 1 sur 21

RAPPORT DE PROJET: « Développer une application en Java pour la gestion des Mairies de différente com mune à partir d'un ensemble de fichier XML »

Capture d'écran du sujet

2013-2014 RAPPORT DE PROJET: PAGE 2 sur 21

SOMMAIRE I) INTRODUCTION..........................................................................................................................4 II) ANALYSE (CONCEPTION).......................................................................................................5 1)LES FICHIERS XML................................................................................................................5 a) DEFINITION DE XML..........................................................................................................5 2)CHOIX DOM/JAVA.IO.............................................................................................................5 a) PARSEUR XML.....................................................................................................................5 b) INCONVÉNIENTS ET AVANTAGES JAVA.IO/DOM.........................................................6 c) CHOIX DE DOM...................................................................................................................7 3) ORGANISATION DU PROJET..............................................................................................8 a) CAHIER DES CHARGES.....................................................................................................8 B) LES DIFFÉRENTES CLASSES ET PACKAGES................................................................9 III) REALISATION...........................................................................................................................9 1) REALISATION UML...............................................................................................................9 A) REPRÉSENTATION DE TOUTE LES PACKAGES DU PROJET AVEC LES CLASSES ASSOCIÉES...............................................................................................................................9 B) CLASSE FileXML.java DÉTAILLÉES..............................................................................12 La notion de nœud..............................................................................................................14 C) PACKAGE BASE_DE_DONNEE......................................................................................14 2) INTERFACE GRAPHIQUE..................................................................................................15 A) CLASSE Fenetre.java..........................................................................................................15 B) DIFFICULTES RENCONTREES.......................................................................................18 IV) RESULTATS...............................................................................................................................19 V) CONCLUSION............................................................................................................................20 VI) ANNEXES..................................................................................................................................21

RAPPORT DE PROJET: PAGE 3 sur 21

I) INTRODUCTION

Dans le cadre de la deuxieme année de licence Maths-Informatique nous avions été amené à créer un projet informatique en Java. Nous devions réaliser un travail d'étude et de recherche sur les fichiers XML. Le projet que nous devions réaliser est un logiciel en Java permettant l'accès aux informations sur les différentes mairie des communes. Elle doit permettre, lorsqu'elle sera terminée, de rechercher une mairie parmis une commune ou bien d'avoir des informations sur une mairie précisement. Ce petit logiciel pourra être utilisée par un utilisateur pour consulter des informations sur des mairies telle que son adresse, son numéro de téléphone. Le but de ce projet étant de créer un logiciel qui puisse lire les fichiers XML associé et renvoyer les informations utiles comme le nom, le code Postal ou le numéro de téléphone d'une mairie en question. Pour cela il faudra se servir de l'api DOM. Le projet consistait en autre de mettre en exergue les principes fondamentaux de la programmation objet notamment à travers les collections (ArrayList). Pour réaliser notre projet, nous avons utilisé l'IDE Eclipse (développement du logiciel), ainsi que l'environnement Java(JRE) avec pour système d’exploitation Windows XP. Afin de comprendre la démarche utilisée pour mener ce projet à son terme, le rapport se structure de la façon suivante : Tout d'abord, dans une première partie nous présenterons le cadre général du projet, en présentant le travail d'étude et de recherche effectué ainsi que la présentation du cahier des charges. Ensuite dans une deuxième partie nous verrons la résolution du problème par la réalisation d'un UML. Dans cette même partie nous pourrons également voir les modifications apportées pour pouvoir améliorer le logiciel en créant une interface graphique. Enfin dans une dernière partie nous concluerons sur le projet ainsi terminé.

RAPPORT DE PROJET: PAGE 4 sur 21

II) ANALYSE (CONCEPTION) 1)LES FICHIERS XML a) DEFINITION DE XML Les fichiers XML (Langage Extensible de Balisage) font partit des fichiers textes en programmation. Il s'agit d'un langage de balisage , c'est-à-dire un langage qui présente de l'information encadrée par des balises. Contrairement à HTML, qui présente un jeu limité de balises orientées présentation (titre, paragraphe, image, lien hypertexte, etc.), XML est un métalangage, qui va permettre d'inventer à volonté de nouvelles balises pour isoler toutes les informations élémentaires (titre d'ouvrage, prix d'article, numéro de sécurité sociale, référence de pièce…), ou agrégats d'informations élémentaires, que peut contenir une page Web. Dans le cadre de notre projet Java, nous aurons besoin de traiter les informations concernant les mairies de différentes communes. Ces élements se trouveront dans le fichier XML dans les balises comme , ,,,>Url>

2)CHOIX DOM/JAVA.IO a) PARSEUR XML API DOM DOM est l'acronyme de Document Object Model. C'est une spécification du W3C pour proposer une API qui permet de modéliser, de parcourir et de manipuler un document XML. Strucure générale: DOM représente l’arbre XML sous la forme d’objets et relations entre eux. Aussi bien le document que chaque noeud devient un objet à part entière avec sa définition, ses propriétés et ses méthodes Il devient alors facile de connaître les propriétés d’un objet lire des objets, les modifier, les enregistrer dans un fichier, passer d’un objet à l’autre par une relation privilégiée Le principal rôle de DOM est de fournir une représentation mémoire d'un document XML sous la forme d'un arbre d'objets et d'en permettre la manipulation (parcours, recherche et mise à jour). A partir de cette représentation (le modèle), DOM propose de parcourir le document, il est défini pour être indépendant du langage dans lequel il sera implémenté. DOM n'est qu'une spécification qui pour être utilisée doit être implémentée par un éditeur tiers. DOM n'est donc pas spécifique à Java. RAPPORT DE PROJET: PAGE 5 sur 21

API SAX Il existe également une seconde api basés sur un mode évenementiel permettant de réagir à des évènements (comme le début d'un élement, la fin d'un élement) et de renvoyer le résultat à l'application utilisant cette API. SAX est la principale interface utilisant ce mode. Cette API est particulièrement mise en avant pour sa rapidité de traitement.La grande différence entre les API, SAX et DOM est que la première ne charge pas le document en mémoire alors que la seconde construit en mémoire une représentation arborescente du document. La première est donc particulièrement adaptée aux (très) gros documents. Par contre, elle offre des facilités de traitement plus réduites. Le fonctionnement par évenements rend difficile des traitements non linéaires du document. Au contraire, l'api DOM rend plus facile des parseurs de l'arbre

b) INCONVÉNIENTS ET AVANTAGES JAVA.IO/DOM Tableau représentant les avantages et les inconvénients des différentes méthodes

RAPPORT DE PROJET: PAGE 6 sur 21

c) CHOIX DE DOM EXEMPLE: MAIRIE-95002-01.XML

L'ARBRE DOM CORRESPONDANT (page 8) Pour simplifier le schéma, seul les élements concernant le projet ont été pris en compte. A savoir le numéro de téléphone, l'email, l'adresse internet, le code Postal de la Mairie, la commune dont fait partie la mairie , son nom et enfin son adresse. On voit bien d'après le schéma réalisé que les éléments sont imbriquées les uns dans les autres. Par exemple l'information code Postal se trouve à l'intérieur de la balise qui elle même se trouve dans la balise puis . Les élements sont donc organisés de telle sorte que chaque élement dépendent d'un élement père. Cela permet une meilleur organisation de l'information. Les fichiers XML permettent la création de nombreuses balises comme celle-ci, pour pouvoir organiser son contenu de façon très structurés. Le choix de DOM sait avéré utile. En effet il suffit de parcourir l'arborescence pour pouvoir avoir une information. Nous allons donc nous servir de cette information pour créer nos méthodes par la suite.

RAPPORT DE PROJET: PAGE 7 sur 21

3) ORGANISATION DU PROJET a) CAHIER DES CHARGES 1ère étape Créer un logiciel en Java permettant la lecture de fichier XML ainsi que la collecte d'information concernant les mairies du Vald'Oise avec le jeu de donnée réduits.

2ème étape Il faudra compléter le programme en ajoutant une interface graphique. Cette interface aura deux buts précis. D'une part elle devra permettre la consultation de l'annuaire des mairies du Vald'Oise. D'autre part elle devra permettre à l’utilisateur de trouver les informations d'une mairie en saisissant soit le nom de la mairie, le codePostal ou le code INSEE.

3ème étape Etendre l'analyse au jeu de donnée complet. Cest à dire réaliser un logiciel avec consultation d'information de tout les fichiers concernant les mairies de toute la france. Il faudra alors organiser l'interface graphique par département.

RAPPORT DE PROJET: PAGE 8 sur 21

B) LES DIFFÉRENTES CLASSES ET PACKAGES Pour pouvoir mener à bien le projet, j'ai du créer plusieurs classes comportant chacun ses utilités. J'ai créer 4 packages pour pouvoir mieux organiser le contenu et ainsi gagner en clarté. IL faut donc par conséquent penser à importer les différentes classes dans les différents packages. Nous avons donc une classe principale s'appellant Mairie.java contenant toute les informations sur la mairie en question telle que le nom, l'adresse. Puis nous avons la classe Commune.java qui contiendra la liste des mairie d'une commune ainsi qu'une classe ListCommune.java qui contiendra la liste des communes. Pour la première étape du projet la classe commune contiendra seulement le Vald'Oise. Toute ces classes seront regroupé dans un unique package se nommant «base_de_donnée». Une quatrième classe s'ajoute à ce projet qui s'appellera FileXML.java dans un nouveau package s'appelant «xml». Nous devons également ajouter une interface graphique. C'est pourquoi une cinquième classe s'ajoutera à ce projet: Fenetre.java dans un nouveau package «ihm». Il faudra également ajouter les fichiers XML (jeu de donnée reduits) à notre «Mairie_projet» pour que le logiciel puisse marcher. Sans quoi les méthodes écrit dans la classe FileXML.java ne pourront lire les fichiers et tirer les informations nécéssaires pour notre projet.

III) REALISATION 1) REALISATION UML A) REPRÉSENTATION DE TOUTE LES PACKAGES DU PROJET AVEC LES CLASSES ASSOCIÉES

Les quatres packages sont représentées ci-dessous: 1) base_de_donnee 2) xml 3) ihm 4) default_package

RAPPORT DE PROJET: PAGE 9 sur 21

1) package base_de_donnee contenant les classes Mairie.java et Commune.java et ListCommune.java

(réprésentation UML des différentes classes) Classe Mairie.java

RAPPORT DE PROJET: PAGE 10 sur 21

Classe Commune.java et ListCommune.java

2) package xml contenant la classe FileXML.java

RAPPORT DE PROJET: PAGE 11 sur 21

3) package ihm contenant la classe Fenetre.java

Il y a enfin le dernier package qui contient la fonction principale (main.java) qui affiche le résultat de la compilation (dans le package par default).

B) CLASSE FileXML.java DÉTAILLÉES Récupérer du contenu XML Il faut dans un premier temp charger les fichiers XML avec lequelles nous allons travailler. Pour pouvoir utiliser un arbre DOM représentant un document, il faut utiliser un parseur XML qui implémente DOM. Il s'agit d'un outil logiciel permettant de parcourir un document et d'en extraire des informations. Ce dernier va parcourir le document XML et créer l'arbre DOM correspondant. Le but est d'obtenir un objet qui implémente l'interface Document car cet objet est le point d'entrée pour toutes opérations sur l'arbre DOM. On travaille ici avec la méthode initialiserDOM (dans la classe FileXML.java).

RAPPORT DE PROJET: PAGE 12 sur 21

Schéma représentant les étapes de l'api DOM pour traiter un fichier XML DOM met à disposition des interfaces, des méthodes et des propriétes permettant de gérer l'ensemble des composants présents dans un document XML. Le DOM spécifie diverses méthodes et propriétés permettant notamment, de créer (creatNode...), modifier(replaceChild...), supprimer(remove...) ou d'extraire des données (get...) de n'importe quel élement ou contenu d'un document XML. De même, le DOM définit les types de relation entre chaque nœud, et des drections de déplacement dans une arborescence XML.Les propriétes parentNode, ChildNodes, firstChild, lastChild, previosSibling, et nextSibling permettent de retourner respectivement le père, les enfants, le premier enfant, le dernier enfant, le frère précedent et le frère suivant du nœud courant. Les méthodes qui sont dans la classe FileXML.java sont détaillées ci-dessous.

RAPPORT DE PROJET: PAGE 13 sur 21

La notion de nœud Un nœud est un élément de l'arbre XML. Dans notre exemple, on peut distinguer les nœuds Organisme,CoordonnéesNum, Nom, Adresse,.. Un nœud peut donc être: un ensemble de balises qui vont par paires (), un contenu textuel (à l'intérieur de balises < nom>, par exemple), l'attribut d'une balise (son nom), la valeur de l'attribut (entre guillemets).Le modèle d'objet de document offre donc au programmeur les moyens de traiter un document XML dans sa totalité.

C) PACKAGE BASE_DE_DONNEE

Schéma représentant le package base_de_donnee

RAPPORT DE PROJET: PAGE 14 sur 21

Exemple: si on veut ajouter une Mairie m6 faisant partie de la Commune c4: dans un premier temp il faudra vérifier si c4 existe dans la liste des communes puis si il existe ajouter cette mairie à cette commune. Si maintenant on veut ajouter une Mairie m7 faisant partie de la Commune c5 et que cette commune n'exite pas: Il faudra alors créer tout d'abord une nouvelle Commune c5, ajouter la Mairie m7 à cette commune. Et enfin dans un dernier temp relier le tout à la liste des commune. (l'exemple est représentée sur le schéma ci-dessus) Voici ci-dessous le code détaillé de la méthode qui ajoute une Mairie dans une commune faisant partie de la classe ListCommune.java

2) INTERFACE GRAPHIQUE A) CLASSE Fenetre.java Il a fallu à ce stade du projet créer une interface graphique. Et pour cela il faut créer les méthodes permettant de mettre en place notre fenetre. Parmis cela il y a: • • • •

getPanelMairie( ):JPanel getPanelDepartement( ):JPanel getPanelRechercher( ):Jpanel ihm( ):void RAPPORT DE PROJET: PAGE 15 sur 21



refresh( ):void

tableau explicative des méthodes de la classe Fenetre.java

RAPPORT DE PROJET: PAGE 16 sur 21

Une autre méthode est très importante et qui se trouve dans cette classe est la méthode créerBaseDeDonnee . En effet c'est elle qui permet de charger tout les fichiers XML d'un répertoire. La méthode est détaillée ci-dessous:

RAPPORT DE PROJET: PAGE 17 sur 21

B) DIFFICULTES RENCONTREES Il y a eu beaucoup de difficultés pour arriver à créer une interface graphique respectant tout les élements du projet. En effet il a fallut créer un tableau permettant de visualiser tout les données associée à la mairie en question et pour cela il faut créer un tableau à deux dimension qu'il fallait intégrer dans la fenetre. Il a également fallu faire des recherches pour pouvoir créer des barres de déplacement pour pouvoir parcourir tout les élements (scrollPane). Sans quoi la fenetre affichait seulement quelques mairies sur la fenetre. Affichage par département Il a fallu manipuler une nouvelle classe Vector de chaine de caractère de département. Un autre point à été de créer correctement le Listener correspondant au JcomboBox (liste déroulante) Liens sites navigation

Sa ouvre l'explorateur par default du système d'exploitation. Extension a l'ensemble des donnees Pour l'extension a l'ensemble des donnee il a fallu modifier le système de parcours de fichier pour récupérer dans une variable, les départements. Il a fallu aussi analyser uniquement les fichiers dont le préfixe commence par mairie. (méthodes CreerBaseDeDonnee( ) )

RAPPORT DE PROJET: PAGE 18 sur 21

IV) RESULTATS Nous sommes donc arrivé au résultat final ci-dessous. Si on recherche un département particulier nous allons donc trouver toute les mairies associées. Si on clique par la suite le nom d'une mairie, le code Postal, le code INSEE dans «Rechercher», le tableau va se reinitialiser pour ensuite afficher que les élements que l'on aura taper. De plus on pourra cliquer sur l'adresseWeb qui renverra automatiquement sur le site de la mairie en question.

RAPPORT DE PROJET: PAGE 19 sur 21

V) CONCLUSION Nous avons réalisé un logiciel permettant de rechercher une mairie parmis tout les départements de la France. Le projet est arrivé à un résultat intéressant, qui rempli les objectifs fixés.Ainsi on pourra obtenir toutes les informations d'une mairie en tapant des informations sur le moteur de recherche telle que le nom, le codePosatl ou le codeINSEE. Cette plateforme est très complète et permet de gérer toutes les mairies d'une commune. En effet l'utilisateur a la possiblité de choisir un département et de rechercher une mairie qui se trouve parmis ce département et ainsi accéder très vite aux informations. Elle permet également de traiter des informations venant de fichiers sources XML. Toutefois, afin d’améliorer la plateforme, nous aurions pu développer le logiciel avec le Parser SAX pour une question de rapidité d'exécution du progamme. En effet nous savons que sous DOM les fichiers sont réservées en mémoires ce qui peut être assez contraignant pour le jeu de donnée non réduits. Cependant, le temps et la complexité de cette tâche ont été les principaux facteurs du choix de DOM. Cette partie pourra peut être faire l’objet d’un autre projet. Nous pourrions également améliorer l'interface en proposant une recherche d'autres informations telle que la gendarmerie, les hopitaux d'un département en question par exemple. Ce projet nous a permis d’appliquer les connaissances qui nous ont été inculquées au cours de la deuxième année de licence Maths-Informatique à l'Université de Cergy-Pontoise ainsi que de nous initier à la recherche dans une optique éventuelle de poursuite d’études dans ce domaine. .Elle nous a permis d'apprendre à structurer un projet, le diviser en plusieurs tâches et ainsi pouvoir atteindre un objectif. Nous avons été confrontés à de nombreux problèmes et dans la plupart des cas nous avons pu trouver une solution alternative afin de les résoudre partiellement. Enfin ce projet aura été l’occasion de découvrir et d’utiliser des outils dont nous n’avions pas la moindre idée de leurs existences. Nous avons découvert ainsi les fichiers XML et les parsers XML qui nous ont permis d'accéder aux informations des fichiers.

RAPPORT DE PROJET: PAGE 20 sur 21

VI)ANNEXES aperçu mode Console du programme de recherche

Référence sites http://deptinfo.unice.fr/twiki/pub/Minfo03/ServletEtXml/06-xml-dom-sax.pdf https://www.lri.fr/~benzaken/documents/sldomsax.pdf http://www.jmdoudoux.fr/java/dej/chap-dom.htm

RAPPORT DE PROJET: PAGE 21 sur 21

View more...

Comments

Copyright � 2017 NANOPDF Inc.
SUPPORT NANOPDF