![]()
continuous-integration/drone/push Build is passing
Details
|
2 years ago | |
---|---|---|
Images | 2 years ago | |
Sources | 2 years ago | |
.drone.yml | 2 years ago | |
README.md | 2 years ago |
README.md
Linaris_MAUI_SAE_201
Diagramme de classe
@startuml
class Artist {
- string name
+ Artist(string name)
+ boolean Equals(object obj)
+ int GetHashCode()
+ string ToString()
}
class Album {
- string name
- string description
- string imageURL
- string information
+ Album(string name, string file_Name, Artist artist, string description, string information)
+ Album()
+ void AddTitle(Title title)
+ void RemoveTitle(Title title)
+ boolean Equals(object obj)
+ int GetHashCode()
+ string ToString()
}
class Playlist {
- string name
- string description
- string imageURL
- int index = 0
+ boolean shuffle = false
+ boolean loop = false
+ boolean looptitle = false
- List<int> played
+ Playlist(string nom, string description, string imageURL)
+ Playlist()
+ void AddTitle(CustomTitle morceau)
+ void RemoveTitle(CustomTitle morceau)
+ void NextTitle()
+ void PreviousTitle()
+ Title? GetCurrentTitle()
+ boolean Equals(object? obj)
+ int GetHashCode()
+ string ToString()
- int RandomGenerator(int n)
}
class Title {
- string name
- string imageURL
- string information
+ Title(string nom, string file_Name, string informations)
+ boolean Equals(object? obj)
+ int GetHashCode()
+ string ToString()
}
enum Genre
{
HIP_HOP
POP
ROCK
ELECTRO
CLASSIQUE
JAZZ
VARIETE_FRANCAISE
VARIETE_INTERNATIONALE
REGGAE
RAP
RNB
DISCO
BLUES
COUNTRY
FUNK
GOSPEL
METAL
K_POP
}
class CustomTitle {
- string path
+ CustomTitle(string name, string imageURL, string information, string path)
+ CustomTitle()
+ boolean Equals(object? obj)
+ int GetHashCode()
+ string ToString()
}
class InfoTitle {
- string description
- List<Artist> feat
+ InfoTitle(string name, string imageURL, string information, Artist artist, string description, Genre genre)
+ InfoTitle()
+ void AddFeat(Artist artist)
+ void RemoveFeat(Artist artiste)
+ boolean Equals(object? obj)
+ int GetHashCode()
+ string ToString()
}
interface IDataManager {
+ void AddAlbum(Album album)
+ void AddAlbums(List<Album> albumsList)
+ void AddArtist(Artist artist)
+ void AddArtists(List<Artist> artistsList)
+ void AddPlaylist(Playlist playlist)
+ void AddPlaylists(List<Playlist> playlistsList)
+ void AddCustomTitle(CustomTitle title)
+ void AddCustomTitles(List<CustomTitle> customTitlesList)
+ void AddInfoTitle(InfoTitle title)
+ void AddInfoTitles(List<InfoTitle> infoTitlesList)
+ List<CustomTitle> GetCustomTitles()
+ CustomTitle? GetCustomTitleByUrl(string custom)
+ List<InfoTitle> GetInfoTitles()
+ InfoTitle? GetInfoTitleByUrl(string url)
+ List<Album> GetAlbums()
+ Album? GetAlbumByUrl(string url)
+ List<Artist> GetArtists()
+ Artist? GetArtistByName(string name)
+ List<Playlist> GetPlaylists()
+ Playlist? GetPlaylistByUrl(string url)
+ void UpdateCustomTitle(CustomTitle title, string name, string url, string info, string path)
+ void UpdateCustomTitleByUrl(string url, string name, string newUrl, string info, string path)
+ void UpdateInfoTitle(InfoTitle title, string name, string url, string info, Artist artist, string description, Genre genre)
+ void UpdateInfoTitleByName(string url, string name, string newUrl, string info, Artist artist, string description, Genre genre)
+ void UpdateInfoTitleByArtistName(InfoTitle title, string name, string url, string info, string artist, string description, Genre genre)
+ void UpdateInfoTitleByNameByArtistName(string url, string name, string newUrl, string info, string artist, string description, Genre genre)
+ void UpdateAlbum(Album album, string name, string url, Artist artist, string description, string info)
+ void UpdateAlbumByUrl(string url, string name, string newUrl, Artist artist, string description, string info)
+ void UpdateAlbumByArtistName(Album album, string name, string url, string artist, string description, string info)
+ void UpdateAlbumByUrlByArtistName(string url, string name, string newUrl, string artist, string description, string info)
+ void UpdatePlaylist(Playlist playlist, string name, string description, string url)
+ void UpdatePlaylistByUrl(string url, string name, string description, string newUrl)
+ void UpdateArtist(Artist artist, string name)
+ void UpdateArtistByName(string name, string newName)
+ void RemoveAlbum(Album album)
+ void RemoveAlbums(List<Album> albumsList)
+ void RemoveArtist(Artist artist)
+ void RemoveArtists(List<Artist> artistsList)
+ void RemovePlaylist(Playlist playlist)
+ void RemovePlaylists(List<Playlist> playlistsList)
+ void RemoveCustomTitle(CustomTitle title)
+ void RemoveCustomTitles(List<CustomTitle> customTitlesList)
+ void RemoveInfoTitle(InfoTitle title)
+ void RemoveInfoTitles(List<InfoTitle> infoTitlesList)
+ void LoadSerialization()
+ void SaveSerialization()
+ boolean ExistsPlaylist(Playlist playlist)
+ boolean ExistsPlaylistByUrl(string url)
+ boolean ExistsAlbum(Album album)
+ boolean ExistsAlbumByUrl(string url)
+ boolean ExistsArtist(Artist artist)
+ boolean ExistsArtistByName(string name)
+ boolean ExistsCustomTitle(CustomTitle title)
+ boolean ExistsCustomTitleByUrl(string url)
+ boolean ExistsInfoTitle(InfoTitle title)
+ boolean ExistsInfoTitleByUrl(string url)
}
class Manager {
+ {static} int MAX_NAME_LENGTH = 75
+ {static} int MAX_DESCRIPTION_LENGTH = 500
+ {static} string DEFAULT_NAME = "Unknown"
+ {static} string DEFAULT_URL = "none.png"
+ {static} string DEFAULT_DESC = ""
- List<Album> albums
- List<CustomTitle> customTitles
- List<InfoTitle> infoTitles
- List<Playlist> playlists
- List<Artist> artists
+ Manager(IDataManager dataManager)
+ void AddAlbum(Album album)
+ void AddCustomTitle(CustomTitle title)
+ void AddInfoTitle(InfoTitle title)
+ void AddPlaylist(Playlist playlist)
+ void AddArtist(Artist artist)
+ void RemoveAlbum(Album album)
+ void RemoveCustomTitle(CustomTitle title)
+ void RemoveInfoTitle(InfoTitle title)
+ void RemovePlaylist(Playlist playlist)
+ IEnumerable<Playlist> GetPlaylists()
+ IEnumerable<Album> GetAlbums()
+ IEnumerable<CustomTitle> GetCustomTitles()
+ IEnumerable<InfoTitle> GetInfoTitles()
+ IEnumerable<Artist> GetArtists()
+ void LoadSerialization()
+ void SaveSerialization()
}
class StubAlbum {
+ StubAlbum()
+ List<Album> GetAlbums()
+ Album? GetAlbumByUrl(string url)
+ void AddAlbum(Album album)
+ void RemoveAlbum(Album album)
}
class StubArtist {
+ StubArtist()
+ List<Artist> GetArtists()
+ Artist? GetArtistByName(string name)
+ void AddArtist(Artist artist)
+ void RemoveArtist(Artist artist)
}
class StubCustomTitle {
+ StubCustomTitle()
+ List<CustomTitle> GetCustomTitles()
+ List<CustomTitle> GetCustomTitlesByUrl(List<string> urls)
+ void AddCustomTitle(CustomTitle customTitle)
+ void RemoveCustomTitle(CustomTitle customTitle)
}
class StubInfoTitle {
+ StubInfoTitle()
+ List<InfoTitle> GetInfoTitles()
+ List<InfoTitle> GetInfoTitlesByUrl(List<string> urls)
+ void AddInfoTitle(InfoTitle title)
+ void RemoveInfoTitle(InfoTitle title)
+ {static} void AddFeat(InfoTitle infoTitle, Artist artist)
+ {static} void RemoveFeat(InfoTitle infoTitle, Artist artist)
}
class StubPlaylist {
+ StubPlaylist()
+ List<Playlist> GetPlaylists()
+ Playlist? GetPlaylistByUrl(string url)
+ void AddPlaylist(Playlist playlist)
+ void RemovePlaylist(Playlist playlist)
}
class StubManager {
+ StubManager()
+ List<Album> GetAlbums()
+ List<Artist> GetArtists()
+ List<Playlist> GetPlaylists()
+ List<CustomTitle> GetCustomTitles()
+ List<InfoTitle> GetInfoTitles()
+ void AddAlbum(Album album)
+ void AddCustomTitle(CustomTitle title)
+ void AddInfoTitle(InfoTitle title)
+ {static} void AddFeat(InfoTitle infoTitle, Artist artist)
+ void AddPlaylist(Playlist playlist)
+ void AddArtist(Artist artist)
+ void RemoveAlbum(Album album)
+ void RemoveCustomTitle(CustomTitle title)
+ void RemoveInfoTitle(InfoTitle title)
+ void RemovePlaylist(Playlist playlist)
+ void RemoveArtist(Artist artist)
+ void LoadSerialization()
+ void SaveSerialization()
+ CustomTitle? GetCustomTitleByUrl(string custom)
+ InfoTitle? GetInfoTitleByUrl(string url)
+ Album? GetAlbumByUrl(string url)
+ Artist? GetArtistByName(string name)
+ void AddAlbums(List<Album> albumsList)
+ void AddArtists(List<Artist> artistsList)
+ void AddPlaylists(List<Playlist> playlistsList)
+ void AddCustomTitles(List<CustomTitle> customTitlesList)
+ void AddInfoTitles(List<InfoTitle> infoTitlesList)
+ Playlist? GetPlaylistByUrl(string url)
+ void UpdateCustomTitle(CustomTitle title, string name, string url, string info, string path)
+ void UpdateCustomTitleByUrl(string url, string name, string newUrl, string info, string path)
+ void UpdateInfoTitle(InfoTitle title, string name, string url, string info, Artist artist, string description, Genre genre)
+ void UpdateInfoTitleByName(string url, string name, string newUrl, string info, Artist artist, string description, Genre genre)
+ void UpdateInfoTitleByArtistName(InfoTitle title, string name, string url, string info, string artist, string description, Genre genre)
+ void UpdateInfoTitleByNameByArtistName(string url, string name, string newUrl, string info, string artist, string description, Genre genre)
+ void UpdateAlbum(Album album, string name, string url, Artist artist, string description, string info)
+ void UpdateAlbumByUrl(string url, string name, string newUrl, Artist artist, string description, string info)
+ void UpdateAlbumByArtistName(Album album, string name, string url, string artist, string description, string info)
+ void UpdateAlbumByUrlByArtistName(string url, string name, string newUrl, string artist, string description, string info)
+ void UpdatePlaylist(Playlist playlist, string name, string description, string url)
+ void UpdatePlaylistByUrl(string url, string name, string description, string newUrl)
+ void UpdateArtist(Artist artist, string name)
+ void UpdateArtistByName(string name, string newName)
+ void RemoveAlbums(List<Album> albumsList)
+ void RemoveArtists(List<Artist> artistsList
+ void RemovePlaylists(List<Playlist> playlistsList)
+ void RemoveCustomTitles(List<CustomTitle> customTitlesList)
+ void RemoveInfoTitles(List<InfoTitle> infoTitlesList)
+ boolean ExistsPlaylist(Playlist playlist)
+ boolean ExistsPlaylistByUrl(string url)
+ boolean ExistsAlbum(Album album)
+ boolean ExistsAlbumByUrl(string url)
+ boolean ExistsArtist(Artist artist)
+ boolean ExistsArtistByName(string name)
+ boolean ExistsCustomTitle(CustomTitle title)
+ boolean ExistsCustomTitleByUrl(string url)
+ boolean ExistsInfoTitle(InfoTitle title)
+ boolean ExistsInfoTitleByUrl(string url)
}
class LinqXmlSerialization {
- {static} string XMLPATH
- {static} string XMLFILEPLAYLISTS
- {static} string XMLFILEALBUMS
- {static} string XMLFILECUSTOMS
- {static} string XMLFILEINFOS
- {static} string XMLFILEARTISTS
+ LinqXmlSerialization()
+ void AddAlbum(Album album)
+ void AddArtist(Artist artist)
+ void AddCustomTitle(CustomTitle title)
+ void AddInfoTitle(InfoTitle title)
+ void AddPlaylist(Playlist playlist)
+ List<Album> GetAlbums()
+ List<Artist> GetArtists()
+ List<CustomTitle> GetCustomTitles()
+ List<InfoTitle> GetInfoTitles()
+ List<Playlist> GetPlaylists()
+ void RemoveAlbum(Album album)
+ void RemoveArtist(Artist artist)
+ void RemoveCustomTitle(CustomTitle title)
+ void RemoveInfoTitle(InfoTitle title)
+ void RemovePlaylist(Playlist playlist)
+ void LoadSerialization()
+ void SaveSerialization()
+ void LoadPlaylists()
+ void SavePlaylists()
+ void LoadArtists()
+ void SaveArtists()
+ void LoadCustomTitles()
+ void SaveCustomTitles()
+ void LoadAlbums()
+ void SaveAlbums()
+ void LoadInfoTitles()
+ void SaveInfoTitles()
+ {static} Genre GetGenreByName(string genre)
+ InfoTitle? GetInfoTitleByUrl(string url)
+ Artist? GetArtistByName(string name)
+ Album? GetAlbumByUrl(string url)
+ CustomTitle? GetCustomTitleByUrl(string custom)
+ void AddAlbums(List<Album> albumsList)
+ void AddArtists(List<Artist> artistsList)
+ void AddPlaylists(List<Playlist> playlistsList)
+ void AddCustomTitles(List<CustomTitle> customTitlesList)
+ void AddInfoTitles(List<InfoTitle> infoTitlesList)
+ Playlist? GetPlaylistByUrl(string url)
+ void UpdateCustomTitle(CustomTitle title, string name, string url, string info, string path)
+ void UpdateCustomTitleByUrl(string url, string name, string newUrl, string info, string path)
+ void UpdateInfoTitle(InfoTitle title, string name, string url, string info, Artist artist, string description, Genre genre)
+ void UpdateInfoTitleByName(string url, string name, string newUrl, string info, Artist artist, string description, Genre genre)
+ void UpdateInfoTitleByArtistName(InfoTitle title, string name, string url, string info, string artist, string description, Genre genre)
+ void UpdateInfoTitleByNameByArtistName(string url, string name, string newUrl, string info, string artist, string description, Genre genre)
+ void UpdateAlbum(Album album, string name, string url, Artist artist, string description, string info)
+ void UpdateAlbumByUrl(string url, string name, string newUrl, Artist artist, string description, string info)
+ void UpdateAlbumByArtistName(Album album, string name, string url, string artist, string description, string info)
+ void UpdateAlbumByUrlByArtistName(string url, string name, string newUrl, string artist, string description, string info)
+ void UpdatePlaylist(Playlist playlist, string name, string description, string url)
+ void UpdatePlaylistByUrl(string url, string name, string description, string newUrl)
+ void UpdateArtist(Artist artist, string name)
+ void UpdateArtistByName(string name, string newName)
+ void RemoveAlbums(List<Album> albumsList)
+ void RemoveArtists(List<Artist> artistsList)
+ void RemovePlaylists(List<Playlist> playlistsList)
+ void RemoveCustomTitles(List<CustomTitle> customTitlesList)
+ void RemoveInfoTitles(List<InfoTitle> infoTitlesList)
+ boolean ExistsPlaylist(Playlist playlist)
+ boolean ExistsPlaylistByUrl(string url)
+ boolean ExistsAlbum(Album album)
+ boolean ExistsAlbumByUrl(string url)
+ boolean ExistsArtist(Artist artist)
+ boolean ExistsArtistByName(string name)
+ boolean ExistsCustomTitle(CustomTitle title)
+ boolean ExistsCustomTitleByUrl(string url)
+ boolean ExistsInfoTitle(InfoTitle title)
+ boolean ExistsInfoTitleByUrl(string url)
}
Album --> "+ artist" Artist
Album --> "- titles*" Title
Playlist --> "- titles*" Title
CustomTitle <|-- Title
InfoTitle <|-- Title
InfoTitle --> "+ genre" Genre
InfoTitle --> "+ artist" Artist
Manager --> "+ datamanager" IDataManager
StubArtist --> "- artists*" Artist
StubAlbum --> "- stubArtist" StubArtist
StubAlbum --> "- albums*" Album
StubCustomTitle --> "- customTitles*" CustomTitle
StubInfoTitle --> "- stubArtist" StubArtist
StubInfoTitle --> "- infoTitles*" InfoTitle
StubPlaylist --> "- playlists*" Playlist
StubManager <|-- IDataManager
StubManager --> "- stubArtist" StubArtist
StubManager --> "- stubPlaylist" StubPlaylist
StubManager --> "- stubAlbum" StubAlbum
StubManager --> "- stubInfoTitle" StubInfoTitle
StubManager --> "- stubCustomTitle" StubCustomTitle
LinqXmlSerialization <|-- IDataManager
LinqXmlSerialization --> "- artists*" Artist
LinqXmlSerialization --> "- albums*" Album
LinqXmlSerialization --> "- playlists*" Playlist
LinqXmlSerialization --> "- infotitles*" InfoTitle
LinqXmlSerialization --> "- customtitles*" CustomTitle
@enduml
Explications
Album
Cette classe sert <20> mod<6F>liser des albums de musique. Ils ne sont pas jouables et sont uniquement implant<6E>s <20> titre informatif. Dans ce but, elle comporte plusieurs attributs comme un nom, une description, des informations compl<70>mentaires ou encore une URL pour son image (la pochette).
Artist
Cette classe sert <20> mod<6F>liser les artistes qui r<>alise les albums. Il ne poss<73>de qu'un nom en atrribut.
Title
Cette classe sert <20> mod<6F>liser diff<66>rents titres. Il poss<73>de plusieurs attributs comme un nom, une URL pour son image (cover) ainsi que des informations compl<70>mentaires.
InfoTitle
Cette classe h<>rite de Title. Elle h<>rite donc de tout ses attributs. Comme son nom l'indique, ces titres ont comme sp<73>cificit<69> d'<27>tre uniquement informatif. Ils sont contenus dans les albums. Elle poss<73>de <20>galement d'autres attributs comme une description, un artiste (classe Artist) et une liste d'artiste pour les featuring.
CustomTitle
Cette classe h<>rite de Title. Elle h<>rite donc de tout ses attributs. Ces titres sont destin<69>s <20> pouvoir <20>tre ajouter dans des playlists et <20> <20>tre jouer. Hormis les attributs h<>rit<69>s, cette classe poss<73>de un attribut path (chemin) qui lui permet d'indiquer o<> se situe le fichier audio.
Playlist
Cette classe poss<73>de une structure similaire <20> la classe Album. Elle contient des titres personnalis<69>s (CustomTitle). Les morceaux sont jou<6F>s dans un ordre pr<70>cis (du premier jusqu'au dernier).