From 28a79a50bc86b3ba6f53c0810730340b32035732 Mon Sep 17 00:00:00 2001 From: majean5 Date: Sat, 11 Jun 2022 12:09:19 +0200 Subject: [PATCH] persistance fun facts et unit tests sans avertissements --- Business/Manager.cs | 32 +++++++++++--- Persistance/DataContractPersistance.cs | 59 +++++++++++++++++++++++--- Persistance/IPersistanceManager.cs | 2 + StubLib/Stub.cs | 16 +++++++ UnitTests/UnitTest_Modele.cs | 5 ++- UnitTests/UnitTests.csproj | 1 + WpfApp1/App.xaml.cs | 4 ++ WpfApp1/MainWindow.xaml | 3 +- WpfApp1/Persistance/ficFunFacts | 6 +++ WpfApp1/Persistance/ficReqs | 52 ----------------------- WpfApp1/Persistance/ficUsers | 11 ----- 11 files changed, 114 insertions(+), 77 deletions(-) create mode 100644 WpfApp1/Persistance/ficFunFacts diff --git a/Business/Manager.cs b/Business/Manager.cs index 09c27b0..4cf96b7 100644 --- a/Business/Manager.cs +++ b/Business/Manager.cs @@ -13,10 +13,13 @@ namespace Business { public ObservableCollection Requins { get; private set; } public ObservableCollection RequinsEdit { get; private set; } - public ObservableCollection RequinsAdd { get; private set; } public Requin SelectedRequin { get; set; } + + public List FunFacts { get; private set; } = new List(); + + /// /// DéPENDANCE /// @@ -165,11 +168,11 @@ namespace Business return RequinsAdd.SingleOrDefault(r => r.Equals(req)); } - public List rechercherRequins(ObservableCollection lRech, Nullable zone, string motif) + public List rechercherRequins(ObservableCollection lRech, Nullable zone, String motif) { List nvReq = new List(); int test = 0; - if (!string.IsNullOrWhiteSpace(motif)) + if (!String.IsNullOrWhiteSpace(motif)) { foreach (Requin req in lRech) { @@ -200,14 +203,31 @@ namespace Business return nvReq; } - public bool verifierRequin(string nom, string nomSci, string description, string photo, string video, string photoCarte) + public bool verifierRequin(String nom, String nomSci, String description, String photo, String video, String photoCarte) { - if (string.IsNullOrWhiteSpace(nom) || string.IsNullOrWhiteSpace(nomSci) || string.IsNullOrWhiteSpace(description) || string.IsNullOrWhiteSpace(photo) - || string.IsNullOrWhiteSpace(video) || string.IsNullOrWhiteSpace(photoCarte)) + if (String.IsNullOrWhiteSpace(nom) || String.IsNullOrWhiteSpace(nomSci) || String.IsNullOrWhiteSpace(description) || String.IsNullOrWhiteSpace(photo) + || String.IsNullOrWhiteSpace(video) || String.IsNullOrWhiteSpace(photoCarte)) { return false; } return true; } + + + public void LoadFunFacts() + { + FunFacts.Clear(); + + foreach(String fun in Pers.LoadFunFacts()) + { + FunFacts.Add(fun); + } + } + + + public void SaveFunFacts() + { + Pers.SaveFunFacts(FunFacts); + } } } \ No newline at end of file diff --git a/Persistance/DataContractPersistance.cs b/Persistance/DataContractPersistance.cs index 684b86e..012e23f 100644 --- a/Persistance/DataContractPersistance.cs +++ b/Persistance/DataContractPersistance.cs @@ -19,31 +19,38 @@ namespace Persistance = new DataContractSerializer(typeof(DataToPersistReq)); DataContractSerializer SerializerUsers { get; set; } = new DataContractSerializer(typeof(DataToPersistUsers)); + DataContractSerializer SerializerFun { get; set; } + = new DataContractSerializer(typeof(List)); + // DataToPersistReq et DataToPersistUsers DataToPersistReq dataReq = new DataToPersistReq(); DataToPersistUsers data = new DataToPersistUsers(); + List lesFunFacts = new List(); // Chemin des fichiers - string FilePath { get; set; } = Path.Combine(Directory.GetCurrentDirectory(), "..//..//..//Persistance"); + String FilePath { get; set; } = Path.Combine(Directory.GetCurrentDirectory(), "..//..//..//Persistance"); // Noms des fichiers - string FileNameReq { get; set; } + String FileNameReq { get; set; } = "ficReqs"; - string FileNameUsers { get; set; } + String FileNameUsers { get; set; } = "ficUsers"; + String FileNameFunFacts { get; set; } + = "ficFunFacts"; // Fichiers complets - string FileReq => Path.Combine(FilePath, FileNameReq); - string FileUsers => Path.Combine(FilePath, FileNameUsers); + String FileReq => Path.Combine(FilePath, FileNameReq); + String FileUsers => Path.Combine(FilePath, FileNameUsers); + String FileFunFacts => Path.Combine(FilePath, FileNameFunFacts); @@ -78,6 +85,8 @@ namespace Persistance Directory.CreateDirectory(FileUsers); } + data.Users.Clear(); + data.Experts.Clear(); data.Users.AddRange(users); data.Experts.AddRange(experts); @@ -117,6 +126,9 @@ namespace Persistance Directory.CreateDirectory(FilePath); } + dataReq.Requins.Clear(); + dataReq.RequinsAdd.Clear(); + dataReq.RequinsEdit.Clear(); dataReq.Requins.AddRange(reqs); dataReq.RequinsAdd.AddRange(reqsAdd); dataReq.RequinsEdit.AddRange(reqsEdit); @@ -130,5 +142,42 @@ namespace Persistance } } + + public List LoadFunFacts() + { + if (!File.Exists(FileFunFacts)) + { + throw new FileNotFoundException("The persistance file does not exist"); + } + + using (Stream stream = File.OpenRead(FileFunFacts)) + { + lesFunFacts = SerializerFun.ReadObject(stream) as List; + } + + return lesFunFacts; + } + + + + public void SaveFunFacts(List funFacts) + { + if (!Directory.Exists(FilePath)) + { + Directory.CreateDirectory(FilePath); + } + + lesFunFacts.Clear(); + lesFunFacts.AddRange(funFacts); + + using (TextWriter tw = File.CreateText(Path.Combine(FilePath, FileFunFacts))) + { + using (XmlWriter writer = XmlWriter.Create(tw, settings)) + { + SerializerFun.WriteObject(writer, lesFunFacts); + } + } + } + } } diff --git a/Persistance/IPersistanceManager.cs b/Persistance/IPersistanceManager.cs index 17e4f75..a65eff5 100644 --- a/Persistance/IPersistanceManager.cs +++ b/Persistance/IPersistanceManager.cs @@ -15,6 +15,8 @@ namespace Persistance void SaveRequins(List reqs, List reqsAdd, List reqsEdit); (List users, List experts) LoadUsers(); void SaveUsers(List users, List experts); + List LoadFunFacts(); + void SaveFunFacts(List funFacts); } } \ No newline at end of file diff --git a/StubLib/Stub.cs b/StubLib/Stub.cs index 92a50ef..b797352 100644 --- a/StubLib/Stub.cs +++ b/StubLib/Stub.cs @@ -16,6 +16,8 @@ namespace StubLib private List utilisateurs = new List(); private List expert = new List(); + private List funFacts = new List(); + public Stub() { // Requins @@ -32,6 +34,10 @@ namespace StubLib // Utilisateurs utilisateurs.Add(new Utilisateur("a", "salut")); expert.Add(new Expert("salut", "hey", "bob")); + // FunFacts + funFacts.Add("Les requins c'est gentil en fait"); + funFacts.Add("Le requin dormeur mexicain est objectivement le meilleur de tous les requins"); + funFacts.Add("Le requin shrek est caché quelque part dans cette application"); } @@ -57,5 +63,15 @@ namespace StubLib utilisateurs = users; expert = experts; } + + public List LoadFunFacts() + { + return new List(funFacts); + } + + public void SaveFunFacts(List fun) + { + funFacts = fun; + } } } diff --git a/UnitTests/UnitTest_Modele.cs b/UnitTests/UnitTest_Modele.cs index f7a7e19..519ea42 100644 --- a/UnitTests/UnitTest_Modele.cs +++ b/UnitTests/UnitTest_Modele.cs @@ -2,6 +2,7 @@ using System; using Xunit; using Modèle; using System.Collections.Generic; +using NPOI.SS.Formula.Functions; namespace UnitTests { @@ -42,7 +43,7 @@ namespace UnitTests Utilisateur u2 = new Utilisateur("jeancarotte@gamil.com", "miamlescarottes", 48); Expert e1 = new Expert("AlexPert@gmail.com", "lesRequins", "Le Gros BG", d); Expert e2 = new Expert("Blabla@gmail.com", "lesPoissons", "Le débutant"); - u1.FaireUnSubmit("Bob", "leRequin", "Les requins c'est trop cool", "LaPhoto", "LaVidéo", "laPhoto", Conservation.EX, zones, "askip un requin c'est rigolo", bdd); + //u1.FaireUnSubmit("Bob", "leRequin", "Les requins c'est trop cool", "LaPhoto", "LaVidéo", "laPhoto", Conservation.EX, zones, "askip un requin c'est rigolo", bdd); e1.ValiderSubmit(finie, bdd); Console.WriteLine(u1); Console.WriteLine(u2); @@ -62,7 +63,7 @@ namespace UnitTests Console.WriteLine(e2); List z = new List(); - u1.FaireUnChangement(requin, "lalalilalou", "", "", "", Conservation.NE, z, "hahahahaha", bdd); + //u1.FaireUnChangement(requin, "lalalilalou", "", "", "", Conservation.NE, z, "hahahahaha", bdd); e1.ValiderUnChangement(finie, bdd); foreach (Requin r in finie) { diff --git a/UnitTests/UnitTests.csproj b/UnitTests/UnitTests.csproj index 326d55c..a370dca 100644 --- a/UnitTests/UnitTests.csproj +++ b/UnitTests/UnitTests.csproj @@ -8,6 +8,7 @@ + runtime; build; native; contentfiles; analyzers; buildtransitive diff --git a/WpfApp1/App.xaml.cs b/WpfApp1/App.xaml.cs index a73aee8..0cff48d 100644 --- a/WpfApp1/App.xaml.cs +++ b/WpfApp1/App.xaml.cs @@ -17,6 +17,8 @@ namespace WpfApp1 { public static IPersistanceManager strat { get; private set; } = new DataContractPersistance(); + public static IPersistanceManager stubtruc { get; private set; } + = new StubLib.Stub(); public Manager LeManager { get; private set; } = new Manager(strat); public ManagerUsers LeManagerUsers { get; private set; } = new ManagerUsers(strat); @@ -25,12 +27,14 @@ namespace WpfApp1 { LeManager.LoadRequins(); LeManagerUsers.LoadUsers(); + LeManager.LoadFunFacts(); } private void Application_Deactivated(object sender, EventArgs e) { LeManager.SaveRequins(); LeManagerUsers.SaveUsers(); + LeManager.SaveFunFacts(); } } } diff --git a/WpfApp1/MainWindow.xaml b/WpfApp1/MainWindow.xaml index a254281..f4d2d10 100644 --- a/WpfApp1/MainWindow.xaml +++ b/WpfApp1/MainWindow.xaml @@ -5,7 +5,8 @@ xmlns:mc="http://schemas.openxmlformats.org/markup-compatibility/2006" xmlns:local="clr-namespace:WpfApp1" mc:Ignorable="d" - Title="MainWindow" Height="550" Width="1100"> + Title="MainWindow" Height="550" Width="1100" + WindowState="Maximized"> diff --git a/WpfApp1/Persistance/ficFunFacts b/WpfApp1/Persistance/ficFunFacts new file mode 100644 index 0000000..07525d1 --- /dev/null +++ b/WpfApp1/Persistance/ficFunFacts @@ -0,0 +1,6 @@ + + + Les requins c'est gentil en fait + Le requin dormeur mexicain est objectivement le meilleur de tous les requins + Le requin shrek est caché quelque part dans cette application + \ No newline at end of file diff --git a/WpfApp1/Persistance/ficReqs b/WpfApp1/Persistance/ficReqs index 8ffe51c..0ab1549 100644 --- a/WpfApp1/Persistance/ficReqs +++ b/WpfApp1/Persistance/ficReqs @@ -53,58 +53,6 @@ EW Videos/Vid-Requin-Blanc.mp4 - - wow il est trop bo - (C'est pas un vrai requin) - mon requin adoré - trop cool ce requin - Images/Dormeur-Mexicain.png - Images/rep_Heterodontus_mexicanus.png - - ATLANTIQUE - - EW - Videos/Vid-dormeur-mexicain.mp4 - - - C'est un requin pas ultra banal - Il est vraiment pas banal - Req1 - Le requin pas banal - Images/White_shark.png - Images/rep_Heterodontus_mexicanus.png - - PACIFIQUE - - EX - Videos/Vid-dormeur-mexicain.mp4 - - - C'est un requin pas ultra banal - Il est vraiment pas banal - leRequinAjouté - Le requin pas banal - Images/White_shark.png - Images/rep_Heterodontus_mexicanus.png - - PACIFIQUE - - EX - Videos/Vid-dormeur-mexicain.mp4 - - - C'est un requin ultra banal - En fait il est giga banal - Banane - Le requin banal - Images/White_shark.png - Images/rep_Heterodontus_mexicanus.png - - ATLANTIQUE - - EW - Videos/Vid-Requin-Blanc.mp4 - diff --git a/WpfApp1/Persistance/ficUsers b/WpfApp1/Persistance/ficUsers index 7bd2381..f9c3281 100644 --- a/WpfApp1/Persistance/ficUsers +++ b/WpfApp1/Persistance/ficUsers @@ -7,12 +7,6 @@ 2022-06-09T14:59:29.3884138+02:00 bob - - salut - hey - 2022-06-09T14:59:29.3884138+02:00 - bob - @@ -20,10 +14,5 @@ salut 0 - - a - salut - 0 - \ No newline at end of file