Vérification cohérence Travel
Vérifier qu'un voyage (Travel
) est composé d'un ensemble de correspondances cohérent à vous de définir "cohérente"
Problème : Quand on crée un Travel on peut lui assigner des correspondances qui ne se suivent pas exemple : un travel avec une première correspondance entre Paris et Londres et une deuxième entre Madrid et Moscou -> incohérent il faut que le 2ème lieu de la première correspondance soit le même que le 1er lieu de la 2ème correspondence on aurait alors plutôt en première correspondance Paris -> Londres puis en deuxième Londres -> Madrid ou Londres -> Moscou. Même problème pour le suppression et la mise à jour des villes du Travel, on ne pourra donc pas enlever une correspondance au milieu du voyage et on ne pourra pas modifier une ville au milieu du Travel sans modifier aussi la correspondance qui suit.
Autre point à prendre en compte pour la cohérence : l'heure et la date des correspondances, il ne faut pas de chevauchement entre correspondances d'un même travel. On autorise par contre les pauses entre deux correspondances
Solution :
- Pour l'insertion : On interdit l'insertion de correspondances ne correspondant pas à la précédente
- Pour la suppression : On interdit la suppression de correspondances étant au milieu du Travel, on aura alors que le droit de supprimer la première et la dernière sans causer de problèmes -> solution : on modifie la signature de la méthode removeCorrespondence qui ne prendra plus de paramètres et supprimera automatiquement la dernière correspondence. On crée alors deux méthodes : removeLastCorrespondence et removeFirstCorrespondence.
- Pour la modification d'une correspondance : lorsque l'on modifiera une des villes de la correspondance on modifiera aussi la correspondance d'avant ou celle d'après respectivement si la ville1 ou la ville2 est modifiée.
- Pour le chevauchement de dates on vérifie, quand une correspondence est ajoutée à un travel qui en comporte au moins une que la correspondence à ajouter a une date supérieure à la dernière correspondance ajoutée sinon on renvoie une illegalArgumentException avec un message explicatif.
On testera donc principalement l'ajout d'une correspondance à un voyage existant qui ne soit pas cohérent, la suppression d'une correspondance au milieu du voyage ainsi que la modification de correspondances au milieu du travel et l'insertion de correspondences avec des dates qui se chevauchent.