Projet de départ pour le TP - Refactoring de traitement de graphe (version JAVA) associé au cours sur les patrons de conception et principes de refactoring.
- La branche par défaut ("main") permet de récupérer un projet maven pour commencer à travailler
- Les branches 0.1, 0.2, etc. correspondront aux corrections pour chaque question du TP
- junit et mockito sont utilisés pour les tests unitaires et fonctionnels
La classe Application est le point d'entrée de l'application. La méthode main
assure le démarrage de l'API implémentée à l'aide de spring-boot.
Le code de l'API est organisé en package dans src/
:
model
: Modélisation des données de l'application- ̀
io
: Lecture de graphes routing
: Implémentation de l'algorithme de calcul de plus court chemincontrollers
: Contrôleurs de l'application springconfig
: Configuration de l'application spring (initialisation des beans)errors
: Gestion des erreurs (exceptions personnalisées)
- Lancer l'application "Application.java".
- Ouvrir http://localhost:8080/api/route?origin=1&destination=9557 dans un navigateur
- Ouvrir http://localhost:8080/ pour un démonstrateur
- Construire le jar :
mvn clean package
mvn clean package
- Démarrer l'API :
mvn spring-boot:run
- Tester l'API :
curl "http://localhost:8080/api/route?origin=1&destination=9557"
- Ouvrir le démonstrateur :
http://localhost:8080
Un extrait de ROUTE500 est présent dans src/main/resources/route500/idf/troncon_route.shp
à des fins de tests. Il est intégré dans le jar et est chargé par défaut.
Il est possible de charger un autre fichier à l'aide de l'option graph.path
:
java -Dgraph.path=path/to/troncon_route.shp -jar target/tp-refactoring-graph-0.1.0-SNAPSHOT.jar
Pour adapter le code démonstrateur (dernière question), le code correspondant est dans le dossier front/
. En cas de changement dans ce dossier, il convient de reconstruire src/main/resources/public
qui est servi par spring à l'aide des commandes suivantes :
# installation des dépendances
npm install
# construction du front
npm run build
Remarques :
- NodeJS doit être installé en amont de l'exécution de ces commandes.
- Voir package.json et vite.config.js (adapté à partir de OpenLayers + Vite)
- Log en mode debug :
-Dlogging.level.org.acme.graph=DEBUG
. - Génération de rapport de couverture :
mvn clean package jacoco:report
(voir target/site/jacoco/index.html) - VisualVM pourra vous aider pour les optimisations.