Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
enseignement:tp:sw:donnees [2012/09/19 23:53]
ecoquery
enseignement:tp:sw:donnees [2012/10/03 20:42] (Version actuelle)
ecoquery [Modalités]
Ligne 1: Ligne 1:
 ====== TP: Modèles de données ====== ====== TP: Modèles de données ======
 +Mises à jour:
 +  * 2012-09-20: mise à jour du dépôt mercurial pour corriger les problèmes du xsd (dépôt maj à ~ 16h).
 +
  
 ==== Modalités ==== ==== Modalités ====
Ligne 10: Ligne 13:
 A la différence de [[http://subversion.tigris.org/|svn]] ou [[http://www.nongnu.org/cvs/|CVS]] c'est système décentralisé, permettant de réaliser des //commit// sans connexion avec un quelconque serveur central.  A la différence de [[http://subversion.tigris.org/|svn]] ou [[http://www.nongnu.org/cvs/|CVS]] c'est système décentralisé, permettant de réaliser des //commit// sans connexion avec un quelconque serveur central. 
 Une introduction rapide à Mercurial est [[http://mercurial.selenic.com/quickstart/|à disposition ici]]. Une introduction rapide à Mercurial est [[http://mercurial.selenic.com/quickstart/|à disposition ici]].
-  * Dans le cas contraire le rendu se fera par [[http://spiralconnect.univ-lyon1.fr/spiral/spiral.html#/activities/goto_folder/1742262|spiral]] en déposant une archive du dépôt //zippé//. Il sera demandé de ne pas mettre les fichiers issus de la compilation du projet dans le zip, ce qui peut se faire d'une des manières suivantes:+  * Le rendu se fera par [[http://spiralconnect.univ-lyon1.fr/spiral/spiral.html#/activities/goto_folder/1742262|spiral]] en déposant une archive du dépôt //zippé//. Il sera demandé de ne pas mettre les fichiers issus de la compilation du projet dans le zip, ce qui peut se faire d'une des manières suivantes:
     * cloner le projet courant dans un nouveau répertoire: <code shell>hg clone mon-repertoire-de-dev le-repertoire-a-zipper</code>puis //zipper// le répertoire ainsi obtenu;     * cloner le projet courant dans un nouveau répertoire: <code shell>hg clone mon-repertoire-de-dev le-repertoire-a-zipper</code>puis //zipper// le répertoire ainsi obtenu;
     * alternativement, exécuter <code shell>mvn clean</code> dans le projet racine (''projet'') avant la compression, en ayant quitter l'environnement de développement afin d'éviter toute recompilation intempestive.     * alternativement, exécuter <code shell>mvn clean</code> dans le projet racine (''projet'') avant la compression, en ayant quitter l'environnement de développement afin d'éviter toute recompilation intempestive.
Ligne 22: Ligne 25:
 hg clone https://forge.univ-lyon1.fr/hg/inf2018m-2012-tpbase hg clone https://forge.univ-lyon1.fr/hg/inf2018m-2012-tpbase
 </code> </code>
-Ce projet comporte des sous-projets. Le projet ''modele'' contenant les classes du modèles est dans le répertoire ''projet''.+Ce projet comporte des sous-projets. Le projet ''modele'' contient les classes du modèles.
  
 Remarques:  Remarques: 
-  * tous les affichages de debug devront se faire via une API de log. Le projet maven intègre les dépendances vers l'[[http://www.slf4j.org/index.html|API slf4j]].+  * Tous les affichages de debug devront se faire via une API de log. Le projet maven intègre les dépendances vers l'[[http://www.slf4j.org/index.html|API slf4j]].
   * Il est conseillé d'utiliser une application comme [[http://www.sonarsource.org/|sonar]] afin de disposer de quelques indicateurs sur la qualité de votre code. Une partie de la note de ce TP pourra être directement issue des indicateurs de cette application.   * Il est conseillé d'utiliser une application comme [[http://www.sonarsource.org/|sonar]] afin de disposer de quelques indicateurs sur la qualité de votre code. Une partie de la note de ce TP pourra être directement issue des indicateurs de cette application.
 +  * Il vous est possible et même conseillé de fournir un fichier ''README.txt'' dans le répertoire racine du projet maven dans lequel vous pourrez mettre les remarques et/ou justifications à adresser au correcteur.
  
 ===== Etapes ===== ===== Etapes =====
Ligne 39: Ligne 43:
  
 Quelques liens utiles: Quelques liens utiles:
-  * Le {{:enseignement:bdav:bdav-orms.pdf|cours sur les ORM}}, et le [[enseignement:bdav:tp-orm|TP associé]].+  * Le {{:enseignement:bdav:bdav-orms.pdf|cours sur les ORM}}, et le [[enseignement:tp:bd:tp-orm|TP associé]].
   * Le [[http://java.sun.com/javaee/6/docs/tutorial/doc/bnbpy.html|tutoriel JEE sur la persistance]].   * Le [[http://java.sun.com/javaee/6/docs/tutorial/doc/bnbpy.html|tutoriel JEE sur la persistance]].
   * L'[[http://download.oracle.com/javaee/6/api/|API JEE]] -> package javax.persistence.   * L'[[http://download.oracle.com/javaee/6/api/|API JEE]] -> package javax.persistence.
Ligne 52: Ligne 56:
 Mettre en place un mapping avec XML via JAXB((annotations de mapping XML JEE)): Mettre en place un mapping avec XML via JAXB((annotations de mapping XML JEE)):
   * Annoter les classes à //sérialiser// de façon à obtenir une représentation cohérente avec le schéma XML fourni dans le projet de départ.   * Annoter les classes à //sérialiser// de façon à obtenir une représentation cohérente avec le schéma XML fourni dans le projet de départ.
-  * Écrire un test unitaire qui vérifie que la sérialisation d'un objet est conforme au schéma XML fourni.+  * Compléter le test unitaire qui vérifie que la sérialisation d'un objet est conforme au schéma XML fourni.
  
 Quelques liens utiles: Quelques liens utiles:
Ligne 60: Ligne 64:
 Remarque: Remarque:
   * Il peut être utile d'annoter les accesseurs (setXXX) avec ''@XmlTranscient''   * Il peut être utile d'annoter les accesseurs (setXXX) avec ''@XmlTranscient''
-==== Extension du modèle ==== +  * Il peut être nécessaire d'ajouter des accesseurs destinés uniquement à JAXB 
-Ajouter les classes ''tiw5.modele.Artiste'' au modèlemettre à jour les mappings relationnels et XML, ainsi que le schéma XML. + 
-On considère qu'un artiste a au moins un nom et un prénom, ainsi qu'un identifiant numérique.  +==== Extrait d'une base de films ==== 
-La classe Cd doit avoir la liste principale des artistes associés + 
-On souhaite pouvoir préciser pour chaque piste un ensemble d'artistes ayant participé directement à ce morceau, en plus des artistes de la liste principale du cd. +Créer une classe tiw5.modele.InfosFilms contenant une liste de personnesune liste de films et une liste de sociétésAjouter les annotations JAXB pour la sérialisation XML et mettez à jour le schéma XML. 
-Adapter le schéma XML pour prendre en compte les artistes+
-Adapter vos tests unitaires le cas échéant.+
 ==== Accès web ==== ==== Accès web ====
  
 Le projet maven ''interface-web'' contient un squelette d'application Web. Le projet maven ''interface-web'' contient un squelette d'application Web.
-Créer une servlet renvoyant une représentation XML d'un album en fonction de son numéro, ainsi qu'une page HTML avec un formulaire pour la tester facilement. +Créer une servlet renvoyant une représentation XML d'un film en fonction de son numéro, ainsi qu'une page HTML avec un formulaire pour la tester facilement. Changer la servlet pour envoyer la représentation XML d'une instance d'InfosFilms contenant le film et toutes les personnes et les sociétés qui y sont liées. 
-Ajouter la possibilité de passer paramètre ''format'' donnant le choix entre le format XML défini dans le fichier ''xsd'' du modèle et le format XHTML. La présentation XHTML se fera via l'application d'une feuille de style XSL+ 
 +Ajouter la possibilité de passer paramètre ''format'' donnant le choix entre le format XML défini dans le fichier ''xsd'' du modèle et le format XHTML. La présentation XHTML se fera via l'application d'une feuille de style XSL. Les personnes/sociétés (et les détails les concernant) seront indiquées dans la description du film.