travel-agency issueshttps://univ-nantes.io/E156756M/travel-agency/-/issues2019-04-01T13:01:18Zhttps://univ-nantes.io/E156756M/travel-agency/-/issues/5Representation choices2019-04-01T13:01:18ZFrancois LEPINERepresentation choicesProblem : We don't know how to structure the project while there no choices of what a travel agency can do or not.
Test : To describe for each other issue concerned.
Solution : Create and maintain a file including all (potentially subj...Problem : We don't know how to structure the project while there no choices of what a travel agency can do or not.
Test : To describe for each other issue concerned.
Solution : Create and maintain a file including all (potentially subjective) choices to determine the use of this program.Francois LEPINEFrancois LEPINEhttps://univ-nantes.io/E156756M/travel-agency/-/issues/11Nécessité de renforcer la sécurité des mots de passe des utilisateurs.2019-04-01T12:45:40ZSamuel GirardeauNécessité de renforcer la sécurité des mots de passe des utilisateurs.**Problème actuel** : Actuellement, le système de chiffrement du mot de passe consiste à remplacer tous les 'a' par des 'e'. Le mot de passe peut donc facilement être cracké même par un enfant de 8 ans.
**Tests à mettre en oeuvre* : -
...**Problème actuel** : Actuellement, le système de chiffrement du mot de passe consiste à remplacer tous les 'a' par des 'e'. Le mot de passe peut donc facilement être cracké même par un enfant de 8 ans.
**Tests à mettre en oeuvre* : -
**Solution du problème** : Il faut modifier la méthode *encryptPassword* pour qu'elle chiffre réellement la chaîne de caractères passée en paramètre. Il faut que quand quelqu'un récupère le mot de passe encrypté, il ne puisse pas le décrypter sans posséder la clé de déchiffrement.Samuel GirardeauSamuel Girardeauhttps://univ-nantes.io/E156756M/travel-agency/-/issues/8Refactoring de la classe UserManager2019-04-01T12:45:32ZSamuel GirardeauRefactoring de la classe UserManager**Description du problème :**
La classe UserManager contient toutes les méthodes en lien avec User et Password. Or, afin de rendre le code plus lisible, on souhaite séparer les méthodes de gestion d'utilisateur (ajout/suppression) et les...**Description du problème :**
La classe UserManager contient toutes les méthodes en lien avec User et Password. Or, afin de rendre le code plus lisible, on souhaite séparer les méthodes de gestion d'utilisateur (ajout/suppression) et les méthodes liées à la gestion des mots de passe.
**Tests à mettre en oeuvre :**
**Solution du problème :**
Utiliser l'outil Refactor d'IntelliJ afin de séparer la classe UserManager en deux sous-classes User et Password. La classe User permettant de gérer les méthodes de gestion d'utilisateur et la classe Password permettant la gestion des mots de passe.Samuel GirardeauSamuel Girardeauhttps://univ-nantes.io/E156756M/travel-agency/-/issues/47. Cohérence correspondances2019-03-30T16:00:32ZFrancois LEPINE7. Cohérence correspondancesProblème:
Actuellement n'importe quel ensemble {voyage ; deux couples (ville,date)} peux consituer une étape. Or certaines lois physique actuelles ne le voient pas (encore) de cet œuil...
Tests:
Pour chaque type d'incohérence possible (...Problème:
Actuellement n'importe quel ensemble {voyage ; deux couples (ville,date)} peux consituer une étape. Or certaines lois physique actuelles ne le voient pas (encore) de cet œuil...
Tests:
Pour chaque type d'incohérence possible (non redondantes) : assurer avec un exemple que la construction (d'une telle correspondance incohérente ou l'ajout dans un voyage) n'est pas effectué.
Solution:
Il s'agit de ne pas permettre la construction de correspondance incohérente et l'ajout d'étape incohérente dans un voyage,
et donc de définir la cohérence des étapes.https://univ-nantes.io/E156756M/travel-agency/-/issues/10Association bidirectionnelle entre Calendar et Agent2019-03-29T13:36:12ZDenis BEDINAssociation bidirectionnelle entre Calendar et AgentL'association bidirectionnelle entre Calendar et Agent indique qu'un agent ne peut être associé qu'à un unique calendar à la fois et un calendar à un unique agent à la fois. Donc, lorsque l'on associe un calendar à un agent, il faut véri...L'association bidirectionnelle entre Calendar et Agent indique qu'un agent ne peut être associé qu'à un unique calendar à la fois et un calendar à un unique agent à la fois. Donc, lorsque l'on associe un calendar à un agent, il faut vérifier que celui-ci n'est pas déjà lié à un autre calendar. De même, on vérifie que le calendar n'est pas déjà associé à un autre agent.
Dans les tests, nous devons donc nous assurer de "casser" une possible association déjà existante lorsque l'on souhaite en créer une nouvelle.Denis BEDINDenis BEDINhttps://univ-nantes.io/E156756M/travel-agency/-/issues/7Contrainte sur l'association Correspondence -> City2019-03-29T12:27:41ZDenis BEDINContrainte sur l'association Correspondence -> CityLa classe Correspondence a deux attributs de type City : startCity et destinationCity. L'association entre Correspondence et City étant unidirectionnelle, les tests à réaliser consistent à vérifier que les getters et les setters des deux...La classe Correspondence a deux attributs de type City : startCity et destinationCity. L'association entre Correspondence et City étant unidirectionnelle, les tests à réaliser consistent à vérifier que les getters et les setters des deux attributs de type City fonctionnent correctement. Il faut également vérifier qu'on ne puisse pas avoir une correspondance n'ayant pas de startCity et destinationCity.Denis BEDINDenis BEDINhttps://univ-nantes.io/E156756M/travel-agency/-/issues/6Créer une association bidirectionnelle entre Travel et Correspondence.2019-03-29T12:05:51ZSamuel GirardeauCréer une association bidirectionnelle entre Travel et Correspondence.**Résumé** : On est dans le même cas que pour Calendar et Travel. Quand on associe une correspondance à un voyage, le voyage n'ajoute pas cette nouvelle correspondance à sa liste de correspondances. Et quand un voyage ajoute une nouvelle...**Résumé** : On est dans le même cas que pour Calendar et Travel. Quand on associe une correspondance à un voyage, le voyage n'ajoute pas cette nouvelle correspondance à sa liste de correspondances. Et quand un voyage ajoute une nouvelle correspondance, la correspondance reste sans parent. Or on souhaite que quand on ajoute d'un côté, l'autre côté se mette automatiquement à jour.
**Tests à mettre en oeuvre** : -Vérifier que quand on ajoute d'un côté, l'autre côté se met bien à jour.
**Solution** : - Créer une méthode *setBasicTravel* pour l'ajout simple et faire que la méthode *setTravel* ajoute la Correspondence à la liste des Correspondence du Voyage.
- Créer des méthodes *addBasicCorrespondence* et *removeBasicCorrespondance* pour l'ajout et la suppression simple et faire que les méthodes *addCorrespondence* et *removeCorrespondence* fassent que la Correspondance soit/ne soit plus liée à ce voyage.Samuel GirardeauSamuel Girardeauhttps://univ-nantes.io/E156756M/travel-agency/-/issues/9Refactoring de la classe Person2019-03-29T11:57:00ZDenis BEDINRefactoring de la classe PersonLa classe Person contient des méthodes qui sont exclusives au rôle d'agent, et d'autres exclusives au rôle d'administrateur. Il faut donc créer 2 sous-classes représentant les 2 rôles possibles.
La sous-classe Agent contiendra l'attribut...La classe Person contient des méthodes qui sont exclusives au rôle d'agent, et d'autres exclusives au rôle d'administrateur. Il faut donc créer 2 sous-classes représentant les 2 rôles possibles.
La sous-classe Agent contiendra l'attribut calendar, ainsi que les méthodes getCalendar() et setCalendar(). La sous-classe Administrateur contiendra la méthode addTravelTo(). Les méthodes equals() et hashCode() seront implémentées dans les 2 sous-classes. Les méthodes getName() et setName() restent dans la classe Person.
Les tests doivent vérifier que les getters et setters fonctionnent correctement et que la méthode hashCode() retourne bien la même valeur pour 2 objects identiques.Denis BEDINDenis BEDINhttps://univ-nantes.io/E156756M/travel-agency/-/issues/3Association Calendar Travel incomplète2019-03-28T12:48:59ZSamuel GirardeauAssociation Calendar Travel incomplèteRésumé : L'association bidirectionnelle entre Calendar et Travel est incomplète. En effet, il est spécifié dans l'UML qu'un Voyage doit avoir un Calendrier parent et qu'un Calendrier doit avoir une liste de voyages (comprise entre 0 et 1...Résumé : L'association bidirectionnelle entre Calendar et Travel est incomplète. En effet, il est spécifié dans l'UML qu'un Voyage doit avoir un Calendrier parent et qu'un Calendrier doit avoir une liste de voyages (comprise entre 0 et 10). Or, la méthode *addTravel* actuelle ajoute un nouveau Voyage au Calendrier mais elle ne met pas que le Calendrier parent de ce voyage est ce Calendrier. Pareil pour la méthode *removesTravel*, elle ne change pas le parent du Voyage qu'on enlève. Or, comme il est enlevé du Calendrier, il ne devrait plus avoir de Parent.
Quant à la méthode *setParent* actuelle de la classe Travel, elle ne fait que modifier le parent du Voyage actuel. L'ancien Calendrier parent garde toujours l'ancien Voyage et le nouveau Calendrier parent n'ajoute pas le Voyage à sa liste de voyages.
Tests à mettre en œuvre :
-Vérifier que quand on ajoute un Voyage, le Parent de ce Voyage est bien le Calendrier qui a ajouté ce voyage.
-Vérifier que quand on supprime un voyage d'un Calendrier, le parent du Voyage en question n'est plus le Calendrier qui l'a supprimé.
-Vérifier que la méthode *setParent* supprime bien le Voyage de l'ancien Calendrier.
-Vérifier que la méthode *setParent* ajoute le Voyage à la liste de Voyages du nouveau Calendrier Parent
Solution : Faire une méthode *addBasicTravel* et *removesBasicTravel* permettant de faire un ajout et une suppression simple. Dans les méthodes *addTravel* et *removesTravel*, penser à modifier le parent du Voyage.Samuel GirardeauSamuel Girardeauhttps://univ-nantes.io/E156756M/travel-agency/-/issues/1Remplacement Vector2019-03-27T16:42:56ZFrancois LEPINERemplacement VectorVector n'est pas paramétré par un type. L'incrémentation de la taille allouée aux instances, se fait par addition d'une constante prédéfinie par l'utilisateur de la classe Vector ; on veut laisser faire l'incrémentation par la classe.
A...Vector n'est pas paramétré par un type. L'incrémentation de la taille allouée aux instances, se fait par addition d'une constante prédéfinie par l'utilisateur de la classe Vector ; on veut laisser faire l'incrémentation par la classe.
ArrayList convient mieux à cette représentation d'un vecteur de taille variable.
Test : Construire un voyage à plusieurs étapes.Francois LEPINEFrancois LEPINEhttps://univ-nantes.io/E156756M/travel-agency/-/issues/2Remplacement d'entiers par un type date dans la classe Correspondance2019-03-27T16:41:38ZDenis BEDINRemplacement d'entiers par un type date dans la classe CorrespondanceLe type int ne permet pas d'avoir une représentation maîtrisée de la date, on privilégie donc le type LocalDateTime, qui va nous donner la date et l'heure de départ et d'arrivée toujours de la même manière.
Les tests doivent s'assurer ...Le type int ne permet pas d'avoir une représentation maîtrisée de la date, on privilégie donc le type LocalDateTime, qui va nous donner la date et l'heure de départ et d'arrivée toujours de la même manière.
Les tests doivent s'assurer que les comparaisons entre les dates de départ et d'arrivée fonctionnent correctement.Denis BEDINDenis BEDIN