🎉 Persistance XML fonctionnelle ! Ajout temporaire de fonctions de tests de la persistance
continuous-integration/drone/push Build is passing Details

pull/32/head
Nicolas BLONDEAU 2 years ago
parent a375f57ff9
commit 1f470f7130

@ -49,7 +49,7 @@ void menuAccueil(){
do
{
choix = ConsoleHelper.MultipleChoice("Menu principal", true,
"Connexion", "Inscription", "Continuer en tant qu'invité", "Quitter l'application", "[TEST] - LoadUsers", "[TEST] - LoadUsers");
"Connexion", "Inscription", "Continuer en tant qu'invité", "Quitter l'application", "[TEST] - LoadUsers", "[TEST] - SaveUsers");
//Traitement du choix de l'utilisateur
switch (choix)
@ -86,6 +86,14 @@ void menuAccueil(){
exitAppConsole();
return;
case 4:
userMngr.loadUsers();
return;
case 5:
userMngr.saveUsers(userMngr.ListUsers);
return;
default:
// Pour toutes les autres possiblités non comprise entre -1 et 3
// (normalement pas possible, mais on est jamais trop prudent)

@ -1,6 +1,7 @@
using System;
using System.Collections.Generic;
using System.Linq;
using System.Runtime.Serialization;
using System.Text;
using System.Threading.Tasks;
using System.Xml.Linq;
@ -13,12 +14,19 @@ namespace Model
/// son nom et prénom en privé, pour une utilisation ultérieure et/ou pour identifier de manière
/// plus simple l'utilisateur dans la base de donnée (car un pseudo n'est pas forcément explicite)
/// </summary>
[DataContract]
public class User
{
[DataMember]
public string Pseudo { get; private set; }
[DataMember]
public string Nom { get; private set; }
[DataMember]
public string Prenom { get; private set; }
[DataMember]
private string Mdp { get; set; }
[DataMember]
public List<Monstre>? monstresDejaVu { get; private set; }
public User(string pseudo, string nom, string prenom, string mdp, List<Monstre>? monstresVus = null)

@ -9,7 +9,7 @@ namespace Persistance
{
public interface IMonsterDataManager
{
void saveMonsters(List<Monstre> monstres);
List<Monstre> loadMonsters();
public void saveMonsters(List<Monstre> monstres);
public List<Monstre> loadMonsters();
}
}

@ -15,56 +15,9 @@ namespace Persistance
public class LoaderXML : IUserDataManager, IMonsterDataManager
{
static string path = "../../../../Persistance/saves/";
static string fichierXML = "users.xml";
static string monstreXML = "monsters.xml";
/*
#region SauvegardeUser
public static void sauvegardeUserXML(List<User>) //Fonction de sauvegarde fonctionnelle si on enlève loadUsers car conflit en les deux
{
User test = new User("DedeDu42", "dede", "dodo", "mdp", new List<Monstre> { });
Directory.SetCurrentDirectory(Path.Combine(Directory.GetCurrentDirectory(), "../../../../Persistance/saves/")); // Setup le chemin d'accès
var serialiserXML = new DataContractSerializer(typeof(User));
#region Serialisation
XmlWriterSettings xmlSettings = new XmlWriterSettings() { Indent = true }; // Pour avoir le format xml dans le fichier ( indentation etc... )
using (TextWriter tw = File.CreateText(fichierXML))
{
using (XmlWriter writer = XmlWriter.Create(tw, xmlSettings))
{
serialiserXML.WriteObject(writer, test);
}
}
#endregion
#region Deserialisation
User user2;
using (Stream s = File.OpenRead(fichierXML))
{
user2 = serialiserXML.ReadObject(s) as User;
}
#endregion
#region AffichageTest
Console.WriteLine(user2.Prenom);
Console.WriteLine(user2.Nom);
Console.WriteLine(user2.Pseudo);
Console.WriteLine(user2.monstresDejaVu);
#endregion
#endregion
}
*/
public static void sauvegarderListUsers()
@ -92,14 +45,8 @@ namespace Persistance
void IMonsterDataManager.saveMonsters(List<Monstre> monstres)
{
#region Serialisation
Directory.SetCurrentDirectory(Path.Combine(Directory.GetCurrentDirectory(), "../../../../Persistance/saves/")); // Setup le chemin d'accès
Directory.SetCurrentDirectory(Path.Combine(Directory.GetCurrentDirectory(), path)); // Setup le chemin d'accès
var serialiserXML = new DataContractSerializer(typeof(List<Monstre>));
#region Serialisation
XmlWriterSettings xmlSettings = new XmlWriterSettings() { Indent = true }; // Pour avoir le format xml dans le fichier ( indentation etc... )
using (TextWriter tw = File.CreateText(monstreXML))
{
@ -108,16 +55,13 @@ namespace Persistance
serialiserXML.WriteObject(writer, monstres);
}
}
#endregion
}
void IUserDataManager.saveUsers(List<User> users)// Serialise correctement juste voir comment l'appelé en fonction de IUserDataManager
{
Directory.SetCurrentDirectory(Path.Combine(Directory.GetCurrentDirectory(), "../../../../Persistance/saves/")); // Setup le chemin d'accès
Directory.SetCurrentDirectory(Path.Combine(Directory.GetCurrentDirectory(), path)); // Setup le chemin d'accès
var serialiserXML = new DataContractSerializer(typeof(List<User>));
#region Serialisation
XmlWriterSettings xmlSettings = new XmlWriterSettings() { Indent = true }; // Pour avoir le format xml dans le fichier ( indentation etc... )
using (TextWriter tw = File.CreateText(fichierXML))
{
@ -126,33 +70,23 @@ namespace Persistance
serialiserXML.WriteObject(writer, users);
}
}
#endregion
//throw new NotImplementedException();
}
public List<User> loadUsers()
{
#region Deserialisation
var serialiserXML = new DataContractSerializer(typeof(List<User>));
List<User> users;
using (Stream s = File.OpenRead(fichierXML))
using (Stream s = File.OpenRead(path + fichierXML))
{
users = serialiserXML.ReadObject(s) as List<User>;
}
#endregion
#region AffichageTest
Console.WriteLine();
foreach (User u in users)
{
Console.WriteLine(u.Pseudo);
Console.WriteLine(u.Prenom);
Console.WriteLine($"{u.Pseudo} --> {u.Prenom} {u.Nom}");
}
return users;
#endregion
}
}
}
#endregion
}

@ -32,16 +32,18 @@ namespace Persistance
{
}
//CHANGER VISIBILITE CAR ATTENTION
void IUserDataManager.saveUsers(List<User> users)
public List<User> loadUsers()
{
Pers.saveUsers(users);
return Pers.loadUsers();
}
List<User> IUserDataManager.loadUsers()
public void saveUsers(List<User> users)
{
return Pers.loadUsers();
Pers.saveUsers(users);
}
//CHANGER VISIBILITE CAR ATTENTION
//Pers.saveUsers(users);
/// <summary>
/// Cette méthode vérifie si l'utilisateur est présent dans la base de données
@ -88,9 +90,11 @@ namespace Persistance
return true;
}
public UserManager(IUserDataManager dataMngr) {
Pers = dataMngr;
ListUsers = new LoaderStub().loadUsers();
ListUsers = new LoaderXML().loadUsers(); //CHOIX ICI DE LA METHODE DE CHARGEMENT INITIAL DES UTILISATEURS
}
}
}

@ -0,0 +1,38 @@
<?xml version="1.0" encoding="utf-8"?>
<ArrayOfUser xmlns:i="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://schemas.datacontract.org/2004/07/Model">
<User>
<Mdp>mdp</Mdp>
<Nom>dede</Nom>
<Prenom>dodo</Prenom>
<Pseudo>DedeDu42</Pseudo>
<monstresDejaVu />
</User>
<User>
<Mdp>feur</Mdp>
<Nom>Monchanin</Nom>
<Prenom>Liam</Prenom>
<Pseudo>Moi</Pseudo>
<monstresDejaVu />
</User>
<User>
<Mdp>niblondeau</Mdp>
<Nom>Blondeau</Nom>
<Prenom>Nicolas</Prenom>
<Pseudo>Nikoala</Pseudo>
<monstresDejaVu />
</User>
<User>
<Mdp>mdp</Mdp>
<Nom>Doumir</Nom>
<Prenom>Yannis</Prenom>
<Pseudo>Yadoumir</Pseudo>
<monstresDejaVu />
</User>
<User>
<Mdp>oSu!727</Mdp>
<Nom>Bonetti</Nom>
<Prenom>Martin</Prenom>
<Pseudo>osuplayer123</Pseudo>
<monstresDejaVu />
</User>
</ArrayOfUser>
Loading…
Cancel
Save