Serialization coded and a little bit optimized

pull/22/head
Corentin LEMAIRE 2 years ago
parent ed203a9997
commit c104cf1758

@ -11,4 +11,8 @@
<ProjectReference Include="..\Model\Model.csproj" />
</ItemGroup>
<ItemGroup>
<Folder Include="xml\" />
</ItemGroup>
</Project>

@ -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();

@ -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<Title> titles = new List<Title>();
@ -38,7 +43,7 @@
{
get
{
return titles.ToList();
return new List<Title>(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}";
}
}
}

@ -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<Album> albums = new List<Album>();
public Artist(string name)
{
Name = name;
}
public Artist()
{
public IEnumerable<Album> 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}";
}
}

@ -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}";
}
}

@ -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
}

@ -12,28 +12,30 @@ public interface IDataManager
List<Playlist> 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();
}

@ -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<Artist> feat = new List<Artist>();
public IEnumerable<Artist> 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<Artist> feat = new List<Artist>();
public IEnumerable<Artist> 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}";
}
}

@ -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<Album> albums = new List<Album>();
@ -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<Playlist> GetPlaylists()
{
return DataManager.GetPlaylists();
}
public IEnumerable<Album> GetAlbums()
{
return DataManager.GetAlbums();
@ -133,4 +154,14 @@ public class Manager
return DataManager.GetArtists();
}
public void LoadSerialization()
{
DataManager.LoadSerialization();
}
public void SaveSerialization()
{
DataManager.SaveSerialization();
}
}

@ -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<Title> morceaux = new List<Title>();
@ -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}";
}
}

@ -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<Artist> artists;
public IEnumerable<Artist> Artists
{
get
{
return artists.ToList();
}
}
private List<Album> albums;
public IEnumerable<Album> Albums
{
get
{
return albums.ToList();
}
}
private List<Playlist> playlists;
public IEnumerable<Playlist> Playlists
{
get
{
return playlists.ToList();
}
}
private List<InfoTitle> infoTitles;
public IEnumerable<InfoTitle> InfoTitles
{
get
{
return infoTitles.ToList();
}
}
private List<CustomTitle> customTitles;
public IEnumerable<CustomTitle> CustomTitles
{
get
{
return customTitles.ToList();
}
}
public LINQ_XML_Serialization()
{
playlists = new List<Playlist>();
artists = new List<Artist>();
albums = new List<Album>();
infoTitles = new List<InfoTitle>();
customTitles = new List<CustomTitle>();
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<Album> GetAlbums()
{
return albums;
}
public List<Artist> GetArtists()
{
return artists;
}
public List<CustomTitle> GetCustomTitles()
{
return customTitles;
}
public List<InfoTitle> GetInfoTitles()
{
return infoTitles;
}
public List<Playlist> 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<Artist> artists;
public IEnumerable<Artist> Artists
{
get
{
return artists.ToList();
}
}
private List<Album> albums;
public IEnumerable<Album> Albums
{
get
{
return albums.ToList();
}
}
private List<Playlist> playlists;
public IEnumerable<Playlist> Playlists
{
get
{
return playlists.ToList();
}
}
private List<InfoTitle> infoTitles;
public IEnumerable<InfoTitle> InfoTitles
{
get
{
return infoTitles.ToList();
}
}
private List<CustomTitle> customTitles;
public IEnumerable<CustomTitle> CustomTitles
{
get
{
return customTitles.ToList();
}
}
public LINQ_XML_Serialization()
{
playlists = new List<Playlist>();
artists = new List<Artist>();
albums = new List<Album>();
infoTitles = new List<InfoTitle>();
customTitles = new List<CustomTitle>();
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<Album> GetAlbums()
{
return albums;
}
public List<Artist> GetArtists()
{
return artists;
}
public List<CustomTitle> GetCustomTitles()
{
return customTitles;
}
public List<InfoTitle> GetInfoTitles()
{
return infoTitles;
}
public List<Playlist> 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;
}
}

@ -4,12 +4,15 @@ namespace Model.Stub;
public class StubAlbum
{
public List<Artist> Artists
public StubArtist StubArtist
{
get => artists;
get
{
return stubArtist;
}
}
private List<Artist> artists;
private StubArtist stubArtist;
public List<Album> Albums
{
@ -20,38 +23,39 @@ public class StubAlbum
public StubAlbum()
{
albums = new List<Album>();
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>()
{
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<Album> 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);
}
}

@ -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<Artist>()
{
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);
}
}

@ -25,4 +25,27 @@ public class StubCustomTitle
{
return customTitles;
}
public List<CustomTitle> GetCustomTitlesByUrl(List<string> urls)
{
List<CustomTitle> Customs = new List<CustomTitle>();
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);
}
}

@ -3,12 +3,15 @@
public class StubInfoTitle
{
public List<Artist> Artists
public StubArtist StubArtist
{
get => artists;
get
{
return stubArtist;
}
}
private List<Artist> artists;
private StubArtist stubArtist;
public List<InfoTitle> InfoTitles
{
@ -19,39 +22,50 @@ public class StubInfoTitle
public StubInfoTitle()
{
infoTitles = new List<InfoTitle>();
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<InfoTitle>()
{
}
InfoTitle1, InfoTitle2
};
}
public List<InfoTitle> GetInfoTitles()
{
return infoTitles;
}
public List<InfoTitle> GetInfoTitlesByUrl(List<string> urls)
{
List<InfoTitle> infos = new List<InfoTitle>();
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);
}
}

@ -3,240 +3,203 @@
public class StubManager : IDataManager
{
private List<Artist> artists;
// Dictionaries
public IEnumerable<Artist> Artists
IDictionary<Album, List<InfoTitle>> DictAlbumInfo
{
get
{
return artists.ToList();
return dictAlbumInfo;
}
}
private List<Album> albums;
Dictionary<Album, List<InfoTitle>> dictAlbumInfo;
public IEnumerable<Album> Albums
IDictionary<Playlist, List<CustomTitle>> DictPlaylistTitles
{
get
{
return albums.ToList();
return dictPlaylistTitles;
}
}
private List<Playlist> playlists;
Dictionary<Playlist, List<CustomTitle>> dictPlaylistTitles;
public IEnumerable<Playlist> Playlists
// Stubs
public StubAlbum StubAlbum
{
get
{
return playlists.ToList();
return stubAlbum;
}
}
private List<InfoTitle> infoTitles;
private StubAlbum stubAlbum;
public IEnumerable<InfoTitle> InfoTitles
public StubArtist StubArtist
{
get
{
return infoTitles.ToList();
return stubArtist;
}
}
private List<CustomTitle> customTitles;
private StubArtist stubArtist;
public IEnumerable<CustomTitle> 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<Album, List<InfoTitle>>();
dictPlaylistTitles = new Dictionary<Playlist, List<CustomTitle>>();
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<string>() { "url1.png", "url2.png" }));
dictAlbumInfo.Add(StubAlbum.GetAlbumByUrl("oui.png"), StubInfoTitle.GetInfoTitlesByUrl(new List<string>() { "url2.png" }));
dictPlaylistTitles.Add(StubPlaylist.GetPlaylistByUrl("url1.png"), StubCustomTitle.GetCustomTitlesByUrl(new List<string>() { "url1.png", "url2.png" }));
dictPlaylistTitles.Add(StubPlaylist.GetPlaylistByUrl("url2.png"), StubCustomTitle.GetCustomTitlesByUrl(new List<string>() { "url2.png", "url3.png" }));
}
public List<Album> GetAlbums()
{
return albums;
return StubAlbum.GetAlbums();
}
public List<Artist> GetArtists()
{
return artists;
return StubArtist.GetArtists();
}
public List<Playlist> GetPlaylists()
{
return playlists;
return StubPlaylist.GetPlaylists();
}
public List<CustomTitle> GetCustomTitles()
{
return customTitles;
return StubCustomTitle.GetCustomTitles();
}
public List<InfoTitle> 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;
}
}

@ -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);
}
}

@ -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}";
}
}
}

Loading…
Cancel
Save