From b1b9f492969801d2e26ac3a3494dd60b3c6daf62 Mon Sep 17 00:00:00 2001 From: "Leana.besson" Date: Sat, 3 Jun 2023 22:44:18 +0200 Subject: [PATCH] Ajout persistance Json + Test de la persistance + choix persistance Binaire --- Sources/Persistance/DataSerializerBinary.cs | 4 +- Sources/Persistance/DataSerializerJson.cs | 59 +++++++++++++++++++++ Sources/Persistance/DataSerializerXML.cs | 4 +- Sources/Persistance/DateSerializerJson.cs | 12 ----- Sources/Views/New_DetailAnimal.xaml.cs | 4 +- 5 files changed, 65 insertions(+), 18 deletions(-) create mode 100644 Sources/Persistance/DataSerializerJson.cs delete mode 100644 Sources/Persistance/DateSerializerJson.cs diff --git a/Sources/Persistance/DataSerializerBinary.cs b/Sources/Persistance/DataSerializerBinary.cs index d957a4b..5d41376 100644 --- a/Sources/Persistance/DataSerializerBinary.cs +++ b/Sources/Persistance/DataSerializerBinary.cs @@ -37,9 +37,9 @@ namespace Persistance Theque? theque = new Theque(); if (File.Exists(txtFile)) { - using (FileStream stream2 = File.OpenRead(txtFile)) + using (FileStream stream = File.OpenRead(txtFile)) { - using (XmlDictionaryReader xmlDicoReader = XmlDictionaryReader.CreateBinaryReader(stream2, XmlDictionaryReaderQuotas.Max)) + using (XmlDictionaryReader xmlDicoReader = XmlDictionaryReader.CreateBinaryReader(stream, XmlDictionaryReaderQuotas.Max)) { Theque? thequeOpt = serializer.ReadObject(xmlDicoReader) as Theque; if (thequeOpt != null) diff --git a/Sources/Persistance/DataSerializerJson.cs b/Sources/Persistance/DataSerializerJson.cs new file mode 100644 index 0000000..be289bd --- /dev/null +++ b/Sources/Persistance/DataSerializerJson.cs @@ -0,0 +1,59 @@ +using Model; +using System; +using System.Collections.Generic; +using System.IO; +using System.Linq; +using System.Runtime.Serialization; +using System.Runtime.Serialization.Json; +using System.Text; +using System.Text.Json; +using System.Threading.Tasks; +using System.Xml; + +namespace Persistance +{ + public class DataSerializerJson + { + public static void Serializer(string path, Theque theque) + { + Directory.SetCurrentDirectory(Path.Combine(Directory.GetCurrentDirectory(), path)); + string jsonFile = "theque.json"; + + DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(Theque)); + + using (FileStream stream = File.Create(jsonFile)) + { + using (var writer = JsonReaderWriterFactory.CreateJsonWriter(stream, System.Text.Encoding.UTF8, false, true)) + { + jsonSerializer.WriteObject(writer, theque); + } + } + } + + public static Theque Deserializer(string path) + { + Directory.SetCurrentDirectory(Path.Combine(Directory.GetCurrentDirectory(), path)); + string jsonFile = "theque.json"; + + DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(Theque)); + + Theque? theque = new Theque(); + if (File.Exists(jsonFile)) + { + using (Stream stream = File.OpenRead(jsonFile)) + { + Theque? thequeOpt = jsonSerializer.ReadObject(stream) as Theque; + if (thequeOpt != null) + theque = thequeOpt; + else + Console.WriteLine("Theque est null"); + } + } + else + { + theque = Stub.LoadTheque(); + } + return theque; + } + } +} diff --git a/Sources/Persistance/DataSerializerXML.cs b/Sources/Persistance/DataSerializerXML.cs index 5736bfa..0cfe350 100644 --- a/Sources/Persistance/DataSerializerXML.cs +++ b/Sources/Persistance/DataSerializerXML.cs @@ -39,9 +39,9 @@ namespace Persistance Theque theque = new Theque(); if(File.Exists(xmlFile)) { - using (Stream s = File.OpenRead(xmlFile)) + using (Stream stream = File.OpenRead(xmlFile)) { - Theque? thequeOpt = serializer.ReadObject(s) as Theque; + Theque? thequeOpt = serializer.ReadObject(stream) as Theque; if (thequeOpt != null) theque = thequeOpt; else diff --git a/Sources/Persistance/DateSerializerJson.cs b/Sources/Persistance/DateSerializerJson.cs deleted file mode 100644 index 9ae2172..0000000 --- a/Sources/Persistance/DateSerializerJson.cs +++ /dev/null @@ -1,12 +0,0 @@ -using System; -using System.Collections.Generic; -using System.Linq; -using System.Text; -using System.Threading.Tasks; - -namespace Persistance -{ - internal class DateSerializerJson - { - } -} diff --git a/Sources/Views/New_DetailAnimal.xaml.cs b/Sources/Views/New_DetailAnimal.xaml.cs index 7a7f02f..262ab4d 100644 --- a/Sources/Views/New_DetailAnimal.xaml.cs +++ b/Sources/Views/New_DetailAnimal.xaml.cs @@ -24,7 +24,7 @@ public partial class New_DetailAnimal : ContentPage public async void Button_OnClick(object sender, EventArgs e) { (App.Current as App).Theque.SupprimerAnimal((App.Current as App).AnimalSelectionner); - DataSerializerBinary.Serializer((App.Current as App).SerializationPath, (App.Current as App).Theque); + DataSerializerJson.Serializer((App.Current as App).SerializationPath, (App.Current as App).Theque); await Shell.Current.GoToAsync("//Animaux"); } @@ -32,7 +32,7 @@ public partial class New_DetailAnimal : ContentPage { if ((App.Current as App).AnimalSelectionner.NomIsValid == true) { - DataSerializerBinary.Serializer((App.Current as App).SerializationPath, (App.Current as App).Theque); + DataSerializerJson.Serializer((App.Current as App).SerializationPath, (App.Current as App).Theque); await Shell.Current.GoToAsync("//Animaux"); } }