From b63e2291c03e004e0041c1325f42bb0e135347db Mon Sep 17 00:00:00 2001 From: vidufour1 Date: Mon, 5 Jun 2023 15:07:44 +0200 Subject: [PATCH] =?UTF-8?q?diagramme=20sequence=201=20et=202,=20diagramme?= =?UTF-8?q?=20de=20paquetage=20+=20d=C3=A9but=20=C3=A9criture=20Word=20de?= =?UTF-8?q?=20l'archi=20de=20l'appli?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- ArchiApp.docx | Bin 0 -> 14378 bytes Contexte/Diagramme_paquetage.drawio | 103 +++++++ Contexte/Diagramme_sequence1.drawio | 90 ++++++ Contexte/Diagramme_sequence2.drawio | 90 ++++++ .../DataContractPers.cs | 280 +++++++++--------- MusiLib/MusiLib/Model/Partition.cs | 3 - 6 files changed, 423 insertions(+), 143 deletions(-) create mode 100644 ArchiApp.docx create mode 100644 Contexte/Diagramme_paquetage.drawio create mode 100644 Contexte/Diagramme_sequence1.drawio create mode 100644 Contexte/Diagramme_sequence2.drawio diff --git a/ArchiApp.docx b/ArchiApp.docx new file mode 100644 index 0000000000000000000000000000000000000000..720a064a808b5f6f94c4d750749b3bd0308d0819 GIT binary patch literal 14378 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 NbiQ*BW!B%G{vXt3{!Rb@ literal 0 HcmV?d00001 diff --git a/Contexte/Diagramme_paquetage.drawio b/Contexte/Diagramme_paquetage.drawio new file mode 100644 index 0000000..4731072 --- /dev/null +++ b/Contexte/Diagramme_paquetage.drawio @@ -0,0 +1,103 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Contexte/Diagramme_sequence1.drawio b/Contexte/Diagramme_sequence1.drawio new file mode 100644 index 0000000..bf55216 --- /dev/null +++ b/Contexte/Diagramme_sequence1.drawio @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/Contexte/Diagramme_sequence2.drawio b/Contexte/Diagramme_sequence2.drawio new file mode 100644 index 0000000..fd7c56c --- /dev/null +++ b/Contexte/Diagramme_sequence2.drawio @@ -0,0 +1,90 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff --git a/MusiLib/MusiLib/DataContractPersistance/DataContractPers.cs b/MusiLib/MusiLib/DataContractPersistance/DataContractPers.cs index 383925a..7cc8ff0 100644 --- a/MusiLib/MusiLib/DataContractPersistance/DataContractPers.cs +++ b/MusiLib/MusiLib/DataContractPersistance/DataContractPers.cs @@ -1,142 +1,142 @@ -using Microsoft.Maui.Controls.PlatformConfiguration; -using MusiLib.Model; -using System; -using System.Collections.Generic; -using System.Diagnostics; -using System.IO; -using System.Linq; -using System.Runtime.Serialization; -using System.Text; -using System.Threading.Tasks; -using System.Xml; - -namespace MusiLib.DataContractPersistance -{ - public class DataContractPers : IPersistanceManager - { +using Microsoft.Maui.Controls.PlatformConfiguration; +using MusiLib.Model; +using System; +using System.Collections.Generic; +using System.Diagnostics; +using System.IO; +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; } = FileSystem.AppDataDirectory; /* FileSystem.AppDataDirectory permet de renvoyez le chemin d'accès au répertoire spécifique de donnée - * ou l'application peut stocker des fichiers ou des données persistantes*/ - public string FileNameFU { get; set; } = "favorisUtilisateurs.xml"; /* déclaration des noms des fichiers stockés pour la persistance*/ - public string FileNameP { get; set; } = "partitions.xml"; - - public (List, List) chargeDonnees() /*Méthode permettant de charger les données*/ - { - var partitionsSerializer = new DataContractSerializer(typeof(List)); - var favorisUtilisateursSerializer = new DataContractSerializer(typeof(DataToPersist)); - - List partitions = new List(); - List favoris = new List(); - - using (Stream partitionsStream = File.OpenRead(Path.Combine(FilePath, "partitions.xml"))) /*Path.Combine permet de combiner plusieurs segments de chemin en une seule chaine de chemin*/ - { - partitions = partitionsSerializer.ReadObject(partitionsStream) as List; /*Serializer permet de convertir des objets */ - } - - using (Stream favorisUtilisateursStream = File.OpenRead(Path.Combine(FilePath, "favorisUtilisateurs.xml"))) - { - DataToPersist data = favorisUtilisateursSerializer.ReadObject(favorisUtilisateursStream) as DataToPersist; - favoris = data.favoris; - } - - return (partitions, favoris); - } - - - public void sauvegardeDonnees(List p, List f) /*Méthode permettant de sauvegarder les données*/ - { - var partitionsSerializer = new DataContractSerializer(typeof(List)); - 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); - } - - using (Stream partitionsStream = File.Create(Path.Combine(FilePath, FileNameP))) - { - partitionsSerializer.WriteObject(partitionsStream, p); - } - - DataToPersist data = new DataToPersist(); - data.favoris = f; - - using (Stream favorisUtilisateursStream = File.Create(Path.Combine(FilePath, FileNameFU))) - { - favorisUtilisateursSerializer.WriteObject(favorisUtilisateursStream, data); - } - } - - public void sauvegardeFavoriAdd(Partition fav) /*Méthode permettant la sauvegarde de favoris*/ - { - 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 favoris = new List(); - 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é !"); - } - - public void sauvegardeFavoriRemove(Partition fav) /*Méthode permettant la sauvegarde de suppression de favoris */ - { - 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 favoris = new List(); - 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.RemoveAll(f => f.Nom == fav.Nom); - - using (Stream favorisUtilisateursStream = File.Create(Path.Combine(FilePath, FileNameFU))) - { - DataToPersist data = new DataToPersist(); - data.favoris = favoris; - favorisUtilisateursSerializer.WriteObject(favorisUtilisateursStream, data); - } - - Debug.WriteLine("Favori supprimé de la sauvegarde !"); - } - - - } + * ou l'application peut stocker des fichiers ou des données persistantes*/ + public string FileNameFU { get; set; } = "favorisUtilisateurs.xml"; /* déclaration des noms des fichiers stockés pour la persistance*/ + public string FileNameP { get; set; } = "partitions.xml"; + + public (List, List) chargeDonnees() /*Méthode permettant de charger les données*/ + { + var partitionsSerializer = new DataContractSerializer(typeof(List)); + var favorisUtilisateursSerializer = new DataContractSerializer(typeof(DataToPersist)); + + List partitions = new List(); + List favoris = new List(); + + using (Stream partitionsStream = File.OpenRead(Path.Combine(FilePath, "partitions.xml"))) /*Path.Combine permet de combiner plusieurs segments de chemin en une seule chaine de chemin*/ + { + partitions = partitionsSerializer.ReadObject(partitionsStream) as List; /*Serializer permet de convertir des objets */ + } + + using (Stream favorisUtilisateursStream = File.OpenRead(Path.Combine(FilePath, "favorisUtilisateurs.xml"))) + { + DataToPersist data = favorisUtilisateursSerializer.ReadObject(favorisUtilisateursStream) as DataToPersist; + favoris = data.favoris; + } + + return (partitions, favoris); + } + + + public void sauvegardeDonnees(List p, List f) /*Méthode permettant de sauvegarder les données*/ + { + var partitionsSerializer = new DataContractSerializer(typeof(List)); + 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); + } + + using (Stream partitionsStream = File.Create(Path.Combine(FilePath, FileNameP))) + { + partitionsSerializer.WriteObject(partitionsStream, p); + } + + DataToPersist data = new DataToPersist(); + data.favoris = f; + + using (Stream favorisUtilisateursStream = File.Create(Path.Combine(FilePath, FileNameFU))) + { + favorisUtilisateursSerializer.WriteObject(favorisUtilisateursStream, data); + } + } + + public void sauvegardeFavoriAdd(Partition fav) /*Méthode permettant la sauvegarde de favoris*/ + { + 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 favoris = new List(); + 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é !"); + } + + public void sauvegardeFavoriRemove(Partition fav) /*Méthode permettant la sauvegarde de suppression de favoris */ + { + 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 favoris = new List(); + 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.RemoveAll(f => f.Nom == fav.Nom); + + using (Stream favorisUtilisateursStream = File.Create(Path.Combine(FilePath, FileNameFU))) + { + DataToPersist data = new DataToPersist(); + data.favoris = favoris; + favorisUtilisateursSerializer.WriteObject(favorisUtilisateursStream, data); + } + + Debug.WriteLine("Favori supprimé de la sauvegarde !"); + } + + + } } \ No newline at end of file diff --git a/MusiLib/MusiLib/Model/Partition.cs b/MusiLib/MusiLib/Model/Partition.cs index 538760d..a5b5553 100644 --- a/MusiLib/MusiLib/Model/Partition.cs +++ b/MusiLib/MusiLib/Model/Partition.cs @@ -10,8 +10,6 @@ namespace MusiLib.Model [DataContract] public class Partition { - [DataMember] - public static int idTotal = 0; [DataMember] public string Nom { get; private set; } [DataMember] @@ -32,7 +30,6 @@ namespace MusiLib.Model public Partition(string nom, string auteur, string complexite, string description, string instrument, string son) { Nom = nom; - IdPartition = idTotal; Auteur = auteur; Complexite = complexite; Description = description;