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.jarPour 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 buildRemarques :
- 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.