/// \file XML_Serializer.cs /// \brief Contient la définition de la classe XML_Serializer /// using Model.Stub; using System; using System.Collections.Generic; using System.Linq; using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; using System.Xml; using Model.Classes; using Model.Managers; namespace Model.Serializer { /// /// Classe permettant de gérer la persistance sous forme de fichier .xml de l'application. /// public class XML_Serializer : IDataManager { public string Chemin { get; set; } public XML_Serializer() { StubManager stubManager = new StubManager(); Chemin = Directory.GetCurrentDirectory(); InitialiserFichiers(stubManager); } public XML_Serializer(string path) { Chemin= path; StubManager stubManager = new StubManager(); InitialiserFichiers(stubManager); } public void InitialiserFichiers(StubManager stubManager) { if (!File.Exists(Path.Combine(Chemin, "./personnage.xml"))) { var personnages = stubManager.GetPersonnages(); if(personnages!=null) SetPersonnage(personnages.ToList()); } if (!File.Exists(Path.Combine(Chemin, "./bateau.xml"))) { var bateaux = stubManager.GetBateaux(); if(bateaux !=null) SetBateau(bateaux.ToList()); } if (!File.Exists(Path.Combine(Chemin, "./fruitdudemon.xml"))) { var fruits = stubManager.GetFruits(); if(fruits!=null) SetFDD(fruits.ToList()); } if (!File.Exists(Path.Combine(Chemin, "./bestiaire.xml"))) { var bestiaires= stubManager.GetBestiaires(); if(bestiaires!=null) SetBestiaire(bestiaires.ToList()); } if (!File.Exists(Path.Combine(Chemin, "./equipage.xml"))) { var equipages= stubManager.GetEquipages(); if(equipages!=null) SetEquipage(equipages.ToList()); } if (!File.Exists(Path.Combine(Chemin, "./ile.xml"))) { var iles = stubManager.GetIles(); if(iles!=null) SetIle(iles.ToList()); } } public void SetPersonnage(List listePerso) { var serializer = new DataContractSerializer(typeof(List)); string xmlFile = "personnage.xml"; Directory.SetCurrentDirectory(Path.Combine(Chemin, "./")); XmlWriterSettings settings = new XmlWriterSettings() { Indent = true }; using (TextWriter tw = File.CreateText(xmlFile)) { using (XmlWriter writer = XmlWriter.Create(tw, settings)) { serializer.WriteObject(writer, listePerso); } } } public void SetFDD(List listeFDD) { var serializer = new DataContractSerializer(typeof(List)); string xmlFile = "fruitdudemon.xml"; Directory.SetCurrentDirectory(Path.Combine(Chemin, "./")); XmlWriterSettings settings = new XmlWriterSettings() { Indent = true }; using (TextWriter tw = File.CreateText(xmlFile)) { using (XmlWriter writer = XmlWriter.Create(tw, settings)) { serializer.WriteObject(writer, listeFDD); } } } public void SetBestiaire(List listeBest) { var serializer = new DataContractSerializer(typeof(List)); string xmlFile = "bestiaire.xml"; Directory.SetCurrentDirectory(Path.Combine(Chemin, "./")); XmlWriterSettings settings = new XmlWriterSettings() { Indent = true }; using (TextWriter tw = File.CreateText(xmlFile)) { using (XmlWriter writer = XmlWriter.Create(tw, settings)) { serializer.WriteObject(writer, listeBest); } } } public void SetEquipage(List listeEquip) { var serializer = new DataContractSerializer(typeof(List)); string xmlFile = "equipage.xml"; Directory.SetCurrentDirectory(Path.Combine(Chemin, "./")); XmlWriterSettings settings = new XmlWriterSettings() { Indent = true }; using (TextWriter tw = File.CreateText(xmlFile)) { using (XmlWriter writer = XmlWriter.Create(tw, settings)) { serializer.WriteObject(writer, listeEquip); } } } public void SetIle(List listeIle) { var serializer = new DataContractSerializer(typeof(List)); string xmlFile = "ile.xml"; Directory.SetCurrentDirectory(Path.Combine(Chemin, "./")); XmlWriterSettings settings = new XmlWriterSettings() { Indent = true }; using (TextWriter tw = File.CreateText(xmlFile)) { using (XmlWriter writer = XmlWriter.Create(tw, settings)) { serializer.WriteObject(writer, listeIle); } } } public void SetBateau(List listeBateaux) { var serializer = new DataContractSerializer(typeof(List)); string xmlFile = "bateau.xml"; Directory.SetCurrentDirectory(Path.Combine(Chemin, "./")); XmlWriterSettings settings = new XmlWriterSettings() { Indent = true }; using (TextWriter tw = File.CreateText(xmlFile)) { using (XmlWriter writer = XmlWriter.Create(tw, settings)) { serializer.WriteObject(writer, listeBateaux); } } } public IEnumerable? GetBateaux() { var serializer = new DataContractSerializer(typeof(List)); string xmlFile = "bateau.xml"; Directory.SetCurrentDirectory(Path.Combine(Chemin, "./")); using (Stream s = File.OpenRead(xmlFile)) { return serializer.ReadObject(s) as List; } } public IEnumerable? GetBestiaires() { var serializer = new DataContractSerializer(typeof(List)); string xmlFile = "bestiaire.xml"; Directory.SetCurrentDirectory(Path.Combine(Chemin, "./")); using (Stream s = File.OpenRead(xmlFile)) { return serializer.ReadObject(s) as List; } } public IEnumerable? GetEquipages() { var serializer = new DataContractSerializer(typeof(List)); string xmlFile = "equipage.xml"; Directory.SetCurrentDirectory(Path.Combine(Chemin, "./")); using (Stream s = File.OpenRead(xmlFile)) { return serializer.ReadObject(s) as List; } } public IEnumerable? GetFruits() { var serializer = new DataContractSerializer(typeof(List)); string xmlFile = "fruitdudemon.xml"; Directory.SetCurrentDirectory(Path.Combine(Chemin, "./")); using (Stream s = File.OpenRead(xmlFile)) { return serializer.ReadObject(s) as List; } } public IEnumerable? GetIles() { var serializer = new DataContractSerializer(typeof(List)); string xmlFile = "ile.xml"; Directory.SetCurrentDirectory(Path.Combine(Chemin, "./")); using (Stream s = File.OpenRead(xmlFile)) { return serializer.ReadObject(s) as List; } } public IEnumerable? GetPersonnages() { var serializer = new DataContractSerializer(typeof(List)); string xmlFile = "personnage.xml"; Directory.SetCurrentDirectory(Path.Combine(Chemin, "./")); using (Stream s = File.OpenRead(xmlFile)) { return serializer.ReadObject(s) as List; } } } }