Tags:
create new tag
, view all tags

IVOAlerts

Poursuite de stage de Julien Scheffmann du 02/07 au 10/08/2012.

Sujet de stage


Développement d'un service d'alertes pour l'Observatoire Virtuel

Le stage s'inscrit dans le cadre du projet international d'Observatoire Virtuel (VO) Astronomique. Le but est de mettre au point un service d'alertes pour signaler aux utilisateurs les ressources nouvellement publiées qui sont susceptibles de correspondre à leurs centres d'intérêts. Les ressources disponibles dans le VO sont recensées dans un Registry, accessible par le protocole OAI-PMH qui permet de récupérer les métadonnées dans un format XML. Chaque ressource peut correspondre à des catalogues (listes d'objets astronomiques), des collections d'images, de spectres, etc... De nouvelles ressources sont régulièrement ajoutées. Le but du stage est de mettre au point un service où les astronomes peuvent indiquer un ensemble d'objets astronomiques les intéressant. Le service devra surveiller le contenu du Registry, et tester si les ressources nouvellement crées sont pertinentes pour chacun des objets surveillés. Le cas échéant, le service déclenchera une alerte (par email ou en alimentant un flux RSS) pour prévenir l'astronome.

Le stage comportera une partie d'analyse du problème, suivie du développement d'un prototype avec les technologies jugées les mieux adaptées lors de l'analyse. Le stagiaire devra avoir une bonne maîtrise des technologies XML, savoir utiliser un SGBD, et être à l'aise en anglais technique. Une expérience avec les langages Java et/ou Python est fortement souhaitée.

Interface utilisateur

  • form_object_to_watch.jsp: Affiche le formulaire de saisie permettant à l'utilisateur de suivre un objet. Cette page affiche les coordonnées et vérifie via du Javascript si l'objet existe ou non.
  • show_rss_object.jsp: Affiche la page avec le lien permettant d'accéder au flux RSS ainsi qu'un lien pour retourner au formulaire de saisie précédent.
  • rss.jsp: Cette page est appelée par les service et affiche le contenu souhaité au format XML. C'est notre flux RSS.
  • web.xml: Ce fichier permet de déclarer les fichiers web ".jsp" et les fichiers ".java" dont ils dépendent. Elle gère également les URL d'accès aux différents formulaires.

Interface registry

  • core.DatabaseConnect.java: Singleton permettant de se connecter à la base de données.
  • RandomIdGenerator.java: Permet de générer un identifiant unique en créant un "hasch MD5" du "timestamp" actuel en milli-secondes.
  • core.XmlParser.java: Cette classe permet de "parser" un flux XML passé en paramètre pour en extraire les valeurs souhaités via l'utilisation d'un "Xpath".

  • input.ObjectToWatchForm.java: Permet d'afficher la page ".jsp" nommée "form_object_to_watch.jsp". Elle permet également de vérifier une seconde fois si l'objet existe bien, et peux renvoyer un message d'erreur sur la page ".jsp".
  • input.InputValues.java: Une fois appelée, elle permet d'ajouter l'utilisateur (table "USERS") ainsi que l'objet (table "TARGETS") dans la base de données si ceux-ci n'existent pas encore.
  • input.InputValidation.java: Permet d'afficher la page ".jsp" nommée "show_rss_object.jsp".

  • ressource.ListRecords.java: Permet de récupérer dans un tableau toutes les ressources qui ont été mises à jour dans une fourchette de dates fournies en paramètre.
  • ressource.Ressources.java: Cette classe permet de récupérer les ressources qui correspondent au type souhaité.
  • ressource.RessourcesValues.java: Permet pour une ressource précise de récupérer les informations sur cette dernière via l'utilisation de "Xpath".
  • ressource.HarvestingRessources.java: Cette classe permet de récupérer les ressources pertinentes pour un type donné et dans une fourchette de date précise.
  • ressource.HarvestingMatching.java: Pour le nom de l'objet donné en paramètre, récupère toutes les valeurs des ressources pertinentes en sélectionnant les informations dans la table "MATCHING".
  • ressource.ConeSearch.java: Permet de vérifier si une ressource dispose de valeurs pour un type "ConeSearch", ce qui permet ensuite de l'ajouter dans les ressources (table "RESSOURCES").

Architecture base de données locale

  • TARGETS: objoid VARCHAR, objra DOUBLE, objdec DOUBLE, objsr DOUBLE, canonicalName VARCHAR;
  • USERS: userid VARCHAR, name VARCHAR, email VARCHAR;
  • WATCHED: name VARCHAR, startdate VARCHAR, USERS.userid VARCHAR, TARGETS.objoid VARCHAR;
  • RESSOURCES: resourceid VARCHAR, iviid VARCHAR, type VARCHAR, updated VARCHAR, deleted VARCHAR, accessurl VARCHAR, title VARCHAR, description VARCHAR;
  • MATCHING: date VARCHAR, RESSOURCES.resourceid VARCHAR, TARGETS.objoid VARCHAR;

Flux RSS

  • rss.MatchingRessourcesRss.java: Appelée en prenant comme paramètre le nom de l'objet à suivre, elle va sélectionner dans la base de données (table "MATCHING") les valeurs pertinentes pour l'objet demandé en sélectionnant les informations des ressources correspondantes.
  • rss.RssFeed.java: Elle appelle la classe ci-dessus et créer une chaine de caractère qui contiendra les balises nécessaire à l'affichage du flux RSS (pour chaque ressource pertinente elle créer une balise ).

Outils

Sanity checks

Tests et performances

-- SebastienDerriere - 06 Jul 2012

Topic revision: r4 - 2012-08-08 - JulienScheffmann
 
This site is powered by the TWiki collaboration platform Powered by PerlCopyright © 2008-2024 by the contributing authors. All material on this collaboration platform is the property of the contributing authors.
Ideas, requests, problems regarding TWiki? Send feedback