diff --git a/Sources/Model/Bateau.cs b/Sources/Model/Bateau.cs index fb9eaf0..db6c040 100644 --- a/Sources/Model/Bateau.cs +++ b/Sources/Model/Bateau.cs @@ -59,5 +59,32 @@ namespace Model { Affiliation = affiliation; } + + public override bool Equals(object? obj) + { + + if (obj == null) return false; + if (this.GetType() != obj.GetType()) + { + return false; + } + else + { + Bateau o = (Bateau)obj; + return o.Nom == Nom; + } + + } + + public override int GetHashCode() + { + + return HashCode.Combine(NomRomanise, Affiliation, PremierChap, PremierEp, Description, Caracteristique); + } + + public override string ToString() + { + return "Bateau :" + Nom +" "+EstFavori +" " + NomRomanise + " " + Affiliation + " " + PremierChap + " " + PremierEp + " " + Description + " " + Caracteristique +" "+ Image; + } } } diff --git a/Sources/Model/Bestiaire.cs b/Sources/Model/Bestiaire.cs index 704a7a8..8b04446 100644 --- a/Sources/Model/Bestiaire.cs +++ b/Sources/Model/Bestiaire.cs @@ -33,6 +33,29 @@ namespace Model Image=image; } - + public override bool Equals(object? obj) + { + if (obj == null) return false; + if (this.GetType() != obj.GetType()) + { + return false; + } + else + { + Bestiaire o = (Bestiaire)obj; + return o.Nom == Nom; + } + + } + + public override int GetHashCode() + { + + return HashCode.Combine(Origine, Description, Caracteristique); + } + public override string ToString() + { + return "Bestiaire :" + Nom +" "+EstFavori+ " " + Origine + " " + Description + " " + Caracteristique +" " + Image; + } } } diff --git a/Sources/Model/Equipage.cs b/Sources/Model/Equipage.cs index c3328f6..57a8665 100644 --- a/Sources/Model/Equipage.cs +++ b/Sources/Model/Equipage.cs @@ -64,6 +64,30 @@ namespace Model } + public override bool Equals(object? obj) + { + if (obj == null) return false; + if (this.GetType() != obj.GetType()) + { + return false; + } + else + { + Equipage o = (Equipage)obj; + return o.Nom == Nom; + } + + } + + public override int GetHashCode() + { + return HashCode.Combine(NomRomanise, Region, PremierChap, PremierEp, Statut, Description); + } + + public override string ToString() + { + return "Equipage :" + Nom +" "+EstFavori+ " " + NomRomanise + " " + Region + " " + PremierChap + " " + PremierEp + " " + Statut + " " + Description + " " + Image; + } } } diff --git a/Sources/Model/FruitDuDemon.cs b/Sources/Model/FruitDuDemon.cs index 691d34d..4c334ff 100644 --- a/Sources/Model/FruitDuDemon.cs +++ b/Sources/Model/FruitDuDemon.cs @@ -66,5 +66,30 @@ namespace Model { Utilisateur = utilisateur; } + + public override bool Equals(object? obj) + { + if (obj == null) return false; + if (this.GetType() != obj.GetType()) + { + return false; + } + else + { + FruitDuDemon o = (FruitDuDemon)obj; + return o.Nom == Nom; + } + + } + + public override int GetHashCode() + { + + return HashCode.Combine(NomRomanise, Type, PremierChap, PremierEp, Description, Forces, Faiblesses); + } + public override string ToString() + { + return "FruitDuDemon :" + Nom +" " +EstFavori+" " + NomRomanise + " " + Type + " " + PremierChap + " " + PremierEp + " " + Description + " " + Forces +" "+Faiblesses+ " " + Image; + } } } diff --git a/Sources/Model/Ile.cs b/Sources/Model/Ile.cs index e6ffee2..066ad49 100644 --- a/Sources/Model/Ile.cs +++ b/Sources/Model/Ile.cs @@ -57,5 +57,27 @@ namespace Model Image = image; } + + public override bool Equals(object? obj) + { + if (obj == null) return false; + else + { + Ile o = (Ile)obj; + return o.Nom == Nom; + } + + } + + public override int GetHashCode() + { + + return HashCode.Combine(NomRomanise, Region, PremierChap, PremierEp, Description, Geographie); + } + + public override string ToString() + { + return "Ile :"+ Nom +" "+NomRomanise+" "+Region+" "+PremierChap+" "+PremierEp+" "+Description+" "+Geographie+" "+Image; + } } } diff --git a/Sources/Model/ObjetOhara.cs b/Sources/Model/ObjetOhara.cs index e2f41d6..5cb11de 100644 --- a/Sources/Model/ObjetOhara.cs +++ b/Sources/Model/ObjetOhara.cs @@ -27,6 +27,10 @@ namespace Model public override bool Equals(object? obj) { if (obj == null) return false; + if (this.GetType() != obj.GetType()) + { + return false; + } else { ObjetOhara o = (ObjetOhara)obj; @@ -34,6 +38,16 @@ namespace Model } } + + public override int GetHashCode() + { + + return HashCode.Combine(Nom, Image,EstFavori); + } + public override string ToString() + { + return "ObjetOhara :" + Nom + " " +EstFavori+ " " + Image; + } } } diff --git a/Sources/Model/Personnage.cs b/Sources/Model/Personnage.cs index fc720a1..c5193da 100644 --- a/Sources/Model/Personnage.cs +++ b/Sources/Model/Personnage.cs @@ -65,5 +65,31 @@ namespace Model Fruit = fruit; } + + public override bool Equals(object? obj) + { + if (obj == null) return false; + if (this.GetType() != obj.GetType()) + { + return false; + } + else + { + Personnage o = (Personnage)obj; + return o.Nom == Nom; + } + + } + + public override int GetHashCode() + { + + return HashCode.Combine(Prime, Epithete, Age, Origine,Biographie, Citation,Equipage,Fruit); + } + + public override string ToString() + { + return "Personnage :" + Nom + " " + EstFavori + " " + Prime + " " + Epithete + " " + Age + " " + Origine + " " + Biographie + " "+ Citation+" " +Equipage+" " + Fruit+" "+ Image; + } } } \ No newline at end of file diff --git a/Sources/Model/Serializer/XML_Serializer.cs b/Sources/Model/Serializer/XML_Serializer.cs index b016161..67844c6 100644 --- a/Sources/Model/Serializer/XML_Serializer.cs +++ b/Sources/Model/Serializer/XML_Serializer.cs @@ -181,7 +181,7 @@ namespace Model.Serializer public IEnumerable GetBateaux() { - List listeBateau = new List(); + List? listeBateau = new List(); var serializer = new DataContractSerializer(typeof(List)); string xmlFile = "bateau.xml"; Directory.SetCurrentDirectory(Path.Combine(Chemin, "./")); @@ -190,12 +190,14 @@ namespace Model.Serializer { listeBateau = serializer.ReadObject(s) as List; } + + return listeBateau; } public IEnumerable GetBestiaires() { - List listeBest = new List(); + List? listeBest = new List(); var serializer = new DataContractSerializer(typeof(List)); string xmlFile = "bestiaire.xml"; Directory.SetCurrentDirectory(Path.Combine(Chemin, "./")); @@ -208,7 +210,7 @@ namespace Model.Serializer } public IEnumerable GetEquipages() { - List listeEquip = new List(); + List? listeEquip = new List(); var serializer = new DataContractSerializer(typeof(List)); string xmlFile = "equipage.xml"; Directory.SetCurrentDirectory(Path.Combine(Chemin, "./")); @@ -221,7 +223,7 @@ namespace Model.Serializer } public IEnumerable GetFruits() { - List listeFDD = new List(); + List? listeFDD = new List(); var serializer = new DataContractSerializer(typeof(List)); string xmlFile = "fruitdudemon.xml"; Directory.SetCurrentDirectory(Path.Combine(Chemin, "./")); @@ -234,7 +236,7 @@ namespace Model.Serializer } public IEnumerable GetIles() { - List listeIle = new List(); + List? listeIle = new List(); var serializer = new DataContractSerializer(typeof(List)); string xmlFile = "ile.xml"; Directory.SetCurrentDirectory(Path.Combine(Chemin, "./")); @@ -247,7 +249,7 @@ namespace Model.Serializer } public IEnumerable GetPersonnages() { - List listePerso = new List(); + List? listePerso = new List(); var serializer = new DataContractSerializer(typeof(List)); string xmlFile = "personnage.xml"; Directory.SetCurrentDirectory(Path.Combine(Chemin, "./")); diff --git a/Sources/TestConsole/Program.cs b/Sources/TestConsole/Program.cs index 50612f8..506e1c8 100644 --- a/Sources/TestConsole/Program.cs +++ b/Sources/TestConsole/Program.cs @@ -1,20 +1,141 @@ // See https://aka.ms/new-console-template for more information using Model; using Model.Serializer; +using System.Collections.ObjectModel; -var manager = new Manager(); -var xml = new XML_Serializer(); +// Tests fonctionnels : +Manager manager = new Manager(new XML_Serializer()); +//Tests paramètres du manager : + +foreach (Bateau b in manager.Bateaux) +{ + Console.WriteLine(b); +} -Bateau luffy = new Bateau("Sunny", "", 15, 15,"",""); -ObjetOhara b = luffy; -Console.WriteLine(luffy.EstFavori); -manager.ModifierFavoris(b); +foreach (Bestiaire b in manager.Bestiaire) +{ + Console.WriteLine(b); +} + +foreach (Equipage e in manager.Equipages) +{ + Console.WriteLine(e); +} + +foreach (FruitDuDemon f in manager.Fruits) +{ + Console.WriteLine(f); +} + +foreach (Personnage p in manager.Personnages) +{ + Console.WriteLine(p); +} -foreach(Bateau s in manager.Bateaux) +Console.WriteLine("\n"); +Console.WriteLine("\n"); + +foreach (Bateau b in manager.Bateaux) +{ + manager.ModifierFavoris(b, false); +} +//Tests serialization : +XML_Serializer serializer = new XML_Serializer(); +//Affichage d'un objet à son état initiale +Console.WriteLine(manager.Bateaux[0]); +//Modification de cet objet +manager.ModifierFavoris(manager.Bateaux[0], true); +Console.WriteLine(manager.Bateaux[0]); +//Serialization de la liste contenant l'objet +serializer.SetBateau(manager.Bateaux.ToList()); +//Netoyage de la liste +manager.Bateaux.Clear(); +//Deserialization dans la liste +manager.Bateaux = new ObservableCollection(serializer.GetBateaux()); +//Affichage de l'objet précedement modifié +Console.WriteLine(manager.Bateaux[0]); + +Console.WriteLine("\n"); +Console.WriteLine("\n"); +//Tests méthode du manager : + +foreach (Bateau b in manager.Bateaux) +{ + manager.ModifierFavoris(b, false); +} +//Ajout d'un objet en favoris +manager.ModifierFavoris(manager.Bateaux[0],true); + +foreach (ObjetOhara o in manager.GetFavoris()) +{ + Console.WriteLine(o.Nom); +} +//Suppréssion d'un objet des favoris +manager.ModifierFavoris(manager.Bateaux[0], false); +foreach (ObjetOhara o in manager.GetFavoris()) +{ + Console.WriteLine(o.Nom); +} + +Console.WriteLine("\n"); +Console.WriteLine("\n"); +// Filtre des fruits du démon pour afficher seulement les type "Logia" +foreach (FruitDuDemon f in manager.FiltrerFDD("Logia")) +{ + Console.WriteLine(f.Nom+" "+f.Type); +} + +Console.WriteLine("\n"); +Console.WriteLine("\n"); +// Recherche dansune liste de fruit de démon pour afficher les fruits correspondant au mot clé "Nika" +foreach (FruitDuDemon f in manager.RechercheFDD("Nika",manager.Fruits.ToList())) +{ + Console.WriteLine(f.Nom); +} + +Console.WriteLine("\n"); +Console.WriteLine("\n"); +foreach (Bateau b in manager.Bateaux) +{ + manager.ModifierFavoris(b,true); +} + + +// Recherche dansune liste de objet ohara pour afficher les objets ohara correspondant au mot clé "Sunny" +foreach (ObjetOhara o in manager.RechercheObjetOhara("Sunny", manager.GetFavoris())) +{ + Console.WriteLine(o.Nom); +} + +Console.WriteLine("\n"); +Console.WriteLine("\n"); + +ObservableCollection bateaux = new ObservableCollection(manager.GetBateaux()); +foreach(Bateau b in bateaux) +{ + Console.WriteLine(b); +} + +ObservableCollection bestiaire = new ObservableCollection(manager.GetBestiaires()); +foreach (Bestiaire b in bestiaire) +{ + Console.WriteLine(b); +} +ObservableCollection equipage = new ObservableCollection(manager.GetEquipages()); +foreach (Equipage e in equipage) +{ + Console.WriteLine(e); +} +ObservableCollection fruits = new ObservableCollection(manager.GetFruits()); +foreach (FruitDuDemon f in fruits) +{ + Console.WriteLine(f); +} +ObservableCollection personnages = new ObservableCollection(manager.GetPersonnages()); +foreach (Personnage p in personnages) { - Console.WriteLine(s.Nom); - Console.WriteLine(s.EstFavori); -} \ No newline at end of file + Console.WriteLine(p); +}