@ -7,17 +7,18 @@ using System.Linq;
using System.Runtime.Serialization ;
using System.Runtime.Serialization ;
using System.Text ;
using System.Text ;
using System.Threading.Tasks ;
using System.Threading.Tasks ;
using System.Xml ;
namespace Persistance
namespace Persistance
{
{
public class DataContractPersistance : IPersistanceManager
public class DataContractPersistance : IPersistanceManager
{
{
// DataContractSerializer pour chaque type
// Serializers pour requins et utlisateurs/experts
public DataContractSerializer SerializerReq { get ; set ; }
public DataContractSerializer SerializerReq { get ; set ; }
= new DataContractSerializer ( typeof ( List< Requin > ) ) ;
= new DataContractSerializer ( typeof ( DataToPersistReq ) ) ;
public DataContractSerializer SerializerUsers { get ; set ; }
public DataContractSerializer SerializerUsers { get ; set ; }
= new DataContractSerializer ( typeof ( List< Personne > ) ) ;
= new DataContractSerializer ( typeof ( DataToPersistUsers ) ) ;
@ -28,11 +29,7 @@ namespace Persistance
// Noms des fichiers
// Noms des fichiers
string FileNameReq { get ; set ; }
string FileNameReq { get ; set ; }
= "ficReq" ;
= "ficReqs" ;
string FileNameReqAdd { get ; set ; }
= "ficReqAdd" ;
string FileNameReqEdit { get ; set ; }
= "ficReqEdit" ;
string FileNameUsers { get ; set ; }
string FileNameUsers { get ; set ; }
= "ficUsers" ;
= "ficUsers" ;
@ -40,138 +37,96 @@ namespace Persistance
// Fichiers complets
// Fichiers complets
string FileReq = > Path . Combine ( FilePath , FileNameReq ) ;
string FileReq = > Path . Combine ( FilePath , FileNameReq ) ;
string FileReqAdd = > Path . Combine ( FilePath , FileNameReqAdd ) ;
string FileReqEdit = > Path . Combine ( FilePath , FileNameReqEdit ) ;
string FileUsers = > Path . Combine ( FilePath , FileNameUsers ) ;
string FileUsers = > Path . Combine ( FilePath , FileNameUsers ) ;
// Listes des requins et utilisateurs
// Settings
List < Requin > requins = new List < Requin > ( ) ;
public XmlWriterSettings settings { get ; set ; }
List < Requin > requinsAdd = new List < Requin > ( ) ;
= new XmlWriterSettings ( ) { Indent = true } ;
List < Requin > requinsEdit = new List < Requin > ( ) ;
List < Personne > users = new List < Personne > ( ) ;
// Méthodes pour les requins de l'application
// Méthodes pour les utilisateurs et experts
public List < Requin > LoadRequin s( )
public ( List < Utilisateur > , List < Expert > ) LoadUser s( )
{
{
if ( ! File . Exists ( File Req ) )
if ( ! File . Exists ( File Users ) )
{
{
throw new FileNotFoundException ( "The persis ance ficReq does not exist") ;
throw new FileNotFoundException ( "The persis tance file does not exist") ;
}
}
using ( Stream stream = File . OpenRead ( FileReq ) )
DataToPersistUsers data ;
{
requins = SerializerReq . ReadObject ( stream ) as List < Requin > ;
}
return requins ;
using ( Stream stream = File . OpenRead ( FileUsers ) )
}
public void SaveRequins ( List < Requin > reqs )
{
if ( ! Directory . Exists ( FilePath ) )
{
{
Directory. CreateDirectory ( FilePath ) ;
data = SerializerUsers . ReadObject ( stream ) as DataToPersistUsers ;
}
}
using ( Stream stream = File . Create ( FileReq ) )
return ( data . Users , data . Experts ) ;
{
SerializerReq . WriteObject ( stream , requins ) ;
}
}
}
// Méthodes pour les requins ajoutés par les Utilisateurs
public void SaveUsers ( List < Utilisateur > users , List < Expert > experts )
public List < Requin > LoadRequinsAdd ( )
{
if ( ! File . Exists ( FileReqAdd ) )
{
throw new FileNotFoundException ( "The persisance file ficReqAdd does not exist" ) ;
}
using ( Stream stream = File . OpenRead ( FileReqAdd ) )
{
requinsAdd = SerializerReq . ReadObject ( stream ) as List < Requin > ;
}
return requinsAdd ;
}
public void SaveRequinsAdd ( List < Requin > reqs )
{
{
if ( ! Directory . Exists ( FilePath ) )
if ( ! Directory . Exists ( FilePath ) )
{
{
Directory . CreateDirectory ( File Path ) ;
Directory . CreateDirectory ( FileUsers ) ;
}
}
using ( Stream stream = File . Create ( FileReqAdd ) )
DataToPersistUsers data = new DataToPersistUsers ( ) ;
data . Users . AddRange ( users ) ;
data . Experts . AddRange ( experts ) ;
using ( TextWriter tw = File . CreateText ( Path . Combine ( FilePath , FileNameUsers ) ) )
{
{
SerializerReq . WriteObject ( stream , requinsAdd ) ;
using ( XmlWriter writer = XmlWriter . Create ( tw , settings ) )
{
SerializerUsers . WriteObject ( writer , data ) ;
}
}
}
}
}
// Méthodes pour les requins édités par les utilisateur s
// Méthodes pour tous les requins
public List < Requin > LoadRequins Edit ( )
public ( List < Requin > , List < Requin > , List < Requin > ) LoadRequins ( )
{
{
if ( ! File . Exists ( FileReqEdit ) )
if ( ! File . Exists ( FileReq ) )
{
throw new FileNotFoundException ( "The persisance file ficReqEdit does not exist" ) ;
}
using ( Stream stream = File . OpenRead ( FileReqEdit ) )
{
{
requinsEdit = SerializerReq . ReadObject ( stream ) as List < Requin > ;
throw new FileNotFoundException ( "The persistance file does not exist" ) ;
}
}
return requinsEdit ;
DataToPersistReq data ;
}
public void SaveRequinsEdit ( List < Requin > reqs )
using ( Stream stream = File . OpenRead ( FileReq ) )
{
if ( ! Directory . Exists ( FilePath ) )
{
{
Directory. CreateDirectory ( FilePath ) ;
data = SerializerReq . ReadObject ( stream ) as DataToPersistReq ;
}
}
using ( Stream stream = File . Create ( FileReqEdit ) )
return ( data . Requins , data . RequinsAdd , data . RequinsEdit ) ;
{
SerializerReq . WriteObject ( stream , requinsEdit ) ;
}
}
}
// Méthodes pour les utilisateurs (Utilisateur et Manager)
public void SaveRequins ( List < Requin > reqs , List < Requin > reqsAdd , List < Requin > reqsEdit )
public List < Personne > LoadUsers ( )
{
if ( ! File . Exists ( FileUsers ) )
{
throw new FileNotFoundException ( "The persisance file ficUsers does not exist" ) ;
}
using ( Stream stream = File . OpenRead ( FileUsers ) )
{
users = SerializerUsers . ReadObject ( stream ) as List < Personne > ;
}
return users ;
}
public void SaveUsers ( List < Personne > pers )
{
{
if ( ! Directory . Exists ( FilePath ) )
if ( ! Directory . Exists ( FilePath ) )
{
{
Directory . CreateDirectory ( FilePath ) ;
Directory . CreateDirectory ( FilePath ) ;
}
}
using ( Stream stream = File . Create ( FileUsers ) )
DataToPersistReq data = new DataToPersistReq ( ) ;
data . Requins . AddRange ( reqs ) ;
data . RequinsAdd . AddRange ( reqsAdd ) ;
data . RequinsEdit . AddRange ( reqsEdit ) ;
using ( TextWriter tw = File . CreateText ( Path . Combine ( FilePath , FileReq ) ) )
{
{
SerializerUsers . WriteObject ( stream , users ) ;
using ( XmlWriter writer = XmlWriter . Create ( tw , settings ) )
{
SerializerReq . WriteObject ( writer , data ) ;
}
}
}
}
}