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.
78 lines
2.8 KiB
78 lines
2.8 KiB
/*!
|
|
* \file DataSerializerBinary.cs
|
|
* \author Léana Besson
|
|
*/
|
|
using Model;
|
|
using System.Runtime.Serialization;
|
|
using System.Xml;
|
|
|
|
/*!
|
|
* \namespace Persistance
|
|
*/
|
|
namespace Persistance
|
|
{
|
|
/*!
|
|
* \class DataSerializerBinary
|
|
* \brief Contains all the information and functions needed to serialize information in binary format
|
|
*/
|
|
public class DataSerializerBinary
|
|
{
|
|
/*!
|
|
* \fn Serializer(string path, Theque theque)
|
|
* \brief Serializes theque information in the file theque.txt
|
|
* \param path string - Path of the file in which the file is to be saved
|
|
* \param theque Theque - Theque to be serialized
|
|
*/
|
|
public static void Serializer(string path, Theque theque)
|
|
{
|
|
Directory.SetCurrentDirectory(Path.Combine(Directory.GetCurrentDirectory(), path));
|
|
string txtFile = "theque.txt";
|
|
|
|
var serializer = new DataContractSerializer(typeof(Theque), new DataContractSerializerSettings() { PreserveObjectReferences = true });
|
|
|
|
using (FileStream stream = File.Create(txtFile))
|
|
{
|
|
using (XmlDictionaryWriter xmlDicoWriter = XmlDictionaryWriter.CreateBinaryWriter(stream))
|
|
{
|
|
serializer.WriteObject(xmlDicoWriter, theque);
|
|
}
|
|
}
|
|
}
|
|
|
|
/*!
|
|
* \fn Deserializer(string path)
|
|
* \brief Deserializes the information contained in theque.txt file if it exists, otherwise it retrieves the information from the stub
|
|
* \param path string - Path of the file in which the file is to be saved
|
|
* \return Theque - Theque with recovered data
|
|
*/
|
|
public static Theque Deserializer(string path)
|
|
{
|
|
Directory.SetCurrentDirectory(Path.Combine(Directory.GetCurrentDirectory(), path));
|
|
string txtFile = "theque.txt";
|
|
|
|
var serializer = new DataContractSerializer(typeof(Theque), new DataContractSerializerSettings() { PreserveObjectReferences = true });
|
|
|
|
Theque? theque = new Theque();
|
|
if (File.Exists(txtFile))
|
|
{
|
|
using (FileStream stream = File.OpenRead(txtFile))
|
|
{
|
|
using (XmlDictionaryReader xmlDicoReader = XmlDictionaryReader.CreateBinaryReader(stream, XmlDictionaryReaderQuotas.Max))
|
|
{
|
|
Theque? thequeOpt = serializer.ReadObject(xmlDicoReader) as Theque;
|
|
if (thequeOpt != null)
|
|
theque = thequeOpt;
|
|
else
|
|
Console.WriteLine("Theque est null");
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
theque = Stub.LoadTheque();
|
|
}
|
|
return theque;
|
|
}
|
|
}
|
|
}
|