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);
}
}
}
}