Web & XML ENSEIRB Programmation Web / XML Evaluation 2/2 Version 1.00 du 6 janvier 2012 Etat : Travail SOPRA GROUP Page 1/8
Historique : Version Date Origine de la mise à jour Rédigée par Validée par 1.0 06/01/2012 Création Mathieu Lombard Page 2/8
Préambule : Cette 2 ème évaluation est comparable à la 1 ère à la différence que seules des nouvelles fonctionnalités seront demandées lors de cette session. Page 3/8
Sommaire : 1. INTRODUCTION 5 1.1. L application de test (rappel de l évaluation 1) 5 1.2. L envoi des résultats 5 2. NOUVELLES FONCTIONNALITES 6 2.1. Prérequis pour développer les fonctionnalités 6 2.2. Récupération de données brutes sur les tâches via XPath 6 2.2.1. Récupération des ids des tâches pour une priorité donnée 6 2.2.2. Récupération des ids des tâches en fonction de leur date de fin prévue 6 2.2.3. Récupération du titre d une tâche à partir de son id 6 2.2.4. Récupération des ids des tâches pour un «asker» donné 6 2.3. Formatage des données en CSV 7 2.3.1. Formatage des tâches en CSV 7 2.3.2. Formatage des statistiques en CSV 8 Page 4/8
1. INTRODUCTION 1.1. L application de test (rappel de l évaluation 1) Une application permettra de tester automatiquement la réalisation des élèves. Pour utiliser l application de test, il faut tout d abord la décompresser puis lancer, à la racine, la commande suivante : java -jar EnseirbWebXMLEval2.jar <webappname> <serverport> <resultdirpath> <webappname> correspond au nom de la WebApp, à priori «EnseirbWebXMLWebapp» <serverport> correspond au port du serveur, par exemple «8080» <resultdirpath> correspond à un chemin vers un répertoire dans lequel un fichier résultat sera écrit Il est à noter que l URL utilisée pour accéder au serveur sera «localhost». Par ailleurs, les noms des élèves d un binôme sont récupérés automatiquement via l URL /about, il faut donc bien s assurer que celle-ci est opérationnelle (sinon, le fichier de résultat ne permettra pas d identifier les élèves et cela sera considéré comme une absence de fichier). 1.2. L envoi des résultats Une fois les exercices terminés, le fichier final comportant les derniers résultats devra suivre 2 étapes : Etre stocké dans l arborescence SVN, dans un répertoire «evaluations» créés à la racine Etre envoyé à l adresse suivante : malombard@sopragroup.com Si aucun fichier n est reçu ou stocké pour un binôme donné à l issue du temps de l évaluation, la note sera alors de 0. Ni le nom du fichier, ni son contenu ne doivent être modifiés : une checksum permet d assurer la cohérence entre ces 2 informations. Tout fichier dont la checksum s avérera erronée sera considéré comme irrecevable. Page 5/8
2. NOUVELLES FONCTIONNALITES 2.1. Prérequis pour développer les fonctionnalités 2 classes JAVA sont fournies afin de : faciliter le travail des élèves s assurer du bon formatage des données renvoyées par le serveur Elles sont à placer dans les répertoires suivants de la WebApplication : fr.enseirb.webxml.util pour la classe StringFormatUtil fr.enseirb.webxml.servlet pour la classe RawDataTasksServlet cette classe contient du «code à trous» correspondant à une question de l évaluation 2.2. Récupération de données brutes sur les tâches via XPath Cet exercice s appuie sur la classe RawDataTasksServlet copiée ci-dessus. Il s agit de compléter son comportement selon les 4 modes décrits ci-dessous. Cette classe adresse les 4 comportements d une manière similaire et le travail demandé n est que de compléter la variable xpath et la réponse elle-même sera formatée puis envoyée selon le code déjà présent. Avant de pouvoir commencer, il faut référencer cette Servlet dans le fichier web.xml pour qu elle réponde à l URL : /task/rawdata. 2.2.1. Récupération des ids des tâches pour une priorité donnée Une liste d identifiants de tâches, dont l attribut «priority» est spécifié dans l URL, devra être renvoyée quand l URL suivante sera invoquée : /task/rawdata?action=id4priority&value=<prio> ; où prio est la priorité des tâches dont on veut obtenir les ids. 2.2.2. Récupération des ids des tâches en fonction de leur date de fin prévue Une liste d identifiants de tâches, dont l attribut «deadline» est strictement inférieur à «date du jour» - «délai spécifié dans l URL», devra être renvoyée quand l URL suivante sera invoquée: /task/rawdata?action=id4deadline&delay=<delay> ; où delay est le nombre de jours (positif ou négatif) qu il faut ajouter à la date du jour pour comparer l attribut deadline 2.2.3. Récupération du titre d une tâche à partir de son id Un champ texte correspondant au titre d une tâche, dont l attribut «id» est spécifié dans l URL, devra être renvoyée quand l URL suivante sera invoquée : /task/rawdata?action=title4id&id=<id> ; où id est l identifiant de la tâche 2.2.4. Récupération des ids des tâches pour un «asker» donné Une liste d identifiants de tâches, dont le fils «asker» est spécifié dans l URL, devra être renvoyée quand l URL suivante sera invoquée : Page 6/8
/task/rawdata?action=id4asker&asker=<asker> ; où asker est le nom de l émetteur de la tâche 2.3. Formatage des données en CSV Il s agit ici d offrir au client d obtenir des données formatées en CSV (avec le caractère «;» pour séparer les données). La méthode utilisée sera de passer par une transformation XSL qui, à partir d un flux XML, renverra du «texte» au format CSV. Afin que le moteur XSL n insère pas de balise XML dans le flux résultat, la feuille XSL devra contenir l instruction suivante après la balise xsl:stylesheet : <xsl:output method="text" omit-xml-declaration="yes"/> De même, la Servlet (qui traite la demande du client) devra indiquer au client (le navigateur) que le flux de données correspond à du texte ; cela s effectue via l instruction suivante : response.setheader("content-type", "text/plain"); <xsl:text> </xsl:text> Afin de pouvoir créer un retour à la ligne (nécessaire en fin de chaque ligne), l instruction suivante pourra être utilisée : Pour information, les espaces et les tabulations sont ignorés lors des comparaisons avec le résultat attendu lors du passage des tests automatiques. 2.3.1. Formatage des tâches en CSV Il s agit ici de permettre à la WebApplication de renvoyer la liste des tâches selon le format CSV. Il faut alors : Compléter le fichier web.xml pour que l URL /task/list/csv soit traitée par la Servelt ListTaskServlet Compléter la Servlet ListTaskServlet pour qu elle gère ce nouveau cas et qu elle invoque une transformation XSL Créer un nouveau fichier XSL qui, à partir du flux des tâches (obtenu via la méthode gettasks() de XMLMediator) formate les données comme suit : id;title;description;asker;owner;deadline id1;title1;desc1;asker1;owner1;dd/mm/yyyy id2;title2;desc2;asker2;owner2;dd/mm/yyyy Où la 1 ère ligne correspond aux intitulés des colonnes (texte en dur) Où chaque ligne indique les informations suivantes (dans l ordre et en séparant chaque donnée d un point virgule) relatives à une tâche Son id Son titre Sa description L émetteur (asker) Page 7/8
Le responsable (owner) La deadline La liste doit être triée selon les ids des tâches 2.3.2. Formatage des statistiques en CSV Il s agit ici de permettre à la WebApplication de renvoyer les statistiques selon le format CSV. Il faut alors: Compléter Le fichier web.xml pour que l URL /stats/csv soit traitée par la Servelt StatsServlet Compléter la Servlet StatsServlet pour qu elle gère ce nouveau cas et qu elle invoque une transformation XSL Créer un nouveau fichier XSL qui, à partir du flux des statistiques (obtenu via la méthode buildstats() de XMLMediator) formate les données comme suit : name;total;done;late;todo user1;2;0;2;0 user2;2;1;1;0 user3;1;0;0;1 Où la 1 ère ligne correspond aux intitulés des colonnes (texte en dur) Où chaque ligne indique les informations suivantes (dans l ordre et en séparant chaque donnée d un point virgule) Le nom de l utilisateur Le nombre de tâches qu il a (ou a eu) à faire (cela correspond à la somme des 3 chiffres suivants) Le nombre de tâches qu il a déjà fait Le nombre de tâches qu il n a pas encore fait et pour lesquelles il est en retard Le nombre de tâches qu il n a pas encore fait et pour lesquelles il n est pas en retard La liste doit être triée alphabétiquement selon le nom des utilisateurs Page 8/8