Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
enseignement:tp:sw:donnees [2012/07/03 13:41]
ecoquery créée
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).
  
-=== Modifications de l'énoncé === 
  
-  * **29/09/2011:** changement de la date de rendu au 10/10/2011 
 ==== Modalités ==== ==== Modalités ====
  
-Ce TP est à rendre pour le <del>03/10/2011</del> **10/10/2011**, à raison d'un rendu par binôme.  +Ce TP est à rendre pour le **03/10/2012**, à raison d'un rendu par binôme.\\ 
-  * Les binômes sont à constituer au sein des groupes de 4 pour les étudiants faisant partie d'un tel groupe. +URL de rendu SPIRAL: http://spiralconnect.univ-lyon1.fr/spiral/spiral.html#/activities/goto_folder/1742262 
-  * Les autres étudiants peuvent constituer un binôme ad-hoc pour ce TP.+  * Les binômes sont à constituer au sein des groupes de projet TI. En cas de nombre impair d'étudiants, des binômes inter-groupes peuvent être constitués.
 Il est demandé de rendre le TP sous forme d'un dépôt Mercurial qui aura été initialisé en clonant le dépôt indiqué ci-dessous.  Il est demandé de rendre le TP sous forme d'un dépôt Mercurial qui aura été initialisé en clonant le dépôt indiqué ci-dessous. 
 [[http://mercurial.selenic.com/|Mercurial]] est un gestionnaire de version, au même titre que par exemple [[http://git-scm.com/|git]]. [[http://mercurial.selenic.com/|Mercurial]] est un gestionnaire de version, au même titre que par exemple [[http://git-scm.com/|git]].
 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]].
-  * Si le temps le permet, un dépôt sera mis en place pour chaque binôme sur le serveur [[https://forge.univ-lyon1.fr]]. Il suffira alors de synchroniser votre travail sur ce dernier via la commande <code shell>hg push url-du-depot-distant</code> +  * 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:
-  * Dans le cas contraire le rendu se fera par envoi via e-mail du dépôt //zippé//Dans ce cas, 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.
- 
 ==== Introduction ==== ==== Introduction ====
  
Ligne 25: Ligne 23:
 Un projet [[http://maven.apache.org|maven]] de départ est disponible ici: Un projet [[http://maven.apache.org|maven]] de départ est disponible ici:
 <code shell> <code shell>
-hg clone https://forge.univ-lyon1.fr/hg/tiw5-2011-tp-base+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 38: Ligne 37:
 Mettre en place un mapping avec un modèle relationnel en utilisant l'API JPA dans une base relationnelle((par exemple une base derby qui évite de configurer un SGBD sur la machine de développement)): Mettre en place un mapping avec un modèle relationnel en utilisant l'API JPA dans une base relationnelle((par exemple une base derby qui évite de configurer un SGBD sur la machine de développement)):
   * Annoter les classes à rendre persistantes en utilisant les annotations JPA   * Annoter les classes à rendre persistantes en utilisant les annotations JPA
-  * Créer un fichier de configuration ''META-INF/persistence.xml'' approprié +  * <del>Créer un fichier de configuration ''META-INF/persistence.xml'' approprié</del> <- déjà fait 
-  * Écrire un test unitaire pour tester la configuration du mapping relationnel en utilisant un gestionnaire d'entités pour sauver un objet en base((Attention: le test doit pouvoir être exécuté plusieurs fois de suite)).+  * <del>Écrire un test unitaire pour tester la configuration du mapping relationnel en utilisant un gestionnaire d'entités pour sauver un objet en base((Attention: le test doit pouvoir être exécuté plusieurs fois de suite)).</del> <- déjà fait 
 + 
 +Il est possible de modifier le modèle, en particulier en ajoutant/modifiant des méthodes. Toute modification doit cependant être justifiée dans le fichier ''README.txt''
 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 54: 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 62: 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 XHTMLLa 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.