|
|
|
@ -8,65 +8,102 @@ using System.Linq;
|
|
|
|
|
using System.Runtime.Serialization;
|
|
|
|
|
using System.Text;
|
|
|
|
|
using System.Threading.Tasks;
|
|
|
|
|
using System.Xml;
|
|
|
|
|
|
|
|
|
|
namespace MusiLib.DataContractPersistance
|
|
|
|
|
{
|
|
|
|
|
public class DataContractPers : IPersistanceManager
|
|
|
|
|
{
|
|
|
|
|
public string FilePath { get; set; } = Environment.GetFolderPath(Environment.SpecialFolder.Personal) + "/musilib";
|
|
|
|
|
public string FileNameP { get; set; } = "UserFavoris.xml";
|
|
|
|
|
public string FileNameU { get; set; } = "UserData.xml";
|
|
|
|
|
public string FilePath { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory);
|
|
|
|
|
public string FileNameFU { get; set; } = "favorisUtilisateurs.xml";
|
|
|
|
|
public string FileNameP { get; set; } = "partitions.xml";
|
|
|
|
|
|
|
|
|
|
public (List<Partition>, List<Utilisateur>) chargeDonnees()
|
|
|
|
|
public (List<Partition>, List<Utilisateur>, List<Partition>) chargeDonnees()
|
|
|
|
|
{
|
|
|
|
|
var serializerP = new DataContractSerializer(typeof(List<Partition>));
|
|
|
|
|
var serializerU = new DataContractSerializer(typeof(List<Utilisateur>), new[] { typeof(Partition) });
|
|
|
|
|
var partitionsSerializer = new DataContractSerializer(typeof(List<Partition>));
|
|
|
|
|
var favorisUtilisateursSerializer = new DataContractSerializer(typeof(DataToPersist));
|
|
|
|
|
|
|
|
|
|
List<Partition> partitions = new List<Partition>();
|
|
|
|
|
List<Utilisateur> utilisateurs = new List<Utilisateur>();
|
|
|
|
|
List<Partition> favoris = new List<Partition>();
|
|
|
|
|
|
|
|
|
|
string pathP = Path.Combine(FilePath, FileNameP);
|
|
|
|
|
if (File.Exists(pathP))
|
|
|
|
|
using (Stream partitionsStream = File.OpenRead(Path.Combine(FilePath, "partitions.xml")))
|
|
|
|
|
{
|
|
|
|
|
using (Stream stream = File.OpenRead(pathP))
|
|
|
|
|
{
|
|
|
|
|
partitions = serializerP.ReadObject(stream) as List<Partition>;
|
|
|
|
|
}
|
|
|
|
|
partitions = partitionsSerializer.ReadObject(partitionsStream) as List<Partition>;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
string pathU = Path.Combine(FilePath, FileNameU);
|
|
|
|
|
if (File.Exists(pathU))
|
|
|
|
|
using (Stream favorisUtilisateursStream = File.OpenRead(Path.Combine(FilePath, "favorisUtilisateurs.xml")))
|
|
|
|
|
{
|
|
|
|
|
using (Stream stream = File.OpenRead(pathU))
|
|
|
|
|
{
|
|
|
|
|
utilisateurs = serializerU.ReadObject(stream) as List<Utilisateur>;
|
|
|
|
|
}
|
|
|
|
|
DataToPersist data = favorisUtilisateursSerializer.ReadObject(favorisUtilisateursStream) as DataToPersist;
|
|
|
|
|
utilisateurs = data.utilisateurs;
|
|
|
|
|
favoris = data.favoris;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
return (partitions, utilisateurs);
|
|
|
|
|
return (partitions, utilisateurs, favoris);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void sauvegardeDonnees(List<Partition> p, List<Utilisateur> u)
|
|
|
|
|
|
|
|
|
|
public void sauvegardeDonnees(List<Partition> p, List<Utilisateur> u, List<Partition> f)
|
|
|
|
|
{
|
|
|
|
|
var serializerP = new DataContractSerializer(typeof(List<Partition>));
|
|
|
|
|
var serializerU = new DataContractSerializer(typeof(List<Utilisateur>), new[] { typeof(Partition) });
|
|
|
|
|
var partitionsSerializer = new DataContractSerializer(typeof(List<Partition>));
|
|
|
|
|
var favorisUtilisateursSerializer = new DataContractSerializer(typeof(DataToPersist));
|
|
|
|
|
|
|
|
|
|
if (!Directory.Exists(FilePath))
|
|
|
|
|
{
|
|
|
|
|
System.Diagnostics.Debug.WriteLine("Directory créé à l'instant");
|
|
|
|
|
System.Diagnostics.Debug.WriteLine(FilePath);
|
|
|
|
|
Debug.WriteLine("Directory créé à l'instant");
|
|
|
|
|
Debug.WriteLine(Directory.GetDirectoryRoot(FilePath));
|
|
|
|
|
Debug.WriteLine(FilePath);
|
|
|
|
|
Directory.CreateDirectory(FilePath);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
using (Stream stream = File.Create(Path.Combine(FilePath, FileNameP)))
|
|
|
|
|
using (Stream partitionsStream = File.Create(Path.Combine(FilePath, FileNameP)))
|
|
|
|
|
{
|
|
|
|
|
serializerP.WriteObject(stream, p);
|
|
|
|
|
partitionsSerializer.WriteObject(partitionsStream, p);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
using (Stream stream = File.Create(Path.Combine(FilePath, FileNameU)))
|
|
|
|
|
DataToPersist data = new DataToPersist();
|
|
|
|
|
data.utilisateurs = u;
|
|
|
|
|
data.favoris = f;
|
|
|
|
|
|
|
|
|
|
using (Stream favorisUtilisateursStream = File.Create(Path.Combine(FilePath, FileNameFU)))
|
|
|
|
|
{
|
|
|
|
|
serializerU.WriteObject(stream, u);
|
|
|
|
|
favorisUtilisateursSerializer.WriteObject(favorisUtilisateursStream, data);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
public void sauvegardeFavori(Partition fav)
|
|
|
|
|
{
|
|
|
|
|
var favorisUtilisateursSerializer = new DataContractSerializer(typeof(DataToPersist));
|
|
|
|
|
|
|
|
|
|
if (!Directory.Exists(FilePath))
|
|
|
|
|
{
|
|
|
|
|
Debug.WriteLine("Directory créé à l'instant");
|
|
|
|
|
Debug.WriteLine(Directory.GetDirectoryRoot(FilePath));
|
|
|
|
|
Debug.WriteLine(FilePath);
|
|
|
|
|
Directory.CreateDirectory(FilePath);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
List<Partition> favoris = new List<Partition>();
|
|
|
|
|
using (Stream favorisUtilisateursStream = File.OpenRead(Path.Combine(FilePath, FileNameFU)))
|
|
|
|
|
{
|
|
|
|
|
DataToPersist data = favorisUtilisateursSerializer.ReadObject(favorisUtilisateursStream) as DataToPersist;
|
|
|
|
|
if (data != null && data.favoris != null)
|
|
|
|
|
{
|
|
|
|
|
favoris = data.favoris;
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
favoris.Add(fav);
|
|
|
|
|
|
|
|
|
|
using (Stream favorisUtilisateursStream = File.Create(Path.Combine(FilePath, FileNameFU)))
|
|
|
|
|
{
|
|
|
|
|
DataToPersist data = new DataToPersist();
|
|
|
|
|
data.favoris = favoris;
|
|
|
|
|
favorisUtilisateursSerializer.WriteObject(favorisUtilisateursStream, data);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
Debug.WriteLine("Nouveau favori sauvegardé !");
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
}
|
|
|
|
|
}
|