Separate class diagram and add stubs description
continuous-integration/drone/push Build was killed Details

pull/30/head
Corentin LEMAIRE 2 years ago
parent f9a4dd4224
commit 58fca49e49

@ -218,55 +218,6 @@ class Manager {
+ Album GetAlbumById(long id)
}
class StubAlbum {
+ StubArtist StubArtist
+ ObservableCollection<Album> Albums
+ StubAlbum()
+ ObservableCollection<Album> GetAlbums()
+ Album GetAlbumByName(string name)
+ void AddAlbum(Album album)
+ void RemoveAlbum(Album album)
}
class StubArtist {
+ List<Artist> Artists
+ StubArtist()
+ List<Artist> GetArtists()
+ Artist GetArtistByName(string name)
+ void AddArtist(Artist artist)
+ void RemoveArtist(Artist artist)
}
class StubCustomTitle {
+ ObservableCollection<CustomTitle> CustomTitles
+ StubCustomTitle()
+ ObservableCollection<CustomTitle> GetCustomTitles()
+ List<CustomTitle> GetCustomTitlesByNames(List<string> names)
+ void AddCustomTitle(CustomTitle customTitle)
+ void RemoveCustomTitle(CustomTitle customTitle)
}
class StubInfoTitle {
+ StubAlbum StubAlbum
+ ObservableCollection<InfoTitle> InfoTitles
+ StubInfoTitle()
+ ObservableCollection<InfoTitle> GetInfoTitles()
+ List<InfoTitle> GetInfoTitlesByNames(List<string> names)
+ void AddInfoTitle(InfoTitle title)
+ void RemoveInfoTitle(InfoTitle title)
+ {static} void AddFeat(InfoTitle infoTitle, Artist artist)
+ {static} void RemoveFeat(InfoTitle infoTitle, Artist artist)
}
class StubPlaylist {
+ ObservableCollection<Playlist> Playlists
+ StubPlaylist()
+ ObservableCollection<Playlist> GetPlaylists()
+ Playlist GetPlaylistByName(string name)
+ void AddPlaylist(Playlist playlist)
+ void RemovePlaylist(Playlist playlist)
}
class StubManager {
+ StubAlbum StubAlbum
+ StubArtist StubArtist
@ -438,26 +389,9 @@ Manager o-- "+ CustomTitles*" CustomTitle
Manager o-- "+ CurrentAlbum" Album
Manager o-- "+ CurrentPlaylist" Playlist
Manager o-- "+ CurrentInfoTitle" InfoTitle
Manager o-- "+ CurrentPlaying" CustomTitle
StubArtist *-- "+ Artists*" Artist
StubAlbum *-- "+ StubArtist" StubArtist
StubAlbum o-- "+ Albums*" Album
StubCustomTitle *-- "+ CustomTitles*" CustomTitle
StubInfoTitle *-- "+ StubArtist" StubArtist
StubInfoTitle *-- "+ InfoTitles*" InfoTitle
StubPlaylist *-- "+ Playlists*" Playlist
Manager o-- "+ CurrentPlaying" CustomTitle
StubManager --|> IDataManager
StubManager *-- "+ StubArtist" StubArtist
StubManager *-- "+ StubPlaylist" StubPlaylist
StubManager *-- "+ StubAlbum" StubAlbum
StubManager *-- "+ StubInfoTitle" StubInfoTitle
StubManager *-- "+ StubCustomTitle" StubCustomTitle
StubManager .. InfoTitle
StubManager .. Artist
StubManager .. Album
@ -481,6 +415,145 @@ IDataManager .. Genre
@enduml
```
```plantuml
@startuml
class StubManager {
+ StubAlbum StubAlbum
+ StubArtist StubArtist
+ StubCustomTitle StubCustomTitle
+ StubInfoTitle StubInfoTitle
+ StubPlaylist StubPlaylist
+ StubManager()
+ ObservableCollection<Album> GetAlbums()
+ List<Artist> GetArtists()
+ ObservableCollection<Playlist> GetPlaylists()
+ ObservableCollection<CustomTitle> GetCustomTitles()
+ ObservableCollection<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 GetCustomTitleByPath(string custom)
+ InfoTitle GetInfoTitleByName(string name)
+ Album GetAlbumByName(string name)
+ 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 GetPlaylistByName(string name)
+ void UpdateCustomTitle(CustomTitle title, string name, string url, string info, string path)
+ void UpdateCustomTitleByPath(string path, string name, string newUrl, string info, string newPath)
+ void UpdateInfoTitle(InfoTitle title, string name, string url, string info, Artist artist, string description, Genre genre)
+ void UpdateInfoTitleByName(string name, string newUrl, string info, Artist artist, string description, Genre genre)
+ void UpdateAlbum(Album album, string name, string url, Artist artist, string description, string info)
+ void UpdateAlbumByName(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 UpdateAlbumByNameByArtistName(string name, string newUrl, string artist, string description, string info)
+ void UpdatePlaylist(Playlist playlist, string name, string description, string url)
+ void UpdatePlaylistByName(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)
+ bool ExistsPlaylist(Playlist playlist)
+ bool ExistsPlaylistByName(string name)
+ bool ExistsAlbum(Album album)
+ bool ExistsAlbumByName(string name)
+ bool ExistsArtist(Artist artist)
+ bool ExistsArtistByName(string name)
+ bool ExistsCustomTitle(CustomTitle title)
+ bool ExistsCustomTitleByName(string name)
+ bool ExistsInfoTitle(InfoTitle title)
+ bool ExistsInfoTitleByName(string name)
+ Album GetAlbumById(long id)
}
class StubAlbum {
+ StubArtist StubArtist
+ ObservableCollection<Album> Albums
+ StubAlbum()
+ ObservableCollection<Album> GetAlbums()
+ Album GetAlbumByName(string name)
+ void AddAlbum(Album album)
+ void RemoveAlbum(Album album)
}
class StubArtist {
+ List<Artist> Artists
+ StubArtist()
+ List<Artist> GetArtists()
+ Artist GetArtistByName(string name)
+ void AddArtist(Artist artist)
+ void RemoveArtist(Artist artist)
}
class StubCustomTitle {
+ ObservableCollection<CustomTitle> CustomTitles
+ StubCustomTitle()
+ ObservableCollection<CustomTitle> GetCustomTitles()
+ List<CustomTitle> GetCustomTitlesByNames(List<string> names)
+ void AddCustomTitle(CustomTitle customTitle)
+ void RemoveCustomTitle(CustomTitle customTitle)
}
class StubInfoTitle {
+ StubAlbum StubAlbum
+ ObservableCollection<InfoTitle> InfoTitles
+ StubInfoTitle()
+ ObservableCollection<InfoTitle> GetInfoTitles()
+ List<InfoTitle> GetInfoTitlesByNames(List<string> names)
+ void AddInfoTitle(InfoTitle title)
+ void RemoveInfoTitle(InfoTitle title)
+ {static} void AddFeat(InfoTitle infoTitle, Artist artist)
+ {static} void RemoveFeat(InfoTitle infoTitle, Artist artist)
}
class StubPlaylist {
+ ObservableCollection<Playlist> Playlists
+ StubPlaylist()
+ ObservableCollection<Playlist> GetPlaylists()
+ Playlist GetPlaylistByName(string name)
+ void AddPlaylist(Playlist playlist)
+ void RemovePlaylist(Playlist playlist)
}
StubManager --|> IDataManager
StubManager *-- "+ StubArtist" StubArtist
StubManager *-- "+ StubPlaylist" StubPlaylist
StubManager *-- "+ StubAlbum" StubAlbum
StubManager *-- "+ StubInfoTitle" StubInfoTitle
StubManager *-- "+ StubCustomTitle" StubCustomTitle
StubAlbum *-- "+ StubArtist" StubArtist
LinqXmlSerialization o-- "+ StubInfoTitle" StubInfoTitle
@enduml
````
# Note
*Les classes CustomTitle, Playlist et Manager héritent de l'interface INotifyPropertyChanged afin de permettre le DataBinding de ces classes*
@ -519,15 +592,46 @@ Hormis les attributs hérités, cette classe possède un attribut path (chemin)
Cette classe possède une structure similaire à la classe **Album**. Elle contient des titres personnalisés (**CustomTitle**). Les morceaux sont joués dans un ordre précis (du premier jusqu'au dernier). Cette classe hérite des attributs de Title. Cette classe permet la gestion des playlists, soit l'accès à la musique suivante, précédente en fonction de la demande de l'utilisateur (en boule, aléatoire). Cela permet une lecture de musiques d'une playlist en boucle sans problème.
### Manager
#### Manager
Notre classe manager est une interface entre le code-behind et les vues. Il permet de gérer les données grâce au DataManager et de gérer les fonctionnalités de l'application comme les playlists. Cette interface fonctionne avec le parton de conception de façade, étant une interface, un point d'entrée de l'application vers le modèle. De plus, nous utilisons un deuxième patron de conception, qui est la stratégie, avec une injection de dépendance par le constructeur de la classe. En effet, afin de créer un Manager, il faut joindre la méthode de sérialisation (stubs ou LINQ dans notre cas).
#### LinqXmlSerialization
Notre sérialisation fonctionne avec lecture/écriture dans des fichiers XML. Pour cela, nous utilisons la bibliothèque *LINQ_XML* qui nous permet de créer et de modifier les différents fichiers. Pour la sérialisation des CustomTitle et des Playlists nous utilisons le LINQ. Cependant, pour les classes InfoTitle, Artist et Albums, ces données sont récupérées des Stubs, étant statiques et à but informatif. Cette sérialisation a été testée et approuvée sur Windows et Android.
#### StubManager
Le StubManager est un point d'entrée vers les Stubs, permettant de les gérer avec des requêtes CRUD. Ces Stubs vont permettre de tester l'application, le modèle et l'application en générant des données directement dans le code. Cette classe permet de séparer le code de chaque Stub afin de le gérer avec plus de facilité.
#### StubAlbum
Le StubAlbum permet de générer des albums avec des informations écrites dans le code. Il permet également de les gérer. Cette classe utiliser les stubs StubArtist afin de lier l'album avec l'artiste. Ce stub est aussi utilisé afin d'afficher ces albums à titre informatif.
#### StubArtist
Le StubArtist permet de créer des informations sur des artistes. Il permet de plus de créer les artistes pour les InfoTitle à afficher dans les titres informatifs présents dans les albums.
#### StubInfoTitle
Le StubInfoTitle est un stub avec des valeurs pour les titres informatifs affichés dans les albums déjà rédigées. Il est donc utilisé dans la sérialisation LINQ aussi.
#### StubCustomTitle
Le StubCustomTitle permet de tester la gestion des titres personnalisés avec des valeurs prédéfinies. Ce stub n'est utilisé que pour les tests et le debug.
#### StubPlaylist
Le StubPlaylist créé des informations écrites dans le code afin de tester les méthodes et la classe des playlists. Elle n'est pas utilisée par la sérialisation LINQ.
## Diagramme de paquetage
![DP](Images/Diagramme_paquetage.png)

Loading…
Cancel
Save