|
|
|
@ -0,0 +1,185 @@
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
}
|