marcellinodour / MIDO-SVG

Other
0 stars 0 forks source link

= MIDO SVG

A Java project developed during the https://github.com/oliviercailloux/java-course[Java course] taught at Université Paris-Dauphine (in http://www.mido.dauphine.fr/[MIDO] L3 Apprentissage).

The code is hereby published under the MIT License, with their permission.

Here below, a part of the “Rapport” written by the students who coded on the project.

== Objectif du projet

L’objectif premier de ce projet est de créer une bibliothèque qui permet à un utilisateur de créer un dessin (au format SVG) représentant au moyen d’un arbre, les formations offertes dans le département MIDO. Il est aussi possible d’afficher les détails des formations, les enseignants, etc. L’idée est de généraliser et dynamiser la bibliothèque afin qu’elle puisse être utilisée à une plus grande échelle, ce en récupérant les informations sur le site de l’université.

== Evolution Prévue (objectif à long terme)

Après avoir pris connaissance de l’existant, nous nous sommes aperçus que les évolutions à concevoir se portent essentiellement sur :

[square]

== Objectif itération 1 JAVA

=== Equipe 1 : Base de données - Camille et Jérémie

Pré-requis : Après avoir pris contact avec la DSI, prendre connaissance de la structure des données fournis via API-ROF.

Pour action : En s'aidant du projet https://github.com/Dauphine-MIDO/plaquette-MIDO[plaquette-MIDO], voir les classes utiles à la récupération des données. Objectif principal : Création d'une package ROFBDD permettant de récupérer les données reROF et mettre sous la forme structurelle du package University adaptée au traitement SVG.

Objectif à court terme : Création d'un package ROFBDD avec 3 classes :

[square]

Aide : Voir avec le professeur pour l'exécution du projet https://github.com/Dauphine-MIDO/plaquette-MIDO[plaquette-MIDO] afin de voir le fonctionnement. (Problème m2e)

=== Equipe 2 : SVG - Marcellino et Sarra

Pré-requis : Comprendre la structure d’un fichier SVG et comment elle est générée dans l’application.

Pour action : En se basant sur le jeu de test saisie “en dur”, sur l’image SVG généré à ce jour, les données sont tous superposés. Trouver une solution pour les faire apparaître un en dessous de l’autre. Objectif principal : Génération du fichier SVG responsive. A ce jour, le paramétrage de chaque données saisie "en dur" admettent un emplacement déterministe.

Objectif à court terme : Actuellement, dû au codage "en dur" des positions des différents éléments d'un graphe MIDO, si nous voulons générer un graphe que de master 2, ces formations seront tout en bas de la page, peut importe la taille Settings determiné par l'utilisateur. Cependant, des classes ont été codé dans l'objectif de générer un fichier SVG responsive (dans notre cas, si l'utilisateur à choisi de faire apparaître que les masters 2, les formations devront être placées en première ligne en haut du graphe).

[square]

=== Equipe 3 : SPMO Raphaël et Zhenyi

== Objectif itération 2 JAVA

=== Equipe 1 : Base de données - Marcellino Dour et Raphaël Pardini

Pré-requis : comprendre la structure des données fournies via API-ROF et comprendre le fonctionnement des méthodes de la classe Querier.

Objectif principal : Modification du package model pour qu'il permette de récupérer les données reROF et mettre sous la forme structurelle du package University adaptée au traitement SVG.

Objectif à court terme : Compléter la classe DataRecuperator avec 2 méthodes :

[square]

=== Equipe 2 : SVG - Jérémie Brulé et Zhenyi Guo

Pré-requis : comprendre la procédure de création d'un fichier SVG et particulièrement sur la méthode defineObjectsPosition de la classe svg_generator.ResponsiveSVG.

Objectif principal : Modifier la classe svg_generator.ResponsiveSVG et ajouter une étape de contrôle avant la génération du graphe (évitant les superpositions des éléments) à travers la méthode controlSettings.

Objectif à court terme : Revoir intégralement l'algorithme de calcul des positions x et y de chaque formation de la méthode defineObjectsPosition. Pour ce faire, voici les modifications à apporter dans la méthode:

[square]

image::./Doc/svgmargins.jpg[margins, 602, 416,role="right"]

Pour aller plus loin : Si tout est terminé, créer une nouvelle méthode (suggestion : controlSettings) dans la classe svg_generator.ResponsiveSVG qui permet, avant chaque paramétrage d'un point d'une formation, le contrôle du chevauchement (exemple s'assurer que la position x de la formation d'après new_x > maxNumberOfCourse (de la formation précédente) && new_x < setting.length) Cette méthode prendra en paramètre la position x et y de la formation d'après, maxNumberOfCourse du niveau du dessus et maxLengthOfCourse de la formation précédente et renvoi un true si tout est ok.

=== Equipe 3 : SMPO Camille Langlois et Sarra Tajouri

== Objectif itération 3 JAVA

=== Equipe 1 : Base de données - Sarra Tajouri et Zhenyi Guo

Pré-requis : comprendre la structure des données fournies via API-ROF (identifier la récuperation du département MIDO) et comprendre le fonctionnement des méthodes de la classe ROFDatabase. Et particulièrement le protocole initialize -> les méthodes fetch -> les méthodes create.

Objectif principal : Modification du package model pour qu'il permette de récupérer les données reROF et mettre sous la forme structurelle du package University adaptée au traitement SVG.

Objectif à court terme :

[square]

=== Equipe 2 : SVG - Camille et Raphaël

Pré-requis : Comprendre le procédé de génération du SVG; Création des settings, récupération des données mais surtout, la création des objets graphiques (DrawerSVGGen) et la définition des positions (ResponsiveSVG)

Mission : Reprendre les objectifs de l’itération 2, les modifications porterons sur la classe ResponsiveSVG du package svg_generator. Implémenter une nouvelle méthode, controlSettings, permettant le contrôle de la position des éléments graphiques. Modifier la méthode defineObjectsPosition pour que le calcul des positions se fasse en fonction des listes de cours par formation.

Détail des objectifs :

[square]

Aide et précisions:

[square]

=== Equipe 3 : SMPO Jérémie Brulé et Marcellino Dour

== Objectif itération 4 JAVA

=== Equipe 1 : BDD - Sarra et Marcellino

[square]

Précisions:

[square]

=== Equipe 2 : SVG - Camille et Raphaël

Missions : Adapter l'affichage lorsque l'utilisateur séléctionne uniquement Licence ou Master pour afficher le SVG. Clarifier le code afin de le rendre plus clair et d'éviter les redondances, particulièrement présentes dans le code préexistant. Enfin, réaliser des tests unitaires associés aux dernières fonctionnalités ajoutées.

Pour ce faire :

[square]

=== Equipe 3 : SMPO Jérémie Brulé et Zhenyi Guo