From ddd0f8956debe640bdd2746b433b877bc0e23fcf Mon Sep 17 00:00:00 2001 From: Corentin LEMAIRE Date: Sat, 13 May 2023 11:32:23 +0200 Subject: [PATCH] Add CRUD --- Sources/Model/IDataManager.cs | 84 +++++- .../Serialization/LINQ_XML_Serialization.cs | 253 ++++++++++++++++ Sources/Model/Stub/StubManager.cs | 273 +++++++++++++++++- 3 files changed, 593 insertions(+), 17 deletions(-) diff --git a/Sources/Model/IDataManager.cs b/Sources/Model/IDataManager.cs index 6c9e14a..257e0b9 100644 --- a/Sources/Model/IDataManager.cs +++ b/Sources/Model/IDataManager.cs @@ -1,39 +1,101 @@ namespace Model; public interface IDataManager -{ - List GetCustomTitles(); +{ + // Create + void AddAlbum(Album album); - List GetInfoTitles(); + void AddAlbums(List albumsList); - List GetAlbums(); + void AddArtist(Artist artist); - List GetArtists(); + void AddArtists(List artistsList); - List GetPlaylists(); + void AddPlaylist(Playlist playlist); + + void AddPlaylists(List playlistsList); + + void AddCustomTitle(CustomTitle title); + + void AddCustomTitles(List customTitlesList); + + void AddInfoTitle(InfoTitle title); + + void AddInfoTitles(List infoTitlesList); + + // Read + List GetCustomTitles(); CustomTitle? GetCustomTitleByUrl(string custom); - void AddAlbum(Album album); + List GetInfoTitles(); - void AddArtist(Artist artist); + InfoTitle? GetInfoTitleByUrl(string url); - void AddPlaylist(Playlist playlist); + List GetAlbums(); - void AddCustomTitle(CustomTitle title); + Album? GetAlbumByUrl(string url); + + List GetArtists(); - void AddInfoTitle(InfoTitle title); + Artist? GetArtistByName(string name); + List GetPlaylists(); + + Playlist? GetPlaylistByUrl(string url); + + + // Update + void UpdateCustomTitle(CustomTitle title, string name, string url, string info, string path); + + void UpdateCustomTitleByUrl(string url, string name, string newUrl, string info, string path); + + void UpdateInfoTitle(InfoTitle title, string name, string url, string info, Artist artist, string description, Genre genre); + + void UpdateInfoTitleByName(string url, string name, string newUrl, string info, Artist artist, string description, Genre genre); + + void UpdateInfoTitleByArtistName(InfoTitle title, string name, string url, string info, string artist, string description, Genre genre); + + void UpdateInfoTitleByNameByArtistName(string url, string name, string newUrl, string info, string artist, string description, Genre genre); + + void UpdateAlbum(Album album, string name, string url, Artist artist, string description, string info); + + void UpdateAlbumByUrl(string url, string name, string newUrl, Artist artist, string description, string info); + + void UpdateAlbumByArtistName(Album album, string name, string url, string artist, string description, string info); + + void UpdateAlbumByUrlByArtistName(string url, string name, string newUrl, string artist, string description, string info); + + void UpdatePlaylist(Playlist playlist, string name, string description, string url); + + void UpdatePlaylistByUrl(string url, string name, string description, string newUrl); + + void UpdateArtist(Artist artist, string name); + + void UpdateArtistByName(string name, string newName); + + // Delete void RemoveAlbum(Album album); + void RemoveAlbums(List albumsList); + void RemoveArtist(Artist artist); + void RemoveArtists(List artistsList); + void RemovePlaylist(Playlist playlist); + void RemovePlaylists(List playlistsList); + void RemoveCustomTitle(CustomTitle title); + void RemoveCustomTitles(List customTitlesList); + void RemoveInfoTitle(InfoTitle title); + void RemoveInfoTitles(List infoTitlesList); + + // Serialization void LoadSerialization(); void SaveSerialization(); diff --git a/Sources/Model/Serialization/LINQ_XML_Serialization.cs b/Sources/Model/Serialization/LINQ_XML_Serialization.cs index a4f0ed3..b955139 100644 --- a/Sources/Model/Serialization/LINQ_XML_Serialization.cs +++ b/Sources/Model/Serialization/LINQ_XML_Serialization.cs @@ -7,6 +7,7 @@ using System.Xml.Linq; using System.Xml.Serialization; using static System.Reflection.Metadata.BlobBuilder; using System.Reflection.Metadata; +using System.IO; namespace Model.Serialization; @@ -610,4 +611,256 @@ public class LINQ_XML_Serialization : IDataManager } return null; } + + public void AddAlbums(List albumsList) + { + foreach(Album a in albumsList) + { + albums.Add(a); + } + } + + public void AddArtists(List artistsList) + { + foreach (Artist a in artistsList) + { + artists.Add(a); + } + } + + public void AddPlaylists(List playlistsList) + { + foreach (Playlist p in playlistsList) + { + playlists.Add(p); + } + } + + public void AddCustomTitles(List customTitlesList) + { + foreach (CustomTitle ct in customTitlesList) + { + customTitles.Add(ct); + } + } + + public void AddInfoTitles(List infoTitlesList) + { + foreach (InfoTitle it in infoTitlesList) + { + infoTitles.Add(it); + } + } + + public Playlist? GetPlaylistByUrl(string url) + { + foreach(Playlist p in playlists) + { + if (p.ImageURL == url) + { + return p; + } + } + return null; + } + + public void UpdateCustomTitle(CustomTitle title, string name, string url, string info, string path) + { + title.Name = name; + title.ImageURL = url; + title.Information = info; + title.Path = path; + } + + public void UpdateCustomTitleByUrl(string url, string name, string newUrl, string info, string path) + { + CustomTitle? title = GetCustomTitleByUrl(url); + if (title != null) + { + title.Name = name; + title.ImageURL = newUrl; + title.Information = info; + title.Path = path; + } + } + + public void UpdateInfoTitle(InfoTitle title, string name, string url, string info, Artist artist, string description, Genre genre) + { + title.Name = name; + title.ImageURL = url; + title.Information = info; + title.Artist = artist; + title.Description = description; + title.Genre = genre; + } + + public void UpdateInfoTitleByName(string url, string name, string newUrl, string info, Artist artist, string description, Genre genre) + { + InfoTitle? title = GetInfoTitleByUrl(url); + if (title != null) + { + title.Name = name; + title.ImageURL = newUrl; + title.Information = info; + title.Artist = artist; + title.Description = description; + title.Genre = genre; + } + } + + public void UpdateInfoTitleByArtistName(InfoTitle title, string name, string url, string info, string artist, string description, Genre genre) + { + title.Name = name; + title.ImageURL = url; + title.Information = info; + Artist? artist2 = GetArtistByName(artist); + if (artist2 != null) + { + title.Artist = artist2; + } + title.Description = description; + title.Genre = genre; + } + + public void UpdateInfoTitleByNameByArtistName(string url, string name, string newUrl, string info, string artist, string description, Genre genre) + { + InfoTitle? title = GetInfoTitleByUrl(url); + if (title != null) + { + title.Name = name; + title.ImageURL = newUrl; + title.Information = info; + Artist? artist2 = GetArtistByName(artist); + if (artist2 != null) + { + title.Artist = artist2; + } + title.Description = description; + title.Genre = genre; + } + } + + public void UpdateAlbum(Album album, string name, string url, Artist artist, string description, string info) + { + album.Name = name; + album.ImageURL = url; + album.Artist = artist; + album.Description = description; + album.Information = info; + } + + public void UpdateAlbumByUrl(string url, string name, string newUrl, Artist artist, string description, string info) + { + Album? album = GetAlbumByUrl(url); + if (album != null) + { + album.Name = name; + album.ImageURL = newUrl; + album.Artist = artist; + album.Description = description; + album.Information= info; + } + } + + public void UpdateAlbumByArtistName(Album album, string name, string url, string artist, string description, string info) + { + album.Name = name; + album.ImageURL = url; + Artist? artist2 = GetArtistByName(artist); + if (artist2 != null) + { + album.Artist = artist2; + } + album.Description = description; + album.Information = info; + } + + public void UpdateAlbumByUrlByArtistName(string url, string name, string newUrl, string artist, string description, string info) + { + Album? album = GetAlbumByUrl(url); + if (album != null) + { + album.Name = name; + album.ImageURL = newUrl; + Artist? artist2 = GetArtistByName(artist); + if (artist2 != null) + { + album.Artist = artist2; + } + album.Description = description; + album.Information = info; + } + } + + public void UpdatePlaylist(Playlist playlist, string name, string description, string url) + { + playlist.Name = name; + playlist.Description = description; + playlist.ImageURL = url; + } + + public void UpdatePlaylistByUrl(string url, string name, string description, string newUrl) + { + Playlist? playlist = GetPlaylistByUrl(url); + if (playlist != null) + { + playlist.Name = name; + playlist.Description = description; + playlist.ImageURL = newUrl; + } + } + + public void UpdateArtist(Artist artist, string name) + { + artist.Name = name; + } + + public void UpdateArtistByName(string name, string newName) + { + Artist? artist = GetArtistByName(newName); + if (artist != null) + { + artist.Name = newName; + } + } + + public void RemoveAlbums(List albumsList) + { + foreach (Album album in albumsList) + { + albums.Remove(album); + } + } + + public void RemoveArtists(List artistsList) + { + foreach(Artist artist in artistsList) + { + artists.Remove(artist); + } + } + + public void RemovePlaylists(List playlistsList) + { + foreach (Playlist playlist in playlistsList) + { + playlists.Remove(playlist); + } + } + + public void RemoveCustomTitles(List customTitlesList) + { + foreach(CustomTitle customTitle in customTitlesList) + { + customTitles.Remove(customTitle); + } + } + + public void RemoveInfoTitles(List infoTitlesList) + { + foreach (InfoTitle infoTitle in infoTitlesList) + { + infoTitles.Remove(infoTitle); + } + } } diff --git a/Sources/Model/Stub/StubManager.cs b/Sources/Model/Stub/StubManager.cs index 938aef7..416d46c 100644 --- a/Sources/Model/Stub/StubManager.cs +++ b/Sources/Model/Stub/StubManager.cs @@ -87,12 +87,6 @@ public class StubManager : IDataManager stubCustomTitle = new StubCustomTitle(); stubInfoTitle = new StubInfoTitle(); stubPlaylist = new StubPlaylist(); - - dictAlbumInfo.Add(StubAlbum.GetAlbumByUrl("lastreet.png"), StubInfoTitle.GetInfoTitlesByUrl(new List() { "url1.png", "url2.png" })); - dictAlbumInfo.Add(StubAlbum.GetAlbumByUrl("oui.png"), StubInfoTitle.GetInfoTitlesByUrl(new List() { "url2.png" })); - - dictPlaylistTitles.Add(StubPlaylist.GetPlaylistByUrl("url1.png"), StubCustomTitle.GetCustomTitlesByUrl(new List() { "url1.png", "url2.png" })); - dictPlaylistTitles.Add(StubPlaylist.GetPlaylistByUrl("url2.png"), StubCustomTitle.GetCustomTitlesByUrl(new List() { "url2.png", "url3.png" })); } public List GetAlbums() @@ -202,4 +196,271 @@ public class StubManager : IDataManager } return null; } + + public InfoTitle? GetInfoTitleByUrl(string url) + { + throw new NotImplementedException(); + } + + public Album? GetAlbumByUrl(string url) + { + throw new NotImplementedException(); + } + + public Artist? GetArtistByName(string name) + { + throw new NotImplementedException(); + } + + public void AddAlbums(List albumsList) + { + foreach (Album a in albumsList) + { + StubAlbum.AddAlbum(a); + } + } + + public void AddArtists(List artistsList) + { + foreach (Artist a in artistsList) + { + StubArtist.AddArtist(a); + } + } + + public void AddPlaylists(List playlistsList) + { + foreach (Playlist p in playlistsList) + { + StubPlaylist.AddPlaylist(p); + } + } + + public void AddCustomTitles(List customTitlesList) + { + foreach (CustomTitle ct in customTitlesList) + { + StubCustomTitle.AddCustomTitle(ct); + } + } + + public void AddInfoTitles(List infoTitlesList) + { + foreach (InfoTitle it in infoTitlesList) + { + StubInfoTitle.AddInfoTitle(it); + } + } + + public Playlist? GetPlaylistByUrl(string url) + { + foreach (Playlist p in StubPlaylist.Playlists) + { + if (p.ImageURL == url) + { + return p; + } + } + return null; + } + + public void UpdateCustomTitle(CustomTitle title, string name, string url, string info, string path) + { + title.Name = name; + title.ImageURL = url; + title.Information = info; + title.Path = path; + } + + public void UpdateCustomTitleByUrl(string url, string name, string newUrl, string info, string path) + { + CustomTitle? title = GetCustomTitleByUrl(url); + if (title != null) + { + title.Name = name; + title.ImageURL = newUrl; + title.Information = info; + title.Path = path; + } + } + + public void UpdateInfoTitle(InfoTitle title, string name, string url, string info, Artist artist, string description, Genre genre) + { + title.Name = name; + title.ImageURL = url; + title.Information = info; + title.Artist = artist; + title.Description = description; + title.Genre = genre; + } + + public void UpdateInfoTitleByName(string url, string name, string newUrl, string info, Artist artist, string description, Genre genre) + { + InfoTitle? title = GetInfoTitleByUrl(url); + if (title != null) + { + title.Name = name; + title.ImageURL = newUrl; + title.Information = info; + title.Artist = artist; + title.Description = description; + title.Genre = genre; + } + } + + public void UpdateInfoTitleByArtistName(InfoTitle title, string name, string url, string info, string artist, string description, Genre genre) + { + title.Name = name; + title.ImageURL = url; + title.Information = info; + Artist? artist2 = GetArtistByName(artist); + if (artist2 != null) + { + title.Artist = artist2; + } + title.Description = description; + title.Genre = genre; + } + + public void UpdateInfoTitleByNameByArtistName(string url, string name, string newUrl, string info, string artist, string description, Genre genre) + { + InfoTitle? title = GetInfoTitleByUrl(url); + if (title != null) + { + title.Name = name; + title.ImageURL = newUrl; + title.Information = info; + Artist? artist2 = GetArtistByName(artist); + if (artist2 != null) + { + title.Artist = artist2; + } + title.Description = description; + title.Genre = genre; + } + } + + public void UpdateAlbum(Album album, string name, string url, Artist artist, string description, string info) + { + album.Name = name; + album.ImageURL = url; + album.Artist = artist; + album.Description = description; + album.Information = info; + } + + public void UpdateAlbumByUrl(string url, string name, string newUrl, Artist artist, string description, string info) + { + Album? album = GetAlbumByUrl(url); + if (album != null) + { + album.Name = name; + album.ImageURL = newUrl; + album.Artist = artist; + album.Description = description; + album.Information = info; + } + } + + public void UpdateAlbumByArtistName(Album album, string name, string url, string artist, string description, string info) + { + album.Name = name; + album.ImageURL = url; + Artist? artist2 = GetArtistByName(artist); + if (artist2 != null) + { + album.Artist = artist2; + } + album.Description = description; + album.Information = info; + } + + public void UpdateAlbumByUrlByArtistName(string url, string name, string newUrl, string artist, string description, string info) + { + Album? album = GetAlbumByUrl(url); + if (album != null) + { + album.Name = name; + album.ImageURL = newUrl; + Artist? artist2 = GetArtistByName(artist); + if (artist2 != null) + { + album.Artist = artist2; + } + album.Description = description; + album.Information = info; + } + } + + public void UpdatePlaylist(Playlist playlist, string name, string description, string url) + { + playlist.Name = name; + playlist.Description = description; + playlist.ImageURL = url; + } + + public void UpdatePlaylistByUrl(string url, string name, string description, string newUrl) + { + Playlist? playlist = GetPlaylistByUrl(url); + if (playlist != null) + { + playlist.Name = name; + playlist.Description = description; + playlist.ImageURL = newUrl; + } + } + + public void UpdateArtist(Artist artist, string name) + { + artist.Name = name; + } + + public void UpdateArtistByName(string name, string newName) + { + Artist? artist = GetArtistByName(newName); + if (artist != null) + { + artist.Name = newName; + } + } + + public void RemoveAlbums(List albumsList) + { + foreach (Album album in albumsList) + { + StubAlbum.RemoveAlbum(album); + } + } + + public void RemoveArtists(List artistsList) + { + foreach (Artist artist in artistsList) + { + StubArtist.RemoveArtist(artist); + } + } + + public void RemovePlaylists(List playlistsList) + { + foreach (Playlist playlist in playlistsList) + { + StubPlaylist.RemovePlaylist(playlist); + } + } + + public void RemoveCustomTitles(List customTitlesList) + { + foreach (CustomTitle customTitle in customTitlesList) + { + StubCustomTitle.RemoveCustomTitle(customTitle); + } + } + + public void RemoveInfoTitles(List infoTitlesList) + { + foreach (InfoTitle infoTitle in infoTitlesList) + { + StubInfoTitle.RemoveInfoTitle(infoTitle); + } + } }