@ -11,14 +11,27 @@ using System.Xml;
namespace Persistance
namespace Persistance
{
{
/// <summary>
/// Classe DataContractPersistance qui implémente IPersistanceManager et stocke les données dans les fichiers de persistance
/// </summary>
public class DataContractPersistance : IPersistanceManager
public class DataContractPersistance : IPersistanceManager
{
{
// Serializers pour requins et utlisateurs/experts
// Serializers pour requins et utlisateurs/experts
/// <summary>
/// DataContractSerializer permet de serialiser le type DataToPersistReq
/// </summary>
DataContractSerializer SerializerReq { get ; set ; }
DataContractSerializer SerializerReq { get ; set ; }
= new DataContractSerializer ( typeof ( DataToPersistReq ) ) ;
= new DataContractSerializer ( typeof ( DataToPersistReq ) ) ;
/// <summary>
/// DataContractSerializer permet de serialiser le type DataToPersistUsers
/// </summary>
DataContractSerializer SerializerUsers { get ; set ; }
DataContractSerializer SerializerUsers { get ; set ; }
= new DataContractSerializer ( typeof ( DataToPersistUsers ) ) ;
= new DataContractSerializer ( typeof ( DataToPersistUsers ) ) ;
/// <summary>
/// DataContractSerializer permet de serialiser le type List de String
/// </summary>
DataContractSerializer SerializerFun { get ; set ; }
DataContractSerializer SerializerFun { get ; set ; }
= new DataContractSerializer ( typeof ( List < String > ) ) ;
= new DataContractSerializer ( typeof ( List < String > ) ) ;
@ -26,41 +39,84 @@ namespace Persistance
// DataToPersistReq et DataToPersistUsers
// DataToPersistReq et DataToPersistUsers
/// <summary>
/// DataToPersistReq permet de structurer le fichier de persistance des requins
/// </summary>
DataToPersistReq dataReq = new DataToPersistReq ( ) ;
DataToPersistReq dataReq = new DataToPersistReq ( ) ;
/// <summary>
/// DataToPersistUsers permet de structurer le fichier de persistance des utilisateurs
/// </summary>
DataToPersistUsers data = new DataToPersistUsers ( ) ;
DataToPersistUsers data = new DataToPersistUsers ( ) ;
/// <summary>
/// List de String permet de strcturer le fichier de persistance des fun facts
/// </summary>
List < String > lesFunFacts = new List < String > ( ) ;
List < String > lesFunFacts = new List < String > ( ) ;
// Chemin des fichiers
// Chemin des fichiers
/// <summary>
/// String le chemin des fichiers de persistance
/// </summary>
String FilePath { get ; set ; } = Path . Combine ( Directory . GetCurrentDirectory ( ) , "..//..//..//Persistance" ) ;
String FilePath { get ; set ; } = Path . Combine ( Directory . GetCurrentDirectory ( ) , "..//..//..//Persistance" ) ;
// Noms des fichiers
// Noms des fichiers
/// <summary>
/// String le nom du fichier de persistance des requins
/// </summary>
String FileNameReq { get ; set ; }
String FileNameReq { get ; set ; }
= "ficReqs" ;
= "ficReqs" ;
/// <summary>
/// String le nom du fichier de persistance des utilisateurs
/// </summary>
String FileNameUsers { get ; set ; }
String FileNameUsers { get ; set ; }
= "ficUsers" ;
= "ficUsers" ;
/// <summary>
/// String le nom du fichier de persistance des fun facts
/// </summary>
String FileNameFunFacts { get ; set ; }
String FileNameFunFacts { get ; set ; }
= "ficFunFacts" ;
= "ficFunFacts" ;
// Fichiers complets
// Fichiers complets
/// <summary>
/// String le chemin complet du fichier de persistance des requins
/// </summary>
String FileReq = > Path . Combine ( FilePath , FileNameReq ) ;
String FileReq = > Path . Combine ( FilePath , FileNameReq ) ;
/// <summary>
/// String le chemin complet du fichier de persistance des utilisateurs
/// </summary>
String FileUsers = > Path . Combine ( FilePath , FileNameUsers ) ;
String FileUsers = > Path . Combine ( FilePath , FileNameUsers ) ;
/// <summary>
/// String le chemin compket du fichier de persistance des fun facts
/// </summary>
String FileFunFacts = > Path . Combine ( FilePath , FileNameFunFacts ) ;
String FileFunFacts = > Path . Combine ( FilePath , FileNameFunFacts ) ;
// Settings
// Settings
/// <summary>
/// XmlWriterSettings permet de rajouter des paramètres dans l'écriture des fichiers de persistance
/// </summary>
public XmlWriterSettings settings { get ; set ; }
public XmlWriterSettings settings { get ; set ; }
= new XmlWriterSettings ( ) { Indent = true } ;
= new XmlWriterSettings ( ) { Indent = true } ;
// Méthodes pour les utilisateurs et experts
// Méthodes pour les utilisateurs et experts
/// <summary>
/// Charge les utilisateurs des fichiers
/// </summary>
/// <returns>Les List d'Utilisateur et d'Expert du fichier</returns>
public ( List < Utilisateur > , List < Expert > ) LoadUsers ( )
public ( List < Utilisateur > , List < Expert > ) LoadUsers ( )
{
{
if ( ! File . Exists ( FileUsers ) )
if ( ! File . Exists ( FileUsers ) )
@ -77,7 +133,11 @@ namespace Persistance
}
}
/// <summary>
/// Sauvegarde les listes en paramètres dans le fichier des utilisateurs
/// </summary>
/// <param name="users"></param>
/// <param name="experts"></param>
public void SaveUsers ( List < Utilisateur > users , List < Expert > experts )
public void SaveUsers ( List < Utilisateur > users , List < Expert > experts )
{
{
if ( ! Directory . Exists ( FilePath ) )
if ( ! Directory . Exists ( FilePath ) )
@ -101,6 +161,11 @@ namespace Persistance
// Méthodes pour tous les requins
// Méthodes pour tous les requins
/// <summary>
/// Charge les listes des requins depuis les fichiers et les retourne
/// </summary>
/// <returns>Les List de Requin : ceux de l'application, ceux ajoutés par les utilisateurs, et ceux édités par les utilisateurs</returns>
public ( List < Requin > , List < Requin > , List < Requin > ) LoadRequins ( )
public ( List < Requin > , List < Requin > , List < Requin > ) LoadRequins ( )
{
{
if ( ! File . Exists ( FileReq ) )
if ( ! File . Exists ( FileReq ) )
@ -118,6 +183,12 @@ namespace Persistance
/// <summary>
/// Sauvegarde les listes de requins en paramètres dans le fichier de persistance pour les requins
/// </summary>
/// <param name="reqs"></param>
/// <param name="reqsAdd"></param>
/// <param name="reqsEdit"></param>
public void SaveRequins ( List < Requin > reqs , List < Requin > reqsAdd , List < Requin > reqsEdit )
public void SaveRequins ( List < Requin > reqs , List < Requin > reqsAdd , List < Requin > reqsEdit )
{
{
if ( ! Directory . Exists ( FilePath ) )
if ( ! Directory . Exists ( FilePath ) )
@ -142,7 +213,10 @@ namespace Persistance
}
}
}
}
/// <summary>
/// Charge les fun facts du fichier de persistance dans un liste et la retourne
/// </summary>
/// <returns>List de String avec les fun facts du fichier dedans</returns>
public List < String > LoadFunFacts ( )
public List < String > LoadFunFacts ( )
{
{
if ( ! File . Exists ( FileFunFacts ) )
if ( ! File . Exists ( FileFunFacts ) )
@ -159,7 +233,10 @@ namespace Persistance
}
}
/// <summary>
/// Sauvegarde les fun facts de la liste en paramètre dans le fichier de persistance des fun facts
/// </summary>
/// <param name="funFacts"></param>
public void SaveFunFacts ( List < String > funFacts )
public void SaveFunFacts ( List < String > funFacts )
{
{
if ( ! Directory . Exists ( FilePath ) )
if ( ! Directory . Exists ( FilePath ) )