diff --git a/Sources/Console/Console.csproj b/Sources/Console/Console.csproj
index 6abd0f7..e171fb5 100644
--- a/Sources/Console/Console.csproj
+++ b/Sources/Console/Console.csproj
@@ -11,4 +11,8 @@
+
+
+
+
diff --git a/Sources/Console/Program.cs b/Sources/Console/Program.cs
index dec48a1..1900769 100644
--- a/Sources/Console/Program.cs
+++ b/Sources/Console/Program.cs
@@ -1,9 +1,12 @@
using Model;
+using Model.Serialization;
using Model.Stub;
-Manager Manager = new Manager();
+IDataManager DataManager = new LINQ_XML_Serialization();
-foreach(Album Album in Manager.GetAlbums())
+Manager Manager = new Manager(DataManager);
+
+/*foreach(Album Album in Manager.GetAlbums())
{
Console.WriteLine(Album.Name);
}
@@ -15,9 +18,9 @@ Manager.AddAlbum(new Album("coucou", "path.png", new Artist("lorenzo"), "descLol
foreach (Album Album in Manager.GetAlbums())
{
Console.WriteLine(Album.Name);
-}
+}*/
-Manager.AddPlaylist(new Playlist("MegaTeuf", "DescPlaylist", "ImagePlaylist"));
+/*Manager.AddPlaylist(new Playlist("MegaTeuf", "DescPlaylist", "ImagePlaylist"));
Playlist p1 = Manager.Playlists.First();
@@ -114,9 +117,35 @@ p1.PreviousTitle();
current = p1.GetCurrentTitle();
Console.WriteLine(current?.Name);
p1.PreviousTitle();
-current = p1.GetCurrentTitle();
-Console.WriteLine(current?.Name);
-
-
-
-
+current = p1.GetCurrentTitle();*/
+/*Console.WriteLine(current?.Name);*/
+Manager.LoadSerialization();
+foreach (var p in Manager.GetPlaylists())
+{
+ Console.WriteLine(p.Name);
+}
+foreach (var a in Manager.GetAlbums())
+{
+ Console.WriteLine(a.Name);
+}
+foreach (var a in Manager.GetArtists())
+{
+ Console.WriteLine(a.Name);
+}
+foreach (var ct in Manager.GetCustomTitles())
+{
+ Console.WriteLine(ct.Name);
+}
+foreach (var it in Manager.GetInfoTitles())
+{
+ Console.WriteLine(it.Name);
+}
+Artist newArtist = new Artist();
+Manager.AddArtist(newArtist);
+Manager.AddAlbum(new Album("Nouvel album", "nouveau.png", newArtist, "nouvelle desc", "nouvelles infos"));
+Console.WriteLine("------");
+foreach (var a in Manager.GetAlbums())
+{
+ Console.WriteLine(a.Name);
+}
+Manager.SaveSerialization();
\ No newline at end of file
diff --git a/Sources/Model/Album.cs b/Sources/Model/Album.cs
index a2beba3..7ececfb 100644
--- a/Sources/Model/Album.cs
+++ b/Sources/Model/Album.cs
@@ -1,21 +1,26 @@
-namespace Model
+using Model.Stub;
+using System.Diagnostics;
+using System.Xml.Serialization;
+
+namespace Model
{
- public class Album
+ public class Album
{
+
public string Name
{
get => name;
set
{
- if (value != null && value.Length < 75)
+ if (value != null && value.Length < Manager.MAX_NAME_LENGTH)
{
name = value;
}
}
}
- private string name ="Unknown";
+ private string name = Manager.DEFAULT_NAME;
public string Description
{
@@ -23,14 +28,14 @@
set
{
- if (value != null && value.Length < 500)
+ if (value != null && value.Length < Manager.MAX_DESCRIPTION_LENGTH)
{
description = value;
}
}
}
- private string description ="";
+ private string description = Manager.DEFAULT_DESC;
private List
titles = new List();
@@ -38,7 +43,7 @@
{
get
{
- return titles.ToList();
+ return new List(titles);
}
}
@@ -55,7 +60,7 @@
}
}
- private string imageURL = "none.png";
+ private string imageURL = Manager.DEFAULT_URL;
public Artist Artist { get; set; }
@@ -65,14 +70,14 @@
set
{
- if (value != null && value.Length < 500)
+ if (value != null && value.Length < Manager.MAX_DESCRIPTION_LENGTH)
{
information = value;
}
}
}
- private string information = "";
+ private string information = Manager.DEFAULT_DESC;
public Album(string name, string file_Name, Artist artist, string description, string information)
{
@@ -83,6 +88,11 @@
Information = information;
}
+ public Album()
+ {
+ Artist = new Artist(Manager.DEFAULT_NAME);
+ }
+
public void AddTitle(Title title)
{
titles.Add(title);
@@ -96,5 +106,22 @@
}
}
+ public override bool Equals(object? obj)
+ {
+ if (obj is null) return false;
+ if (obj.GetType() != typeof(Artist)) return false;
+ if (obj is Album album && ImageURL == album.ImageURL) return true;
+ else return false;
+ }
+
+ public override int GetHashCode()
+ {
+ return ImageURL.GetHashCode();
+ }
+
+ public override string ToString()
+ {
+ return $"Name : {Name}, Artist : {Artist}";
+ }
}
}
\ No newline at end of file
diff --git a/Sources/Model/Artist.cs b/Sources/Model/Artist.cs
index a5b8e48..936131d 100644
--- a/Sources/Model/Artist.cs
+++ b/Sources/Model/Artist.cs
@@ -1,4 +1,7 @@
-namespace Model;
+using Model.Stub;
+using System.Xml.Serialization;
+
+namespace Model;
public class Artist
{
@@ -8,32 +11,40 @@ public class Artist
set
{
- if (value != null && value.Length < 75)
+ if (value != null && value.Length < Manager.MAX_NAME_LENGTH)
{
name = value;
}
}
}
- private string name = "Unknown";
+ private string name = Manager.DEFAULT_NAME;
- private List albums = new List();
+ public Artist(string name)
+ {
+ Name = name;
+ }
+
+ public Artist()
+ {
- public IEnumerable Albums
- {
- get
- {
- return albums.ToList();
- }
}
- public Artist(string name)
+ public override bool Equals(object? obj)
{
- Name = name;
+ if(obj == null) return false;
+ if(obj.GetType() != typeof(Artist)) return false;
+ if(obj is Artist artist && Name == artist.Name) return true;
+ else return false;
+ }
+
+ public override int GetHashCode()
+ {
+ return Name.GetHashCode();
}
- public void AddAlbum(Album album)
+ public override string ToString()
{
- albums.Add(album);
+ return $"Name : {Name}";
}
}
diff --git a/Sources/Model/CustomTitle.cs b/Sources/Model/CustomTitle.cs
index 4f9958f..ab7b192 100644
--- a/Sources/Model/CustomTitle.cs
+++ b/Sources/Model/CustomTitle.cs
@@ -1,4 +1,6 @@
-namespace Model;
+using Model.Stub;
+
+namespace Model;
public class CustomTitle : Title {
@@ -8,17 +10,37 @@ public class CustomTitle : Title {
set
{
- if (value != null && value.Length < 500)
+ if (value != null && value.Length < Manager.MAX_DESCRIPTION_LENGTH)
{
path = value;
}
}
}
- private string path = "none.mp3";
+ private string path = Manager.DEFAULT_URL;
public CustomTitle(string name, string imageURL, string information, string path) : base(name, imageURL, information)
{
Path = path;
}
+
+ public CustomTitle() : base(Manager.DEFAULT_NAME, Manager.DEFAULT_URL, Manager.DEFAULT_DESC) { }
+
+ public override bool Equals(object? obj)
+ {
+ if (obj is null) return false;
+ if (obj.GetType() != typeof(CustomTitle)) return false;
+ if (obj is CustomTitle customTitle && ImageURL == customTitle.ImageURL) return true;
+ else return false;
+ }
+
+ public override int GetHashCode()
+ {
+ return ImageURL.GetHashCode();
+ }
+
+ public override string ToString()
+ {
+ return $"Name : {Name}, Path : {Path}";
+ }
}
diff --git a/Sources/Model/Genre.cs b/Sources/Model/Genre.cs
index 4298509..f0aec92 100644
--- a/Sources/Model/Genre.cs
+++ b/Sources/Model/Genre.cs
@@ -2,5 +2,6 @@
public enum Genre
{
- HIP_HOP, POP, ROCK, ELECTRO, CLASSIQUE, JAZZ, VARIETE_FRANCAISE, VARIETE_INTERNATIONALE, REGGAE, RAP, RNB, DISCO, BLUES, COUNTRY, FUNK, GOSPEL, METAL, K_POP
+ HIP_HOP, POP, ROCK, ELECTRO, CLASSIQUE, JAZZ, VARIETE_FRANCAISE, VARIETE_INTERNATIONALE, REGGAE, RAP, RNB, DISCO, BLUES, COUNTRY, FUNK, GOSPEL,
+ METAL, K_POP
}
diff --git a/Sources/Model/IDataManager.cs b/Sources/Model/IDataManager.cs
index dde2dad..6c9e14a 100644
--- a/Sources/Model/IDataManager.cs
+++ b/Sources/Model/IDataManager.cs
@@ -12,28 +12,30 @@ public interface IDataManager
List GetPlaylists();
- public void AddAlbum(Album album);
+ CustomTitle? GetCustomTitleByUrl(string custom);
- public void AddArtist(Artist artist);
+ void AddAlbum(Album album);
- public void AddPlaylist(Playlist playlist);
+ void AddArtist(Artist artist);
- public void AddCustomTitle(CustomTitle title);
+ void AddPlaylist(Playlist playlist);
- public void AddInfoTitle(InfoTitle title);
+ void AddCustomTitle(CustomTitle title);
- public void RemoveAlbum(Album album);
+ void AddInfoTitle(InfoTitle title);
- public void RemoveArtist(Artist artist);
+ void RemoveAlbum(Album album);
- public void RemovePlaylist(Playlist playlist);
+ void RemoveArtist(Artist artist);
- public void RemoveCustomTitle(CustomTitle title);
+ void RemovePlaylist(Playlist playlist);
- public void RemoveInfoTitle(InfoTitle title);
+ void RemoveCustomTitle(CustomTitle title);
- public void LoadPlaylists();
+ void RemoveInfoTitle(InfoTitle title);
- public void SavePlaylists();
+ void LoadSerialization();
+
+ void SaveSerialization();
}
\ No newline at end of file
diff --git a/Sources/Model/InfoTitle.cs b/Sources/Model/InfoTitle.cs
index 2c6b46a..1ee8b2f 100644
--- a/Sources/Model/InfoTitle.cs
+++ b/Sources/Model/InfoTitle.cs
@@ -1,53 +1,90 @@
-namespace Model;
-
-public class InfoTitle : Title
-{
- public Artist Artiste { get; set; }
-
- public string Description
- {
- get => description;
-
- set
- {
- if (value != null && value.Length < 500)
- {
- description = value;
- }
- }
- }
-
- private string description ="";
-
- private List feat = new List();
-
- public IEnumerable Feat
- {
+using System.Xml.Serialization;
+using Model.Stub;
+
+namespace Model;
+
+public class InfoTitle : Title
+{
+ public Artist Artist
+ {
+ get
+ {
+ return artist;
+ }
+ set
+ {
+ artist = value;
+ }
+ }
+
+ private Artist artist = new Artist();
+
+ public string Description
+ {
+ get => description;
+
+ set
+ {
+ if (value != null && value.Length < Manager.MAX_DESCRIPTION_LENGTH)
+ {
+ description = value;
+ }
+ }
+ }
+
+ private string description = Manager.DEFAULT_DESC;
+
+ private List feat = new List();
+
+ public IEnumerable Feat
+ {
get
{
return feat.ToList();
- }
- }
-
- public Genre Genre { get; set; }
-
- public InfoTitle(string name, string imageURL, string information, Artist artist, string description, Genre genre) : base(name,imageURL,information)
- {
- Artiste = artist;
- Description = description;
- Genre = genre;
- }
-
- public void AddFeat(Artist artist)
- {
- feat.Add(artist);
- }
- public void RemoveFeat(Artist artiste)
- {
- foreach (var item in Feat)
- {
- feat = Feat.Where(item => item != artiste).ToList();
- }
- }
-
-}
+ }
+ }
+
+ public Genre Genre { get; set; }
+
+ public InfoTitle(string name, string imageURL, string information, Artist artist, string description, Genre genre) : base(name,imageURL,information)
+ {
+ this.artist = artist;
+ Description = description;
+ Genre = genre;
+ }
+
+ public InfoTitle() : base(Manager.DEFAULT_NAME, Manager.DEFAULT_URL, Manager.DEFAULT_DESC)
+ {
+ Artist = new Artist(Manager.DEFAULT_NAME);
+ }
+
+ public void AddFeat(Artist artist)
+ {
+ feat.Add(artist);
+ }
+ public void RemoveFeat(Artist artiste)
+ {
+ foreach (var item in Feat)
+ {
+ feat = Feat.Where(item => item != artiste).ToList();
+ }
+ }
+
+ public override bool Equals(object? obj)
+ {
+ if (obj is null) return false;
+ if (obj.GetType() != typeof(InfoTitle)) return false;
+ if (obj is InfoTitle infoTitle && ImageURL == infoTitle.ImageURL) return true;
+ else return false;
+ }
+
+ public override int GetHashCode()
+ {
+ return ImageURL.GetHashCode();
+ }
+
+ public override string ToString()
+ {
+ return $"Name : {Name}, ImageUrl : {ImageURL}";
+ }
+}
diff --git a/Sources/Model/Manager.cs b/Sources/Model/Manager.cs
index cfbfbe1..08c405c 100644
--- a/Sources/Model/Manager.cs
+++ b/Sources/Model/Manager.cs
@@ -2,6 +2,16 @@
public class Manager
{
+ public static int MAX_NAME_LENGTH = 75;
+
+ public static int MAX_DESCRIPTION_LENGTH = 500;
+
+ public static string DEFAULT_NAME = "Unknown";
+
+ public static string DEFAULT_URL = "none.png";
+
+ public static string DEFAULT_DESC = "";
+
public IDataManager DataManager { get; set; }
private List albums = new List();
@@ -89,6 +99,12 @@ public class Manager
playlists = DataManager.GetPlaylists();
}
+ public void AddArtist(Artist artist)
+ {
+ DataManager.AddArtist(artist);
+ artists = DataManager.GetArtists();
+ }
+
public void RemoveAlbum(Album album)
{
DataManager.RemoveAlbum(album);
@@ -113,6 +129,11 @@ public class Manager
playlists = DataManager.GetPlaylists();
}
+ public IEnumerable GetPlaylists()
+ {
+ return DataManager.GetPlaylists();
+ }
+
public IEnumerable GetAlbums()
{
return DataManager.GetAlbums();
@@ -133,4 +154,14 @@ public class Manager
return DataManager.GetArtists();
}
+ public void LoadSerialization()
+ {
+ DataManager.LoadSerialization();
+ }
+
+ public void SaveSerialization()
+ {
+ DataManager.SaveSerialization();
+ }
+
}
diff --git a/Sources/Model/Playlist.cs b/Sources/Model/Playlist.cs
index dbe9704..efa68d8 100644
--- a/Sources/Model/Playlist.cs
+++ b/Sources/Model/Playlist.cs
@@ -1,4 +1,7 @@
-namespace Model;
+using Model.Stub;
+using System.Xml.Serialization;
+
+namespace Model;
public class Playlist
{
@@ -8,14 +11,14 @@ public class Playlist
set
{
- if (value != null && value.Length < 75)
+ if (value != null && value.Length < Manager.MAX_NAME_LENGTH)
{
name = value;
}
}
}
- private string name ="Unknown";
+ private string name = Manager.DEFAULT_NAME;
public string Description
{
@@ -23,14 +26,14 @@ public class Playlist
set
{
- if (value != null && value.Length < 500)
+ if (value != null && value.Length < Manager.MAX_DESCRIPTION_LENGTH)
{
description = value;
}
}
}
- private string description = "";
+ private string description = Manager.DEFAULT_DESC;
private List morceaux = new List();
@@ -54,7 +57,7 @@ public class Playlist
}
}
- private string imageURL = "none.png";
+ private string imageURL = Manager.DEFAULT_URL;
public int Index
{
@@ -104,6 +107,10 @@ public class Playlist
ImageURL = imageURL;
}
+ public Playlist()
+ {
+ }
+
public void AddTitle(CustomTitle morceau)
{
morceaux.Add(morceau);
@@ -169,4 +176,21 @@ public class Playlist
}
+ public override bool Equals(object? obj)
+ {
+ if (obj is null) return false;
+ if (obj.GetType() != typeof(Playlist)) return false;
+ if (obj is Playlist playlist && ImageURL == playlist.ImageURL) return true;
+ else return false;
+ }
+
+ public override int GetHashCode()
+ {
+ return ImageURL.GetHashCode();
+ }
+
+ public override string ToString()
+ {
+ return $"Name : {Name}";
+ }
}
diff --git a/Sources/Model/Serialization/LINQ_XML_Serialization.cs b/Sources/Model/Serialization/LINQ_XML_Serialization.cs
index 37cb1ba..a4f0ed3 100644
--- a/Sources/Model/Serialization/LINQ_XML_Serialization.cs
+++ b/Sources/Model/Serialization/LINQ_XML_Serialization.cs
@@ -1,203 +1,613 @@
-using Model.Stub;
-using System.Linq;
-using System.Xml;
-using System.Xml.Linq;
-
-namespace Model.Serialization;
-
-public class LINQ_XML_Serialization : IDataManager
-{
-
- private List artists;
-
- public IEnumerable Artists
- {
- get
- {
- return artists.ToList();
- }
- }
-
- private List albums;
-
- public IEnumerable Albums
- {
- get
- {
- return albums.ToList();
- }
- }
-
- private List playlists;
-
- public IEnumerable Playlists
- {
- get
- {
- return playlists.ToList();
- }
- }
-
- private List infoTitles;
-
- public IEnumerable InfoTitles
- {
- get
- {
- return infoTitles.ToList();
- }
- }
-
- private List customTitles;
-
- public IEnumerable CustomTitles
- {
- get
- {
- return customTitles.ToList();
- }
- }
-
- public LINQ_XML_Serialization()
- {
- playlists = new List();
- artists = new List();
- albums = new List();
- infoTitles = new List();
- customTitles = new List();
- LoadPlaylists();
- }
-
- public void AddAlbum(Album album)
- {
- albums.Add(album);
- }
-
- public void AddArtist(Artist artist)
- {
- artists.Add(artist);
- }
-
- public void AddCustomTitle(CustomTitle title)
- {
- customTitles.Add(title);
- }
-
- public void AddInfoTitle(InfoTitle title)
- {
- infoTitles.Add(title);
- }
-
- public void AddPlaylist(Playlist playlist)
- {
- playlists.Add(playlist);
- }
-
- public List GetAlbums()
- {
- return albums;
- }
-
- public List GetArtists()
- {
- return artists;
- }
-
- public List GetCustomTitles()
- {
- return customTitles;
- }
-
- public List GetInfoTitles()
- {
- return infoTitles;
- }
-
- public List GetPlaylists()
- {
- return playlists;
- }
-
- public void RemoveAlbum(Album album)
- {
- albums.Remove(album);
- }
-
- public void RemoveArtist(Artist artist)
- {
- artists.Remove(artist);
- }
-
- public void RemoveCustomTitle(CustomTitle title)
- {
- customTitles.Remove(title);
- }
-
- public void RemoveInfoTitle(InfoTitle title)
- {
- infoTitles.Remove(title);
- }
-
- public void RemovePlaylist(Playlist playlist)
- {
- playlists.Remove(playlist);
- }
-
- public void LoadPlaylists()
- {
- XDocument PlaylistsFichier = XDocument.Load("playlists.xml");
-
- playlists = PlaylistsFichier.Descendants("playlist")
- .Select(eltPlaylist => new Playlist(
- eltPlaylist.Attribute("Name")!.Value,
- eltPlaylist.Element("Description")!.Value,
- eltPlaylist.Element("ImageURL")!.Value
- )).ToList();
- foreach(Playlist playlist in playlists)
- {
- var custom = PlaylistsFichier.Descendants("playlist")
- .Single(ct => ct.Attribute("Name")?.Value == playlist.Name)
- .Element("Customs");
- }
- }
-
- public void SavePlaylists()
- {
- XDocument PlaylistsFichier = new XDocument();
-
- var playlist = playlists.Select(playlist => new XElement("playlist",
- new XAttribute("Name", playlist.Name),
- new XElement("Description", playlist.Description),
- new XElement("ImageURL", playlist.ImageURL)
- ));
-
- XmlWriterSettings settings = new XmlWriterSettings();
- settings.Indent = true;
-
- using(TextWriter tw = File.CreateText("playlists.xml"))
- {
- using(XmlWriter writer = XmlWriter.Create(tw, settings))
- {
- PlaylistsFichier.Save(writer);
- }
- }
- }
-
+using Model.Stub;
+using System.Diagnostics.Metrics;
+using System;
+using System.Linq;
+using System.Xml;
+using System.Xml.Linq;
+using System.Xml.Serialization;
+using static System.Reflection.Metadata.BlobBuilder;
+using System.Reflection.Metadata;
+
+namespace Model.Serialization;
+
+public class LINQ_XML_Serialization : IDataManager
+{
+ private static string XMLPATH = @"D:\Data\";
+
+ private static string XMLFILEPLAYLISTS = "playlists.xml";
+
+ private static string XMLFILEALBUMS = "albums.xml";
+
+ private static string XMLFILECUSTOMS = "customs.xml";
+
+ private static string XMLFILEINFOS = "infos.xml";
+
+ private static string XMLFILEARTISTS = "artists.xml";
+
+ private List artists;
+
+ public IEnumerable Artists
+ {
+ get
+ {
+ return artists.ToList();
+ }
+ }
+
+ private List albums;
+
+ public IEnumerable Albums
+ {
+ get
+ {
+ return albums.ToList();
+ }
+ }
+
+ private List playlists;
+
+ public IEnumerable Playlists
+ {
+ get
+ {
+ return playlists.ToList();
+ }
+ }
+
+ private List infoTitles;
+
+ public IEnumerable InfoTitles
+ {
+ get
+ {
+ return infoTitles.ToList();
+ }
+ }
+
+ private List customTitles;
+
+ public IEnumerable CustomTitles
+ {
+ get
+ {
+ return customTitles.ToList();
+ }
+ }
+
+ public LINQ_XML_Serialization()
+ {
+ playlists = new List();
+ artists = new List();
+ albums = new List();
+ infoTitles = new List();
+ customTitles = new List();
+ LoadSerialization();
+ }
+
+ public void AddAlbum(Album album)
+ {
+ albums.Add(album);
+ }
+
+ public void AddArtist(Artist artist)
+ {
+ artists.Add(artist);
+ }
+
+ public void AddCustomTitle(CustomTitle title)
+ {
+ customTitles.Add(title);
+ }
+
+ public void AddInfoTitle(InfoTitle title)
+ {
+ infoTitles.Add(title);
+ }
+
+ public void AddPlaylist(Playlist playlist)
+ {
+ playlists.Add(playlist);
+ }
+
+ public List GetAlbums()
+ {
+ return albums;
+ }
+
+ public List GetArtists()
+ {
+ return artists;
+ }
+
+ public List GetCustomTitles()
+ {
+ return customTitles;
+ }
+
+ public List GetInfoTitles()
+ {
+ return infoTitles;
+ }
+
+ public List GetPlaylists()
+ {
+ return playlists;
+ }
+
+ public void RemoveAlbum(Album album)
+ {
+ albums.Remove(album);
+ }
+
+ public void RemoveArtist(Artist artist)
+ {
+ artists.Remove(artist);
+ }
+
+ public void RemoveCustomTitle(CustomTitle title)
+ {
+ customTitles.Remove(title);
+ }
+
+ public void RemoveInfoTitle(InfoTitle title)
+ {
+ infoTitles.Remove(title);
+ }
+
+ public void RemovePlaylist(Playlist playlist)
+ {
+ playlists.Remove(playlist);
+ }
+
+ public void LoadSerialization()
+ {
+ LoadArtists();
+ LoadCustomTitles();
+ LoadInfoTitles();
+ LoadPlaylists();
+ LoadAlbums();
+ }
+
+ public void SaveSerialization()
+ {
+ SaveArtists();
+ SaveCustomTitles();
+ SaveInfoTitles();
+ SavePlaylists();
+ SaveAlbums();
+ }
+
+ public void LoadPlaylists()
+ {
+ if (!File.Exists(Path.Combine(XMLPATH + XMLFILEPLAYLISTS)))
+ {
+ XDocument PlaylistFile = new XDocument();
+ Playlist p1 = new Playlist();
+ playlists.Add(p1);
+
+ var playlist = playlists.Select(p => new XElement("Playlist",
+ new XAttribute("Name", p.Name),
+ new XElement("Description", p.Description),
+ new XElement("ImageURL", p.ImageURL),
+ new XElement("Titles", p.Morceaux.Count() > 0 ? p.Morceaux.Select(a => a.ImageURL).Aggregate((albumUrl, nextAlbum) => albumUrl + " " + nextAlbum) : "")
+ ));
+
+ PlaylistFile.Add(new XElement("Playlists", playlist));
+
+ XmlWriterSettings settings = new XmlWriterSettings();
+ settings.Indent = true;
+ using (TextWriter tw = File.CreateText(Path.Combine(XMLPATH + XMLFILEPLAYLISTS)))
+ {
+ using (XmlWriter writer = XmlWriter.Create(tw, settings))
+ {
+ PlaylistFile.Save(writer);
+ }
+ }
+ }
+ XDocument PlaylistsFichier = XDocument.Load(Path.Combine(XMLPATH, XMLFILEPLAYLISTS));
+
+ playlists = PlaylistsFichier.Descendants("Playlist")
+ .Select(eltPlaylist => new Playlist(
+ eltPlaylist.Attribute("Name")!.Value,
+ eltPlaylist.Element("Description")!.Value,
+ eltPlaylist.Element("ImageURL")!.Value
+ )).ToList();
+ foreach (Playlist playlist in playlists)
+ {
+ var custom = PlaylistsFichier.Descendants("Playlist")
+ .Single(ct => ct.Attribute("Name")?.Value == playlist.Name)
+ .Element("Titles")!.ToString();
+ if (custom == null)
+ {
+ continue;
+ }
+
+ CustomTitle? customTitle = GetCustomTitleByUrl(custom);
+
+ if (customTitle == null)
+ {
+ continue;
+ }
+
+ playlist.AddTitle(customTitle);
+ }
+ }
+
+ public void SavePlaylists()
+ {
+ Directory.SetCurrentDirectory(XMLPATH);
+ XDocument PlaylistsFichier = new XDocument();
+
+ var playlist = playlists.Select(playlist => new XElement("Playlist",
+ new XAttribute("Name", playlist.Name),
+ new XElement("Description", playlist.Description),
+ new XElement("ImageURL", playlist.ImageURL),
+ new XElement("Titles", playlist.Morceaux.Count() > 0 ? playlist.Morceaux.Select(p => p.ImageURL).Aggregate((playlistUrl, nextPlaylist) => playlistUrl + " " + nextPlaylist) : "")
+ ));
+ PlaylistsFichier.Add(new XElement("Playlists", playlist));
+
+ XmlWriterSettings settings = new XmlWriterSettings();
+ settings.Indent = true;
+
+ using(TextWriter tw = File.CreateText(XMLFILEPLAYLISTS))
+ {
+ using(XmlWriter writer = XmlWriter.Create(tw, settings))
+ {
+ PlaylistsFichier.Save(writer);
+ }
+ }
+ }
+
public void LoadArtists()
{
- XDocument ArtistsFile = XDocument.Load("artists.xml");
- artists = ArtistsFile.Descendants("artist")
- .Select(eltArtist => new Artist(
- eltArtist.Attribute("Name")!.Value
- )).ToList();
+ if (!File.Exists(Path.Combine(XMLPATH + XMLFILEARTISTS)))
+ {
+ XDocument ArtistFile = new XDocument();
+ Artist a1 = new Artist("a1");
+ Artist a2 = new Artist("a2");
+
+ artists.Add(a1);
+ artists.Add(a2);
+
+ var artist = artists.Select(artist => new XElement("Artist",
+ new XAttribute("Name", artist.Name)
+ ));
+
+ ArtistFile.Add(new XElement("Artists", artist));
+
+ XmlWriterSettings settings = new XmlWriterSettings();
+ settings.Indent = true;
+ using (TextWriter tw = File.CreateText(Path.Combine(XMLPATH + XMLFILEARTISTS)))
+ {
+ using (XmlWriter writer = XmlWriter.Create(tw, settings))
+ {
+ ArtistFile.Save(writer);
+ }
+ }
+ }
+
+ XDocument ArtistsFile = XDocument.Load(Path.Combine(XMLPATH, XMLFILEARTISTS));
+ artists = ArtistsFile.Descendants("Artist")
+ .Select(eltArtist => new Artist(
+ eltArtist.Attribute("Name")!.Value
+ )).ToList();
+
+ }
- }
-
public void SaveArtists()
{
+ Directory.SetCurrentDirectory(XMLPATH);
XDocument ArtistsFile = new XDocument();
- var artist = artists.Select(artist => new XElement("artist",
+ var artist = artists.Select(artist => new XElement("Artist",
new XAttribute("Name", artist.Name)
));
- }
-}
+
+ ArtistsFile.Add(new XElement("Artists", artist));
+
+ XmlWriterSettings settings = new XmlWriterSettings();
+ settings.Indent = true;
+
+ using (TextWriter tw = File.CreateText(XMLFILEARTISTS))
+ {
+ using (XmlWriter writer = XmlWriter.Create(tw, settings))
+ {
+ ArtistsFile.Save(writer);
+ }
+ }
+
+ }
+
+ public void LoadCustomTitles()
+ {
+ if (!File.Exists(Path.Combine(XMLPATH + XMLFILECUSTOMS)))
+ {
+ using (Stream s = File.Create(Path.Combine(XMLPATH, XMLFILECUSTOMS)))
+ {
+ XmlSerializer xmlSerializer = new XmlSerializer(typeof(CustomTitle));
+ XmlWriterSettings settings = new XmlWriterSettings();
+ settings.Indent = true;
+ xmlSerializer.Serialize(XmlWriter.Create(s, settings), new CustomTitle("test1","url1.png","info1","path1"));
+ }
+ }
+ XDocument CustomsFile = XDocument.Load(Path.Combine(XMLPATH, XMLFILECUSTOMS));
+
+ customTitles = CustomsFile.Descendants("CustomTitle")
+ .Select(eltPlaylist => new CustomTitle(
+ eltPlaylist.Attribute("Name")!.Value,
+ eltPlaylist.Element("ImageURL")!.Value,
+ eltPlaylist.Element("Information")!.Value,
+ eltPlaylist.Element("Path")!.Value
+ )).ToList();
+ }
+
+ public void SaveCustomTitles()
+ {
+ Directory.SetCurrentDirectory(XMLPATH);
+ XDocument CustomsFile = new XDocument();
+
+ var customs = customTitles.Select(custom => new XElement("CustomTitle",
+ new XAttribute("Name", custom.Name),
+ new XElement("ImageURL", custom.ImageURL),
+ new XElement("Information", custom.Information),
+ new XElement("Path", custom.Path)
+ ));
+
+ CustomsFile.Add(new XElement("Customs", customs));
+
+ XmlWriterSettings settings = new XmlWriterSettings();
+ settings.Indent = true;
+
+ using (TextWriter tw = File.CreateText(XMLFILECUSTOMS))
+ {
+ using (XmlWriter writer = XmlWriter.Create(tw, settings))
+ {
+ CustomsFile.Save(writer);
+ }
+ }
+ }
+
+ public void LoadAlbums()
+ {
+ if (!File.Exists(Path.Combine(XMLPATH + XMLFILEALBUMS)))
+ {
+ XDocument AlbumFile = new XDocument();
+ Album a1 = new Album();
+ albums.Add(a1);
+
+ var album = albums.Select(p => new XElement("Album",
+ new XAttribute("Name", p.Name),
+ new XElement("ImageURL", p.ImageURL),
+ new XElement("Artist", p.Titles.Count() > 0 ? p.Titles.Select(a => a.Name).Aggregate((artistName, nextArtist) => artistName + " " + nextArtist) : ""),
+ new XElement("Description", p.Description),
+ new XElement("Information", p.Information),
+ new XElement("Titles", p.Titles.Count() > 0 ? p.Titles.Select(a => a.ImageURL).Aggregate((albumUrl, nextAlbum) => albumUrl + " " + nextAlbum) : "")
+ ));
+
+ AlbumFile.Add(new XElement("Albums", album));
+
+ XmlWriterSettings settings = new XmlWriterSettings();
+ settings.Indent = true;
+ using (TextWriter tw = File.CreateText(Path.Combine(XMLPATH + XMLFILEALBUMS)))
+ {
+ using (XmlWriter writer = XmlWriter.Create(tw, settings))
+ {
+ AlbumFile.Save(writer);
+ }
+ }
+ }
+ XDocument AlbumsFile = XDocument.Load(Path.Combine(XMLPATH, XMLFILEALBUMS));
+
+ albums = AlbumsFile.Descendants("Album")
+ .Select(eltPlaylist => new Album(
+ eltPlaylist.Attribute("Name")!.Value,
+ eltPlaylist.Element("ImageURL")!.Value,
+ GetArtistByName(eltPlaylist.Element("Artist")!.Value) != null ? GetArtistByName(eltPlaylist.Element("Artist")!.Value) : new Artist("Unknown"),
+ eltPlaylist.Element("Description")!.Value,
+ eltPlaylist.Element("Information")!.Value
+ )).ToList();
+
+ foreach (Album a in albums)
+ {
+ var title = AlbumsFile.Descendants("Album")
+ .Single(ct => ct.Attribute("Name")?.Value == a.Name)
+ .Element("Titles")!.ToString();
+ if (title == null)
+ {
+ continue;
+ }
+
+ InfoTitle? infoTitle = GetInfoTitleByUrl(title);
+
+ if (infoTitle == null)
+ {
+ continue;
+ }
+
+ a.AddTitle(infoTitle);
+ }
+ }
+
+ public void SaveAlbums()
+ {
+ Directory.SetCurrentDirectory(XMLPATH);
+ XDocument AlbumsFile = new XDocument();
+
+ var album = albums.Select(a => new XElement("Album",
+ new XAttribute("Name", a.Name),
+ new XElement("ImageURL", a.ImageURL),
+ new XElement("Artist", a.Artist.Name),
+ new XElement("Description", a.Description),
+ new XElement("Information", a.Information),
+ new XElement("Titles", a.Titles.Count() > 0 ? a.Titles.Select(p => p.ImageURL).Aggregate((albumUrl, nextAlbum) => albumUrl + " " + nextAlbum) : "")
+ ));
+ AlbumsFile.Add(new XElement("Albums", album));
+
+ XmlWriterSettings settings = new XmlWriterSettings();
+ settings.Indent = true;
+
+ using (TextWriter tw = File.CreateText(XMLFILEALBUMS))
+ {
+ using (XmlWriter writer = XmlWriter.Create(tw, settings))
+ {
+ AlbumsFile.Save(writer);
+ }
+ }
+ }
+
+ public void LoadInfoTitles()
+ {
+ if (!File.Exists(Path.Combine(XMLPATH + XMLFILEINFOS)))
+ {
+ XDocument InfoFile = new XDocument();
+ InfoTitle it1 = new InfoTitle();
+ infoTitles.Add(it1);
+
+ var infoTitle = infoTitles.Select(p => new XElement("InfoTitle",
+ new XAttribute("Name", p.Name),
+ new XElement("ImageURL", p.ImageURL),
+ new XElement("Information", p.Information),
+ new XElement("Feats", p.Feat.Count() > 0 ? p.Feat.Select(a => a.Name).Aggregate((artistName, nextArtist) => artistName + " " + nextArtist) : ""),
+ new XElement("Description", p.Description),
+ new XElement("Genre", p.Genre)
+ ));
+
+ InfoFile.Add(new XElement("InfoTitles", infoTitle));
+
+ XmlWriterSettings settings = new XmlWriterSettings();
+ settings.Indent = true;
+ using (TextWriter tw = File.CreateText(Path.Combine(XMLPATH + XMLFILEINFOS)))
+ {
+ using (XmlWriter writer = XmlWriter.Create(tw, settings))
+ {
+ InfoFile.Save(writer);
+ }
+ }
+ }
+ XDocument InfosFile = XDocument.Load(Path.Combine(XMLPATH, XMLFILEINFOS));
+
+ infoTitles = InfosFile.Descendants("InfoTitle")
+ .Select(eltPlaylist => new InfoTitle(
+ eltPlaylist.Attribute("Name")!.Value,
+ eltPlaylist.Element("ImageURL")!.Value,
+ eltPlaylist.Element("Information")!.Value,
+ GetArtistByName(eltPlaylist.Element("Feats")!.Value),
+ eltPlaylist.Element("Description")!.Value,
+ GetGenreByName(eltPlaylist.Element("Genre")!.Value)
+ )).ToList();
+ foreach (InfoTitle it in infoTitles)
+ {
+ var feat = InfosFile.Descendants("InfoTitle")
+ .Single(infot => infot.Attribute("Name")?.Value == it.Name)
+ .Element("Feats")!.ToString();
+ if (feat == null)
+ {
+ continue;
+ }
+
+ Artist? Feat = GetArtistByName(feat);
+
+ if (Feat == null)
+ {
+ continue;
+ }
+
+ it.AddFeat(Feat);
+ }
+ }
+
+ public void SaveInfoTitles()
+ {
+ Directory.SetCurrentDirectory(XMLPATH);
+ XDocument InfosFile = new XDocument();
+
+ var info = infoTitles.Select(it => new XElement("InfoTitle",
+ new XAttribute("Name", it.Name),
+ new XElement("ImageURL", it.ImageURL),
+ new XElement("Information", it.Information),
+ new XElement("Genre", it.Genre.ToString()),
+ new XElement("Description", it.Description),
+ new XElement("Feats", it.Feat.Count() > 0 ? it.Feat.Select(p => p.Name).Aggregate((featName, nextFeat) => featName + " " + nextFeat) : "")
+ ));
+ InfosFile.Add(new XElement("InfoTitles", info));
+
+ XmlWriterSettings settings = new XmlWriterSettings();
+ settings.Indent = true;
+
+ using (TextWriter tw = File.CreateText(XMLFILEINFOS))
+ {
+ using (XmlWriter writer = XmlWriter.Create(tw, settings))
+ {
+ InfosFile.Save(writer);
+ }
+ }
+ }
+ public Genre GetGenreByName(string genre)
+ {
+ if (genre == "HIP_HOP") return Genre.HIP_HOP;
+ if (genre == "POP") return Genre.POP;
+ if (genre == "ROCK") return Genre.ROCK;
+ if (genre == "ELECTRO") return Genre.ELECTRO;
+ if (genre == "CLASSIQUE") return Genre.CLASSIQUE;
+ if (genre == "JAZZ") return Genre.JAZZ;
+ if (genre == "VARIETE_FRANCAISE") return Genre.VARIETE_FRANCAISE;
+ if (genre == "VARIETE_INTERNATIONALE") return Genre.VARIETE_INTERNATIONALE;
+ if (genre == "REGGAE") return Genre.REGGAE;
+ if (genre == "RAP") return Genre.RAP;
+ if (genre == "RNB") return Genre.RNB;
+ if (genre == "DISCO") return Genre.DISCO;
+ if (genre == "BLUES") return Genre.BLUES;
+ if (genre == "COUNTRY") return Genre.COUNTRY;
+ if (genre == "FUNK") return Genre.FUNK;
+ if (genre == "GOSPEL") return Genre.GOSPEL;
+ if (genre == "METAL") return Genre.METAL;
+ else return Genre.K_POP;
+ }
+
+ public InfoTitle? GetInfoTitleByUrl(string infoUrl)
+ {
+ foreach(InfoTitle it in infoTitles)
+ {
+ if (it.Name == infoUrl)
+ {
+ return it;
+ }
+ }
+ return null;
+ }
+
+ public Artist? GetArtistByName(string artist)
+ {
+ foreach(Artist a in artists)
+ {
+ if (a.Name == artist)
+ {
+ return a;
+ }
+ }
+ return null;
+ }
+
+ public Album? GetAlbumByUrl(string album)
+ {
+ foreach(Album a in albums)
+ {
+ if (a.ImageURL == album)
+ {
+ return a;
+ }
+ }
+ return null;
+ }
+
+ public CustomTitle? GetCustomTitleByUrl(string custom)
+ {
+ foreach(CustomTitle customTitle in customTitles)
+ {
+ if(customTitle.Name == custom)
+ {
+ return customTitle;
+ }
+ }
+ return null;
+ }
+}
diff --git a/Sources/Model/Stub/StubAlbum.cs b/Sources/Model/Stub/StubAlbum.cs
index 87de42e..9c61a5d 100644
--- a/Sources/Model/Stub/StubAlbum.cs
+++ b/Sources/Model/Stub/StubAlbum.cs
@@ -4,12 +4,15 @@ namespace Model.Stub;
public class StubAlbum
{
- public List Artists
+ public StubArtist StubArtist
{
- get => artists;
+ get
+ {
+ return stubArtist;
+ }
}
- private List artists;
+ private StubArtist stubArtist;
public List Albums
{
@@ -20,38 +23,39 @@ public class StubAlbum
public StubAlbum()
{
- albums = new List();
- StubArtist stubArtist = new StubArtist();
- artists = stubArtist.GetArtists();
- Artist? Artist1 = Artists.FirstOrDefault(a => a.Name == "Critien");
- if (Artist1 != null)
- {
- Album Album1 = new Album("la street", "lastreet.png", Artist1, "c'est la street", "plein d'infos1");
- Album Album2 = new Album("la jsp", "oui.png", Artist1, "c'est la couri", "plein d'infos2");
- albums.Add(Album1);
- albums.Add(Album2);
- }
- Artist? Artist2 = Artists.FirstOrDefault(a => a.Name == "Gouriet");
- if (Artist2 != null)
- {
+ stubArtist = new StubArtist();
- }
- Artist? Artist3 = Artists.FirstOrDefault(a => a.Name == "Poulifer");
- if (Artist3 != null)
- {
- Album Album3 = new Album("la pas le temps", "non.png", Artist3, "c'est pas la street", "plein d'infos3");
- albums.Add(Album3);
- }
- Artist? Artist4 = Artists.FirstOrDefault(a => a.Name == "Credian");
- if (Artist4 != null)
+ Album Album1 = new Album("la street", "lastreet.png", StubArtist.GetArtistByName("Critien"), "c'est la street", "plein d'infos1");
+ Album Album2 = new Album("la jsp", "oui.png", StubArtist.GetArtistByName("Critien"), "c'est la couri", "plein d'infos2");
+ Album Album3 = new Album("la pas le temps", "non.png", StubArtist.GetArtistByName("Poulifer"), "c'est pas la street", "plein d'infos3");
+ Album Album4 = new Album("la pas le choix", "peutetre.png", StubArtist.GetArtistByName("Credian"), "c'est la parterre", "plein d'infos4");
+ albums = new List()
{
- Album Album4 = new Album("la pas le choix", "peutetre.png", Artist4, "c'est la parterre", "plein d'infos4");
- albums.Add(Album4);
- }
+ Album1, Album2, Album3, Album4
+ };
}
public List GetAlbums()
{
return albums;
}
+ public Album? GetAlbumByUrl(string url)
+ {
+ foreach(Album album in albums)
+ {
+ if (url == album.ImageURL)
+ {
+ return album;
+ }
+ }
+ return null;
+ }
+ public void AddAlbum(Album album)
+ {
+ albums.Add(album);
+ }
+ public void RemoveAlbum(Album album)
+ {
+ albums.Remove(album);
+ }
}
diff --git a/Sources/Model/Stub/StubArtist.cs b/Sources/Model/Stub/StubArtist.cs
index d7bc027..9634124 100644
--- a/Sources/Model/Stub/StubArtist.cs
+++ b/Sources/Model/Stub/StubArtist.cs
@@ -16,11 +16,6 @@ public class StubArtist
Artist Artiste3 = new Artist("Poulifer");
Artist Artiste4 = new Artist("Credian");
- /*Artiste1.AddAlbum(Album1);
- Artiste1.AddAlbum(Album2);
- Artiste2.AddAlbum(Album3);
- Artiste2.AddAlbum(Album4);*/
-
artists = new List()
{
Artiste1, Artiste2, Artiste3, Artiste4
@@ -31,4 +26,23 @@ public class StubArtist
{
return artists;
}
+ public Artist? GetArtistByName(string name)
+ {
+ foreach (var artist in artists)
+ {
+ if (artist.Name == name)
+ {
+ return artist;
+ }
+ }
+ return null;
+ }
+ public void AddArtist(Artist artist)
+ {
+ artists.Add(artist);
+ }
+ public void RemoveArtist(Artist artist)
+ {
+ artists.Remove(artist);
+ }
}
diff --git a/Sources/Model/Stub/StubCustomTitle.cs b/Sources/Model/Stub/StubCustomTitle.cs
index 0137ae2..e8a7cbc 100644
--- a/Sources/Model/Stub/StubCustomTitle.cs
+++ b/Sources/Model/Stub/StubCustomTitle.cs
@@ -25,4 +25,27 @@ public class StubCustomTitle
{
return customTitles;
}
+ public List GetCustomTitlesByUrl(List urls)
+ {
+ List Customs = new List();
+ foreach(var url in urls)
+ {
+ foreach (var title in customTitles)
+ {
+ if (url == title.ImageURL)
+ {
+ Customs.Add(title);
+ }
+ }
+ }
+ return Customs;
+ }
+ public void AddCustomTitle(CustomTitle customTitle)
+ {
+ customTitles.Add(customTitle);
+ }
+ public void RemoveCustomTitle(CustomTitle customTitle)
+ {
+ customTitles.Remove(customTitle);
+ }
}
diff --git a/Sources/Model/Stub/StubInfoTitle.cs b/Sources/Model/Stub/StubInfoTitle.cs
index 7dba94d..3854697 100644
--- a/Sources/Model/Stub/StubInfoTitle.cs
+++ b/Sources/Model/Stub/StubInfoTitle.cs
@@ -3,12 +3,15 @@
public class StubInfoTitle
{
- public List Artists
+ public StubArtist StubArtist
{
- get => artists;
+ get
+ {
+ return stubArtist;
+ }
}
- private List artists;
+ private StubArtist stubArtist;
public List InfoTitles
{
@@ -19,39 +22,50 @@ public class StubInfoTitle
public StubInfoTitle()
{
- infoTitles = new List();
- StubArtist stubArtist = new StubArtist();
- artists = stubArtist.GetArtists();
-
- Artist? Artist1 = Artists.FirstOrDefault(a => a.Name == "Critien");
- if (Artist1 != null)
- {
-
- }
-
- Artist? Artist2 = Artists.FirstOrDefault(a => a.Name == "Gouriets");
- if (Artist2 != null)
- {
- InfoTitle InfoTitle1 = new InfoTitle("info1", "url1.png", "info1", Artist2, "desc1", Genre.K_POP);
- infoTitles.Add(InfoTitle1);
- }
+ stubArtist = new StubArtist();
- Artist? Artist3 = Artists.FirstOrDefault(a => a.Name == "Poulifer");
- if (Artist3 != null)
- {
- InfoTitle InfoTitle2 = new InfoTitle("info2", "url2.png", "info2", Artist3, "desc2", Genre.GOSPEL);
- infoTitles.Add(InfoTitle2);
- }
+ InfoTitle InfoTitle1 = new InfoTitle("info1", "url1.png", "info1", StubArtist.GetArtistByName("Gouriet"), "desc1", Genre.K_POP);
+ InfoTitle InfoTitle2 = new InfoTitle("info2", "url2.png", "info2", StubArtist.GetArtistByName("Poulifer"), "desc2", Genre.GOSPEL);
- Artist? Artist4 = Artists.FirstOrDefault(a => a.Name == "Credian");
- if (Artist4 != null)
+ infoTitles = new List()
{
-
- }
+ InfoTitle1, InfoTitle2
+ };
}
public List GetInfoTitles()
{
return infoTitles;
}
+ public List GetInfoTitlesByUrl(List urls)
+ {
+ List infos = new List();
+ foreach(var url in urls)
+ {
+ foreach(var titles in infoTitles)
+ {
+ if (url == titles.ImageURL)
+ {
+ infos.Add(titles);
+ }
+ }
+ }
+ return infos;
+ }
+ public void AddInfoTitle(InfoTitle title)
+ {
+ infoTitles.Add(title);
+ }
+ public void RemoveInfoTitle(InfoTitle title)
+ {
+ infoTitles.Remove(title);
+ }
+ public void AddFeat(InfoTitle infoTitle, Artist artist)
+ {
+ infoTitle.AddFeat(artist);
+ }
+ public void RemoveFeat(InfoTitle infoTitle, Artist artist)
+ {
+ infoTitle.RemoveFeat(artist);
+ }
}
diff --git a/Sources/Model/Stub/StubManager.cs b/Sources/Model/Stub/StubManager.cs
index c772bd1..938aef7 100644
--- a/Sources/Model/Stub/StubManager.cs
+++ b/Sources/Model/Stub/StubManager.cs
@@ -3,240 +3,203 @@
public class StubManager : IDataManager
{
- private List artists;
+ // Dictionaries
- public IEnumerable Artists
+ IDictionary> DictAlbumInfo
{
get
{
- return artists.ToList();
+ return dictAlbumInfo;
}
}
- private List albums;
+ Dictionary> dictAlbumInfo;
- public IEnumerable Albums
+ IDictionary> DictPlaylistTitles
{
get
{
- return albums.ToList();
+ return dictPlaylistTitles;
}
}
- private List playlists;
+ Dictionary> dictPlaylistTitles;
- public IEnumerable Playlists
+ // Stubs
+
+ public StubAlbum StubAlbum
{
get
{
- return playlists.ToList();
+ return stubAlbum;
}
}
- private List infoTitles;
+ private StubAlbum stubAlbum;
- public IEnumerable InfoTitles
+ public StubArtist StubArtist
{
get
{
- return infoTitles.ToList();
+ return stubArtist;
}
}
- private List customTitles;
+ private StubArtist stubArtist;
- public IEnumerable CustomTitles
+ public StubCustomTitle StubCustomTitle
{
get
{
- return customTitles.ToList();
+ return stubCustomTitle;
}
}
- public StubManager()
- {
- StubAlbum stubAlbum = new StubAlbum();
- albums = stubAlbum.GetAlbums();
-
- StubPlaylist stubPlaylist = new StubPlaylist();
- playlists = stubPlaylist.GetPlaylists();
-
- StubArtist stubArtist = new StubArtist();
- artists = stubArtist.GetArtists();
-
- StubInfoTitle stubInfoTitle = new StubInfoTitle();
- infoTitles = stubInfoTitle.GetInfoTitles();
-
- StubCustomTitle stubCustomTitle = new StubCustomTitle();
- customTitles = stubCustomTitle.GetCustomTitles();
-
- Artist? Artist1 = Artists.FirstOrDefault(a => a.Name == "Critien");
- Artist? Artist2 = Artists.FirstOrDefault(a => a.Name == "Gouriet");
- Artist? Artist3 = Artists.FirstOrDefault(a => a.Name == "Poulifer");
- Artist? Artist4 = Artists.FirstOrDefault(a => a.Name == "Credian");
-
- Album? Album1 = Albums.FirstOrDefault(a => a.Name == "la street");
- Album? Album2 = Albums.FirstOrDefault(a => a.Name == "la jsp");
- Album? Album3 = Albums.FirstOrDefault(a => a.Name == "la pas le temps");
- Album? Album4 = Albums.FirstOrDefault(a => a.Name == "la pas le choix");
+ private StubCustomTitle stubCustomTitle;
- Playlist? Playlist1 = Playlists.FirstOrDefault(a => a.Name == "Playlist1");
- Playlist? Playlist2 = Playlists.FirstOrDefault(a => a.Name == "Playlist2");
-
- CustomTitle? CustomTitle1 = CustomTitles.FirstOrDefault(a => a.Name == "MaMusique");
- CustomTitle? CustomTitle2 = CustomTitles.FirstOrDefault(a => a.Name == "MusiqueGeniale");
- CustomTitle? CustomTitle3 = CustomTitles.FirstOrDefault(a => a.Name == "custom3");
-
- InfoTitle? InfoTitle1 = InfoTitles.FirstOrDefault(a => a.Name == "info1");
- InfoTitle? InfoTitle2 = InfoTitles.FirstOrDefault(a => a.Name == "info2");
-
- if (Artist1 != null)
- {
- if (Album1 != null) {
- Artist1.AddAlbum(Album1);
- }
- if(Album2 != null)
- {
- Artist1.AddAlbum(Album2);
- }
- }
- if (Artist2 != null)
+ public StubInfoTitle StubInfoTitle
+ {
+ get
{
- if(Album3 != null)
- {
- Artist2.AddAlbum(Album3);
- }
- if(Album4 != null)
- {
- Artist2.AddAlbum(Album4);
- }
+ return stubInfoTitle;
}
+ }
- if (Playlist1 != null)
- {
- if (CustomTitle1 != null)
- {
- Playlist1.AddTitle(CustomTitle1);
- }
- if (CustomTitle2 != null)
- {
- Playlist1.AddTitle(CustomTitle2);
- }
- }
- if (Playlist2 != null)
- {
- if(CustomTitle2 != null)
- {
- Playlist2.AddTitle(CustomTitle2);
- }
- if(CustomTitle3 != null)
- {
- Playlist2.AddTitle(CustomTitle3);
- }
- }
+ private StubInfoTitle stubInfoTitle;
- if (Album1 != null)
- {
- if(InfoTitle1 != null)
- {
- Album1.AddTitle(InfoTitle1);
- }
- if(InfoTitle2 != null)
- {
- Album1.AddTitle(InfoTitle2);
- }
- }
- if (Album2 != null && InfoTitle2 != null)
+ public StubPlaylist StubPlaylist
+ {
+ get
{
- Album2.AddTitle(InfoTitle2);
+ return stubPlaylist;
}
+ }
+
+ private StubPlaylist stubPlaylist;
+
+ public StubManager()
+ {
+ dictAlbumInfo = new Dictionary>();
+ dictPlaylistTitles = new Dictionary>();
+ stubAlbum = new StubAlbum();
+ stubArtist = new StubArtist();
+ 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()
{
- return albums;
+ return StubAlbum.GetAlbums();
}
public List GetArtists()
{
- return artists;
+ return StubArtist.GetArtists();
}
public List GetPlaylists()
{
- return playlists;
+ return StubPlaylist.GetPlaylists();
}
public List GetCustomTitles()
{
- return customTitles;
+ return StubCustomTitle.GetCustomTitles();
}
public List GetInfoTitles()
{
- return infoTitles;
+ return StubInfoTitle.GetInfoTitles();
}
public void AddAlbum(Album album)
{
- albums.Add(album);
+ StubAlbum.AddAlbum(album);
}
public void AddCustomTitle(CustomTitle title)
{
- customTitles.Add(title);
+ StubCustomTitle.AddCustomTitle(title);
}
public void AddInfoTitle(InfoTitle title)
{
- infoTitles.Add(title);
+ StubInfoTitle.AddInfoTitle(title);
+ }
+
+ public void AddFeat(InfoTitle infoTitle, Artist artist)
+ {
+ StubInfoTitle.AddFeat(infoTitle, artist);
}
public void AddPlaylist(Playlist playlist)
{
- playlists.Add(playlist);
+ StubPlaylist.AddPlaylist(playlist);
}
public void AddArtist(Artist artist)
{
- artists.Add(artist);
+ StubArtist.AddArtist(artist);
}
public void RemoveAlbum(Album album)
{
- albums.Remove(album);
+ StubAlbum.RemoveAlbum(album);
}
public void RemoveCustomTitle(CustomTitle title)
{
- customTitles.Remove(title);
+ StubCustomTitle.RemoveCustomTitle(title);
}
public void RemoveInfoTitle(InfoTitle title)
{
- infoTitles.Remove(title);
+ StubInfoTitle.RemoveInfoTitle(title);
}
public void RemovePlaylist(Playlist playlist)
{
- playlists.Remove(playlist);
+ StubPlaylist.RemovePlaylist(playlist);
}
public void RemoveArtist(Artist artist)
{
- artists.Remove(artist);
+ StubArtist.RemoveArtist(artist);
}
- public void LoadPlaylists()
+
+
+
+
+ public void LoadSerialization()
{
return;
}
- public void SavePlaylists()
+ public void SaveSerialization()
{
return;
}
+
+ public CustomTitle? GetCustomTitleByUrl(string custom)
+ {
+ foreach (CustomTitle customTitle in StubCustomTitle.GetCustomTitles())
+ {
+ if (customTitle.Name == custom)
+ {
+ return customTitle;
+ }
+ }
+ return null;
+ }
}
diff --git a/Sources/Model/Stub/StubPlaylist.cs b/Sources/Model/Stub/StubPlaylist.cs
index 6bed9f2..9c11fbb 100644
--- a/Sources/Model/Stub/StubPlaylist.cs
+++ b/Sources/Model/Stub/StubPlaylist.cs
@@ -24,4 +24,23 @@ public class StubPlaylist
{
return playlists;
}
+ public Playlist? GetPlaylistByUrl(string url)
+ {
+ foreach(var playlist in playlists)
+ {
+ if (playlist.ImageURL == url)
+ {
+ return playlist;
+ }
+ }
+ return null;
+ }
+ public void AddPlaylist(Playlist playlist)
+ {
+ playlists.Add(playlist);
+ }
+ public void RemovePlaylist(Playlist playlist)
+ {
+ playlists.Remove(playlist);
+ }
}
diff --git a/Sources/Model/Title.cs b/Sources/Model/Title.cs
index 0410f66..bc297a8 100644
--- a/Sources/Model/Title.cs
+++ b/Sources/Model/Title.cs
@@ -1,4 +1,7 @@
-namespace Model
+using Model.Stub;
+using System.Xml.Serialization;
+
+namespace Model
{
public class Title
{
@@ -8,14 +11,14 @@
set
{
- if (value != null && value.Length < 75)
+ if (value != null && value.Length < Manager.MAX_NAME_LENGTH)
{
name = value;
}
}
}
- private string name = "Unknown";
+ private string name = Manager.DEFAULT_NAME;
public string ImageURL
{
@@ -30,7 +33,7 @@
}
}
- private string imageURL = "none.png";
+ private string imageURL = Manager.DEFAULT_URL;
public string Information
{
@@ -38,14 +41,14 @@
set
{
- if (value != null && value.Length < 500)
+ if (value != null && value.Length < Manager.MAX_DESCRIPTION_LENGTH)
{
information = value;
}
}
}
- private string information ="";
+ private string information = Manager.DEFAULT_DESC;
public Title(string nom, string file_Name, string informations)
{
@@ -54,5 +57,22 @@
Information = informations;
}
+ public override bool Equals(object? obj)
+ {
+ if (obj is null) return false;
+ if (obj.GetType() != typeof(Title)) return false;
+ if (obj is Title title && ImageURL == title.ImageURL) return true;
+ else return false;
+ }
+
+ public override int GetHashCode()
+ {
+ return ImageURL.GetHashCode();
+ }
+
+ public override string ToString()
+ {
+ return $"Name : {Name}";
+ }
}
}