From 2ea3791430148974fe04d171983d2d579377c70e Mon Sep 17 00:00:00 2001 From: V J Date: Sun, 21 May 2023 12:39:40 +0200 Subject: [PATCH] =?UTF-8?q?automatisation=20du=20choix=20de=20persistance?= =?UTF-8?q?=20+=20r=C3=A9solution=20de=20probl=C3=A8me=20de=20sauvegarde?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- MangaMap/App.xaml.cs | 18 +++++++++++++++--- MangaMap/Stub/DataContract.cs | 22 ++++++++++++---------- 2 files changed, 27 insertions(+), 13 deletions(-) diff --git a/MangaMap/App.xaml.cs b/MangaMap/App.xaml.cs index f852825..0e6ec07 100644 --- a/MangaMap/App.xaml.cs +++ b/MangaMap/App.xaml.cs @@ -6,19 +6,31 @@ namespace MangaMap; public partial class App : Application { - //public Manager MyManager { get; private set; } = new Manager(new Stub.Stub()); //pour utiliser le stub comme moyen de persistance. - public Manager MyManager { get; private set; } = new Manager(new Stub.DataContract()); + public string FileName { get; set; } = "SauvegardeDonnees.xml"; + public string FilePath { get; set; } = Path.Combine(AppDomain.CurrentDomain.BaseDirectory); + + public Manager MyManager { get; private set; } = new Manager(new Stub.Stub()); //pour utiliser le stub comme moyen de persistance. public Admin MyAdmin { get; private set; } = new Admin("test", "test@test.ts", "Pseudo_test"); public App() { InitializeComponent(); + + if (File.Exists(Path.Combine(FilePath, FileName))) + { + MyManager = new Manager(new Stub.DataContract()); //pour utiliser le dataContract comme moyen de persistance. + } + MyManager.charger(); MyManager.Admins.Add(MyAdmin); MainPage = new AppShell(); - //MyManager.Persistance = new DataContract(); + + if (!File.Exists(Path.Combine(FilePath, FileName))) + { + MyManager.Persistance = new DataContract(); //pour utiliser le stub comme moyen de persistance. + } MyManager.sauvegarder(); } diff --git a/MangaMap/Stub/DataContract.cs b/MangaMap/Stub/DataContract.cs index f001333..d19f31c 100644 --- a/MangaMap/Stub/DataContract.cs +++ b/MangaMap/Stub/DataContract.cs @@ -40,25 +40,27 @@ namespace MangaMap.Stub { var serializer = new DataContractSerializer(typeof(DataToPersist)); - DataToPersist data; - /*if (File.Exists(Path.Combine(FilePath, FileName))) - {*/ - using (Stream s = File.OpenRead(Path.Combine(FilePath, FileName))) - { - data = serializer.ReadObject(s) as DataToPersist; - }/* + if (!Directory.Exists(FilePath)) + { + Debug.WriteLine("Directory doesn't exist."); + Directory.CreateDirectory(FilePath); } - else + + /*using (Stream s = File.Create(Path.Combine(FilePath, FileName))) { - data = new DataToPersist(); + serializer.WriteObject(s, o); //Version d'enregistrement des données sans indentation. }*/ + DataToPersist data = new DataToPersist(); + data.Oeuvres = o; + data.Utilisateurs = u; + var settings = new XmlWriterSettings() { Indent = true }; using (TextWriter tw = File.CreateText(Path.Combine(FilePath, FileName))) { using (XmlWriter w = XmlWriter.Create(tw, settings)) { - serializer.WriteObject(w, data); // Enregistrer toutes les données dans le fichier + serializer.WriteObject(w, data); //Version d'enregistrement des données avec indentation. } } }