Projet MIAGE Projet de l'année 2017-2018.

Inria Miage

Réalisation d'une application Web de consultation de données RaWeb Inria "Rapport d'activité des projets de recherche".

Enoncé

On dispose des données suivantes :

On vous demande de réaliser une application Web de consultation de ces données. Application composée de :

  • un serveur Web Java avec architecture REST
  • une base de données native XML
  • un client Web (CSS/JS, framework au choix)

C'était comment, avant ?

Projet MIAGE Projet de l'année 2016-2017.

Réalisation d'une application Web de consultation de données Open Data "Immeubles protégés au titre des Monuments Historiques".

Voir »

Conditions de réalisation

Vous devrez héberger une application Web dans un serveur Web Java en utilisant JAX-RS. Rien ne doit être précalculé (ne pas stocker les résultats dans des fichiers), votre application doit accéder aux données dynamiquement. L'utilisation de PHP est proscrite.

Les données RaWeb des projets doivent être dézippées et chargées dans une base de données native XML ; vous utiliserez BaseX ou eXist; toutes les requêtes d'extraction des données seront faites en XQuery. L'utilisation d'une base de données relationnelle est proscrite.

Les 2 flux de données de la liste des projets et de la liste des centres de recherche seront lus dynamiquement à partir des URLs et mis en cache dans le serveur pour être conservées 24h avant d'être rafraichies. L'application conservera en mémoire les objets correspondants à ces flux lus avec JAXB. On utilisera ce plugin maven pour générer les classes Java à partir des schémas. Les adaptations suivantes sont demandées :

  • générer les classes dans les packages org.inria.fr.ns.sr (équipes de recherche) et org.inria.fr.ns.cr (centres de recherche)
  • mapper xs:date sur java.time.LocalDate
  • mapper xs:dateTime sur java.time.LocalDateTime
  • mapper <structureinria> sur org.inria.fr.ns.sr.StructureInria
  • mapper <structureInrias> sur org.inria.fr.ns.sr.StructuresInria
  • mapper l'attribut principaldans les <entite> sur un booléen
  • dans le flux des centres de recherche, mapper les dates au format JJ/MM/AAA sur java.time.LocalDate

L'application cliente pourra utiliser des frameworks modernes et CSS pour styler l'application (comme Angular 2 ou plus simplement JQuery/Bootstrap ou autre au choix). Les graphiques (histogrammes, camemberts, etc) devront être réalisés en SVG. Javascript pourra être utilisé pour les affichages sur une carte (GoogleMap).

Application

Faites l'application que vous jugerez intéressante. Elle doit au moins permettre d'obtenir ce genre d'information :

  • lister les centres de recherche, les présenter sur une carte (GoogleMap, OpenStreetMap, etc), le nombre d'équipe dans chaque centre, toutes les localisations d'une équipe sur une carte, le nombre de personnes par centre, etc. Distinguer les équipes fermées/actives (<date_fermeture> ? ou équipes qui sont dans le RaWeb mais pas dans la liste des projets ?)
  • lister les équipes par centre de recherche et par domaines/thèmes de recherche, le nombre de personnes sur ces critères, etc
  • lister les personnels des équipes, la liste des titres du rapport auxquels participe une personne (<participants>), le nombre de ses publications (<biblStruct>)
  • délivrer des données statistiques sous forme de tableaux HTML et graphiques faits en SVG (répartition par domaine/thème de recheche, par centre de recherche, etc)
  • permettre d'extraire avec FOP un rapport PDF contenant des graphiques SVG, en le produisant en XSLFO grâce à XSLT

Déroulement du projet

Groupes : 4 personnes maxi

Date de début : 14/11/2017

Date de fin : 24/01/2018 à 23:59:59

Date de soutenance : 25/01/2018 de 8:30 à 19:00 : Inscrivez votre heure de passage ici 👉 HORAIRES DE PASSAGE DE LA SOUTENANCE, à raison de 2 groupes par heure, laissez libre la plage 11:30 12:30. CONSULTEZ CE TABLEAU LA VEILLE POUR CONNAITRE LES HORAIRES DEFINITIFS

Livrables : un rapport (2 pages) décrivant les aspect techniques de votre projet et les fonctionalités principales, une appli qui marche, les sources (dans un repo GIT par exemple, à défaut dans un zip).

Soutenance : présenter une appli qui marche pendant la soutenance ; vous devez aussi pouvoir montrer le code de votre appli ; chaque membre du groupe doit présenter son travail personnel.