diff --git a/notus/Biblioteque_de_Class/Database.cs b/notus/Biblioteque_de_Class/Database.cs index 488b487..a7ae603 100644 --- a/notus/Biblioteque_de_Class/Database.cs +++ b/notus/Biblioteque_de_Class/Database.cs @@ -3,15 +3,20 @@ using System.Collections.Generic; using System.ComponentModel; using System.ComponentModel.Design; using System.Linq; +using System.Runtime.Serialization; using System.Text; using System.Threading.Tasks; namespace Biblioteque_de_Class { + [DataContract] public class Database { + [DataMember] private List DefaultLogoList; + [DataMember] private List ThemeList; + [DataMember] private List UserList; public Database() @@ -46,7 +51,7 @@ namespace Biblioteque_de_Class { foreach (Logo logo in DefaultLogoList) { - if (logo.GetName() == name) { return logo.GetLink(); } + if (logo.GetName() == name) { return logo.GetLogoLink(); } } throw new Exception("No logo link found."); } diff --git a/notus/Biblioteque_de_Class/Manager.cs b/notus/Biblioteque_de_Class/Manager.cs new file mode 100644 index 0000000..5699a42 --- /dev/null +++ b/notus/Biblioteque_de_Class/Manager.cs @@ -0,0 +1,13 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace Biblioteque_de_Class +{ + public class Manager + { + private PersistenceManager persistence { set; get; } + } +} diff --git a/notus/Biblioteque_de_Class/User.cs b/notus/Biblioteque_de_Class/User.cs index 0a7cf80..c602590 100644 --- a/notus/Biblioteque_de_Class/User.cs +++ b/notus/Biblioteque_de_Class/User.cs @@ -1,18 +1,28 @@ using Microsoft.VisualBasic.FileIO; using System.ComponentModel; using System.ComponentModel.DataAnnotations.Schema; +using System.Runtime.Serialization; namespace Biblioteque_de_Class { + [DataContract] public class User { + [DataMember] private string Username { get; set; } + [DataMember] private string Email { get; set; } + [DataMember] private string Password { get; set; } + [DataMember] private List NoteList; + [DataMember] private List TagList; + [DataMember] private List FavList; + [DataMember] private bool IsConnected { get; set; } + [DataMember] private Dictionary> NoteTagged; public User(string username, string email, string password) diff --git a/notus/Notus_Persistence/IDataManager.cs b/notus/Notus_Persistence/IDataManager.cs deleted file mode 100644 index e330abe..0000000 --- a/notus/Notus_Persistence/IDataManager.cs +++ /dev/null @@ -1,7 +0,0 @@ -namespace Notus_Persistance -{ - public class IDataManager - { - - } -} \ No newline at end of file diff --git a/notus/Notus_Persistence/Notus_Persistance.csproj b/notus/Notus_Persistence/Notus_Persistance.csproj index 4658cbf..bec8016 100644 --- a/notus/Notus_Persistence/Notus_Persistance.csproj +++ b/notus/Notus_Persistence/Notus_Persistance.csproj @@ -6,4 +6,8 @@ enable + + + + diff --git a/notus/Notus_Persistence/PersistenceManager.cs b/notus/Notus_Persistence/PersistenceManager.cs new file mode 100644 index 0000000..4828a29 --- /dev/null +++ b/notus/Notus_Persistence/PersistenceManager.cs @@ -0,0 +1,33 @@ +using Biblioteque_de_Class; +using System.Runtime.Serialization; +using System.Runtime.Serialization.Json; +using System.Xml; +using System; +using System.Collections.Generic; +using System.Diagnostics; + +namespace Notus_Persistance +{ + public static class PersistenceManager + { + public static void SaveDatabaseData(Database database) + { + ToJSON.SaveDatabaseData(database); + } + + public static Database LoadDatabaseData() + { + return ToJSON.LoadDatabaseData(); + } + + public static void SaveUserData(User user) + { + ToJSON.SaveUserData(user); + } + + public static User LoadUserData() + { + return ToJSON.LoadUserData(); + } + } +} \ No newline at end of file diff --git a/notus/Notus_Persistence/Stub.cs b/notus/Notus_Persistence/Stub.cs index 976d3de..8056488 100644 --- a/notus/Notus_Persistence/Stub.cs +++ b/notus/Notus_Persistence/Stub.cs @@ -1,6 +1,8 @@ -using System; +using Biblioteque_de_Class; +using System; using System.Collections.Generic; using System.Linq; +using System.Runtime.Serialization.Json; using System.Text; using System.Threading.Tasks; @@ -8,6 +10,25 @@ namespace Notus_Persistance { internal class Stub { + public static void SaveDatabaseData(Database database) + { + + } + + public static Database LoadDatabaseData() + { + + } + + public static void SaveUserData(User user) + { + + } + + public static User LoadUserData() + { + + } } } diff --git a/notus/Notus_Persistence/ToJSON.cs b/notus/Notus_Persistence/ToJSON.cs index ec65800..5f10a96 100644 --- a/notus/Notus_Persistence/ToJSON.cs +++ b/notus/Notus_Persistence/ToJSON.cs @@ -1,12 +1,99 @@ -using System; +using Biblioteque_de_Class; +using System.Runtime.Serialization; +using System.Runtime.Serialization.Json; +using System.Xml; +using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.Threading.Tasks; +using System.IO; +using System.Text.Json; namespace Notus_Persistance { - internal class ToJSON + public static class ToJSON { + private const string DatabaseDataFilePath = "data.json"; + private const string UserDataFilePath = "userdata.json"; + private static DataContractJsonSerializer DatabasejsonSerializer = new DataContractJsonSerializer(typeof(Database)); + private static DataContractJsonSerializer UserjsonSerializer = new DataContractJsonSerializer(typeof(User)); + public static void SaveDatabaseData(Database database) + { + using (FileStream fileStream = File.Create(DatabaseDataFilePath)) + { + using (var writer = JsonReaderWriterFactory.CreateJsonWriter( + fileStream, + System.Text.Encoding.UTF8, + false, + true))//<- this boolean says that we sant indentation + { + DatabasejsonSerializer.WriteObject(writer, database); + } + } + } + + public static Database LoadDatabaseData() + { + if (File.Exists(DatabaseDataFilePath)) + { + Database database1; + using (FileStream fileStream = File.OpenRead(DatabaseDataFilePath)) + { + Database? database = (Database?)DatabasejsonSerializer.ReadObject(fileStream); + if (database == null) + { + throw new Exception("Failed to load database. The loaded object is null."); + } + else + { + return database1 = database; + } + } + } + else + { + throw new Exception("No data file found."); + } + } + + public static void SaveUserData(User user) + { + using (FileStream fileStream = File.Create(UserDataFilePath)) + { + using (var writer = JsonReaderWriterFactory.CreateJsonWriter( + fileStream, + System.Text.Encoding.UTF8, + false, + true))//<- this boolean says that we sant indentation + { + UserjsonSerializer.WriteObject(writer, user); + } + } + } + + public static User LoadUserData() + { + if (File.Exists(UserDataFilePath)) + { + User user1; + using (FileStream fileStream = File.OpenRead(UserDataFilePath)) + { + User? user = (User?)UserjsonSerializer.ReadObject(fileStream); + if (user == null) + { + throw new Exception("Failed to load database. The loaded object is null."); + } + else + { + return user1 = user; + } + } + } + else + { + throw new Exception("No userfile find"); + } + } } } diff --git a/notus/Notus_Persistence/ToXML.cs b/notus/Notus_Persistence/ToXML.cs index 29f400f..f813109 100644 --- a/notus/Notus_Persistence/ToXML.cs +++ b/notus/Notus_Persistence/ToXML.cs @@ -1,4 +1,8 @@ -using System; +using Biblioteque_de_Class; +using System.Runtime.Serialization; +using System.Runtime.Serialization.Json; +using System.Xml; +using System; using System.Collections.Generic; using System.Linq; using System.Text; @@ -6,7 +10,29 @@ using System.Threading.Tasks; namespace Notus_Persistance { - internal class ToXML + public static class ToXML { + private const string DataFilePath = "data.xml"; + private const string XmlDataFilePath = "userdata.xml"; + + public static void SaveDatabaseData(Database database) + { + + } + + public static Database LoadDatabaseData() + { + + } + + public static void SaveUserData(User user) + { + + } + + public static User LoadUserData() + { + + } } } diff --git a/notus/Notus_UnitTest/UnitTest1.cs b/notus/Notus_UnitTest/UserSearchTests.cs similarity index 94% rename from notus/Notus_UnitTest/UnitTest1.cs rename to notus/Notus_UnitTest/UserSearchTests.cs index 1b47d45..336b1bf 100644 --- a/notus/Notus_UnitTest/UnitTest1.cs +++ b/notus/Notus_UnitTest/UserSearchTests.cs @@ -1,14 +1,14 @@ -using Microsoft.VisualStudio.TestTools.UnitTesting; -using System; - -namespace Notus_UnitTest -{ - [TestClass] - public class UnitTest1 - { - [TestMethod] - public void TestMethod1() - { - } - } -} +using Microsoft.VisualStudio.TestTools.UnitTesting; +using System; + +namespace Notus_UnitTest +{ + [TestClass] + public class UnitTest1 + { + [TestMethod] + public void TestMethod1() + { + } + } +}