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.
GameAtlas/Sources/GameAtlas/DataContractPersistance/DataContractXML.cs

62 lines
2.0 KiB

using Models;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
using System.Xml;
using System.IO;
using System.Xml.Serialization;
using System.Collections.ObjectModel;
namespace DataContractPersistance
{
public class DataContractXML : IPersistanceManager
{
public string FileName { get; set; } = "data.xml";
public string FilePath { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory);
public (ObservableCollection<Jeu>, List<Admin>, List<Utilisateur>) ChargeDonnees()
{
var serializer = new DataContractSerializer(typeof(DataToPersist));
DataToPersist? data = new DataToPersist();
using (Stream s = File.OpenRead(Path.Combine(FilePath, FileName)))
{
data = serializer.ReadObject(s) as DataToPersist;
}
return (data!.Jeux, data!.Admins, data!.Utilisateurs);
}
public void SauvegardeDonnees(ObservableCollection<Jeu> jeux, List<Admin> admins, List<Utilisateur> users)
{
var serializer = new DataContractSerializer(typeof(DataToPersist));
if(!Directory.Exists(FilePath))
{
Debug.WriteLine("Directory créé");
Debug.WriteLine(Directory.GetDirectoryRoot(FilePath));
Debug.WriteLine(FilePath);
Directory.CreateDirectory(FilePath);
}
DataToPersist? data = new DataToPersist();
data.Jeux = jeux;
data.Admins = admins;
data.Utilisateurs = users;
var settings = new XmlWriterSettings() { Indent = true };
using (TextWriter tw = File.CreateText(Path.Combine(FilePath, FileName)))
{
using (XmlWriter writer = XmlWriter.Create(tw, settings))
{
serializer.WriteObject(writer, data);
}
}
}
}
}