- Installez maven et la dernière version d'openjdk
- Executez
mvn clean package
pour build le projet - Executez
./target/server/bin/standalone.sh
pour lancer le projet - Allez à l'adresse
http://127.0.0.1:8080/
dans votre navigateur web - Pour vous connecter en admin, utilisez le login "[email protected]" et le mot de passe "password"
Les valeurs par défaut de la base de donnée sont définies dans les fichiers situés dans ./src/main/resources/META-INF/loaderFiles/
L'objectif de notre application
La problématique du passage à l'oral de cet examen est de faire passer
des élèves de filières différentes (A,B,L,...) qui ont tous un emploi
du temps différent.
Dans un premier temps, le ou les professeurs jury rempliront leurs
disponibilités à l'aide de la page présentée en
[fig:modif_event]{reference-type="autoref"
reference="fig:modif_event"}. En effet, il est possible pour un
professeur de créer un événement (examen, présentation, suivi, ...) et
d'y inviter des élèves et de préciser ses disponibilités en ajoutant des
salles puis des créneaux. Pour ajouter un créneau, il faut rentrer le
nombre de minutes souhaité pour la durée du créneau, cliquer sur
"ajouter un créneau" pour enfin pouvoir sélectionner dans la colonne
réprésentant la salle l'horaire de départ du créneau. Le professeur peut
aussi renseigner une date de début et de fin pour les inscriptions des
élèves. Un fois la durée des inscriptions expirée, le professeur peut
cliquer sur "exécuter l'algorithme" pour lancer un algorithme
d'affectation qui attribuera à chaque case un élève.
Du côté des élèves, ils pourront (individuellement ou sous la forme d'un
groupe) noter chaque créneau horaire mis à disposition par le
professeur. Ici, comme nous pouvons le voir dans la
[fig:choix_util]{reference-type="autoref"
reference="fig:choix_util"}, le système de notation est composé de trois
états : "oui", "peut-être" et "non". Pour noter une case, l'élève
doit cliquer sur l'état voulu puis sur la case. Une fois que le
professeur aura éxécuté l'algorithme d'affectation, les élèves auront
accès au créneau qui leur a été attribué dans la liste de leurs
événements.\
Le projet utilise maven pour télécharger automatiquement les dépendances
et générer le .war. On utilise wildfly (version communautaire et
maintenue de JBoss) comme serveur. Lancer mvn build
pour générer le
.war Lancer mvn wildfly:deploy
pour build et déployer automatiquement
dans wildfly
-
package model : Entities beans pour l'interaction avec la base de donnée
-
package controller : L'interface entre le front et le back :
-
Rest.java : La définition de l'API REST utilisée par le front-end web au travers de la fonction "fetch" de JavaScript. Elle peut être testée avec curl avec les exemples suivants:
# créer un utilisateur curl -XPOST -H "Content-type: application/json" \ -d '{"mail": "[email protected]", "prenom": "teo", "nom":"p" }' \ 'http://localhost:8080/Volundr/rest/tutorial/addUser' # récupérer la liste de tous les utilisateurs de la bdd curl "http://localhost:8080/Volundr/rest/tutorial/getUsers"
-
Serv.java : Une servlet utilisée par quelques rares pages web qui n'ont pas eu le temps d'être réécrites pour utiliser l'api REST
-
-
package dataTransfert : Classes POJO qui servent à représenter les entities beans lors des communications entre le back et le front. Ce sont des copies des classes du modèle sans les attributs qu'on ne veut pas envoyer au client. Elles sont automatiquement sérialisées en JSON par l'API REST lors des réponses au client.
Vous y trouverez du code jsp qui sert uniquement à générer du code HTML car on utilise pas de framework de front-end comme React pour le faire. Par exemple: on l'utilise pour inclure des fichiers html externes sans devoir copier coller le code dans chaque fichier html.
Pour pouvoir être intéractives, les pages générées utilisent l'API REST pour interragir avec le back-end grâce à la fonction "fetch" de JavaScript.
Le dossier "src/main/webapp/webscheduler" contient un composant permettant d'avoir une nouvelle balise html "volundr-scheduler" pour gérer l'emploi du temps. Ce widget est écrit "from scratch" avec uniquement du HTML,CSS,JS avec l'api "webcomponent".
Choix par un utilisateur