You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
73 lines
3.4 KiB
73 lines
3.4 KiB
using System;
|
|
using System.Collections.Generic;
|
|
using System.IO;
|
|
using System.Runtime.Serialization;
|
|
using notre_bibliotheque;
|
|
|
|
namespace PersDataContract
|
|
{
|
|
/// <summary>
|
|
/// Permet de sauvegarder/charger dans/depuis un fichier xml grâce au DataContract
|
|
/// </summary>
|
|
public class MyDataContract : IPercistance
|
|
{
|
|
public string FilePath { get; set; } = Path.Combine(Directory.GetCurrentDirectory(), "Pers");
|
|
private string fileName;
|
|
private string FileNameComplet => Path.Combine(FilePath, fileName);
|
|
|
|
/// <summary>
|
|
/// Constructeur de MyDataContract
|
|
/// </summary>
|
|
/// <param name="fileName">Nom de fichier de sauvegarde/chargement</param>
|
|
/// <exception cref="ArgumentException">Lors ce que le fichier n'existe pas, une excepetion est lancée</exception>
|
|
public MyDataContract(string fileName)
|
|
{
|
|
this.fileName = fileName;
|
|
}
|
|
/// <summary>
|
|
/// Permet de charger les donner depuis un fichier xml
|
|
/// </summary>
|
|
/// <returns>Un dictionaire avec une clef "Langages" et "Comptes" qui contiennent réspectivement des la liste des langages chargés et la liste des comptes chargés</returns>
|
|
public Dictionary<string, IEnumerable<Item>> ChargerLesDonnées()
|
|
{
|
|
if (!File.Exists(FileNameComplet))
|
|
{
|
|
throw new ArgumentException("Le fichier spécifié n'existe pas");
|
|
}
|
|
Dictionary<string, IEnumerable<Item>> DictionaireÀRetourner = new Dictionary<string, IEnumerable<Item>>();
|
|
DonnésÀSerialiser tmp;
|
|
|
|
// Ce DataContractSerializer permet de lire un objet de type DonnésÀSerialiser
|
|
DataContractSerializer serializer = new DataContractSerializer(typeof(DonnésÀSerialiser));
|
|
using(Stream fichierDeChargement = File.OpenRead(FileNameComplet))
|
|
{
|
|
tmp = serializer.ReadObject(fichierDeChargement) as DonnésÀSerialiser;
|
|
}
|
|
DictionaireÀRetourner.Add("Langages", tmp.LangagesASauvegarder);
|
|
DictionaireÀRetourner.Add("Comptes", tmp.ComptesASauvegarder);
|
|
return DictionaireÀRetourner;
|
|
}
|
|
|
|
/// <summary>
|
|
/// Permet de sauvegarder les données de l'application
|
|
/// </summary>
|
|
/// <param name="langagesASauvgarder">Liste des langages disponible dans l'application</param>
|
|
/// <param name="comptesÀSauvegarder">Liste des comptes de l'application</param>
|
|
public void SauvegarderLesDonnées(IEnumerable<Langage> langagesASauvgarder, IEnumerable<Compte> comptesÀSauvegarder)
|
|
{
|
|
if (!Directory.Exists(FilePath))
|
|
{
|
|
Directory.CreateDirectory(FilePath);
|
|
}
|
|
|
|
//Ce DataContractSerializer permet d'ecire les données de l'application dans un fichier xml tout en préservant les référances
|
|
DataContractSerializer serializer = new DataContractSerializer(typeof(DonnésÀSerialiser), new DataContractSerializerSettings() { PreserveObjectReferences = true });
|
|
DonnésÀSerialiser tmp = new DonnésÀSerialiser(langagesASauvgarder, comptesÀSauvegarder);
|
|
using (Stream fichierDeSauvgarde = File.Create(FileNameComplet))
|
|
{
|
|
serializer.WriteObject(fichierDeSauvgarde, tmp);
|
|
}
|
|
}
|
|
}
|
|
}
|