Environnement

  • Le projet doit être en Java 18+
  • Vous pouvez utiliser l’IDE de votre choix (intelliJ est recommendé)
  • Vous devez utiliser le dépôt Github fourni pour le projet (nous y ferons automatiquement les prélèvements lors des remises - voir les instructions de remise)
  • Le projet de base fourni est seulement une suggestion, mais peut vous faire gagner du temps. Vous pouvez modifier le projet à votre guise, tant que les commandes d’exécution restent les mêmes
  • Nous vous suggérons d’utiliser le framework du projet de base (jetty + jersey + jackson). Si vous désirez en utiliser un autre, veuillez nous en parler d’abord. Entre autre, l’utilisation de Spring est fortement déconseillée.

Exécution

Lors de la correction, nous prélèverons automatiquement le code dans le dépôt Github fourni. Il est de votre responsabilité de vous assurer que les Pull Requests soient fermées à temps et que tout le code se trouve dans la bonne branche. Voir les instructions de remise sur le site de cours.

Pour corriger, nous allons exécuter les commandes suivantes :

mvn clean install
mvn exec:java -pl application # -Dpersistence=memory ou -Dpersistence=sqlite

Il est de votre responsabilité de vous assurer que cette commande fonctionne correctement. Tout projet ne démarrant pas pourrait ne pas être corrigé.

L’option -Dpersistence= est expliqué ci-bas.

Gestion de la persistence

Votre projet doit pouvoir supporter deux modes de persistence :

  • memory: Les données sont stockées en mémoire. Si on redémarre l’application, on perd tout.
  • sqlite: Les données sont stockées dans une base de données SQLite. Si on redémarre l’application, les données sont toujours là.

La persistence est choisie au démarrage de l’application avec l’option -Dpersistence=memory ou -Dpersistence=sqlite. Si l’option n’est pas présente, assumez que la persistence est en mémoire.

Afin de partir du bon pied, vous devez absolument avoir lu et fait les exercices de la section Semaine 5: La persistance et le DIP

Quelques suggestions pour la persistence SQLite:

  • Vous pouvez utiliser le connecteur JDBC directement, ou hibernate.
  • Le fichier SQLite doit être créé automatiquement s’il n’existe pas.
  • Le fichier SQLite ne doit pas être dans les resources de votre projet, mais plutôt dans un dossier à part (attention de supporter les chemins de fichiers windows/mac/linux)
  • Le fichier SQLite peut être placé dans le dossier temporaire (attention: vous devez supporter windows/mac/linux)
  • Le schéma de la base de données doit être créé automatiquement au démarrage, s’il n’existe pas.
  • Si des données de bases doivent être chargées dans l’application, celles-ci ne doivent être chargées automatiquement au démarrage (et non une autre commande à exécuter). Prenez également en considération que les données pourraient déjà exister, il ne faut pas les charger en double.