using System; using System.Collections.Generic; using System.IO; using System.Reflection; using System.Xml.Serialization; namespace WordGen.Model { /// /// Représente un gestionnaire de sauvegarde et de lecture d'un ou plusieurs Syllabaires pour l'application en exposant des méthodes permettant de gérer des fichiers XML représentant des Syllabaires. /// public class SyllabaryIoManager : FileIoManager { /// /// Représente le dossier local applicatif et utilisateur. /// public static readonly String UserAppData = Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), Assembly.GetEntryAssembly().GetName().Name); /// /// Sauvegarde le Syllabaire dans un fichier a l'emplacement indiqué. Utilise le titre comme nom de fichier. /// /// Le sillabraire à sauvegarder dans un fichier XML /// Le chemin d'accès au fichier dans lequel le Syllabaire sera enregistré. public void saveSyllabary(Syllabary thisSyllabary, string thisPath) { thisPath = Path.Combine(thisPath, thisSyllabary.title); thisPath = Path.ChangeExtension(thisPath, ".xml"); XmlSerializer xs = new XmlSerializer(typeof(Syllabary)); using (StreamWriter wr = new StreamWriter(thisPath)) { xs.Serialize(wr, thisSyllabary); } } /// /// Charge le Syllabaire depuis le fichier précisé /// /// L'emplacement du fichier XML représentant un Syllabaire public Syllabary loadSyllabary(string thisSillabaryFile) { XmlSerializer xs = new XmlSerializer(typeof(Syllabary)); using (StreamReader sr = new StreamReader(thisSillabaryFile)) { Syllabary mySylla = xs.Deserialize(sr) as Syllabary; return mySylla; } } /// /// Charge l'ensemble des fichier Syllabaire depuis le dossier précisé /// /// L'emplacement du dossier dans lequel les Syllabaires seront chargés. public List loadAllSyllabaries(string thisFolder) { List openedSylla = new List(); foreach (string aFile in Directory.GetFiles(thisFolder)) { if (Path.GetExtension(aFile).ToLower().Equals(".xml")) { try { openedSylla.Add(this.loadSyllabary(aFile)); } catch (InvalidOperationException ) { //Some XML files are not Syllables. } } } return openedSylla; } /// /// Sauvegarde l'ensemble des objets Syllabaires spécifiés à l'emplacement spécifié. /// /// La liste des Syllabaires à sauvegarder dans des fichiers XML. /// L'emplacement du dossier dans lequel les Syllabaires seront créés. public void saveAllSyllabaries(List thosesSillabaries, string thisFolder) { foreach (Syllabary aSylla in thosesSillabaries) { saveSyllabary(aSylla, thisFolder); } } } }