diff options
author | Clyhtsuriva <61652557+clyhtsuriva@users.noreply.github.com> | 2021-06-26 14:54:04 +0000 |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-06-26 14:54:04 +0000 |
commit | af3f000913ddcd6fdf4d8581c0e9dad1b1edc6a3 (patch) | |
tree | a0c875335ce68efd4959ee031dfa8671c9eaa78a /target/site/jacoco/musichub.business/MusicHub.java.html | |
parent | 4ff84568723b1663b9e20f95535d3213f8d3e92e (diff) | |
parent | e9ee951e570c441151385d1ccd8c4230abf704ca (diff) |
Merge pull request #6 from Said-Belhadj/feature/STZ-0002
Feature/stz 0002
Diffstat (limited to 'target/site/jacoco/musichub.business/MusicHub.java.html')
-rw-r--r-- | target/site/jacoco/musichub.business/MusicHub.java.html | 343 |
1 files changed, 343 insertions, 0 deletions
diff --git a/target/site/jacoco/musichub.business/MusicHub.java.html b/target/site/jacoco/musichub.business/MusicHub.java.html new file mode 100644 index 0000000..b9dfd09 --- /dev/null +++ b/target/site/jacoco/musichub.business/MusicHub.java.html @@ -0,0 +1,343 @@ +<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"><html xmlns="http://www.w3.org/1999/xhtml" lang="fr"><head><meta http-equiv="Content-Type" content="text/html;charset=UTF-8"/><link rel="stylesheet" href="../jacoco-resources/report.css" type="text/css"/><link rel="shortcut icon" href="../jacoco-resources/report.gif" type="image/gif"/><title>MusicHub.java</title><link rel="stylesheet" href="../jacoco-resources/prettify.css" type="text/css"/><script type="text/javascript" src="../jacoco-resources/prettify.js"></script></head><body onload="window['PR_TAB_WIDTH']=4;prettyPrint()"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> > <a href="index.source.html" class="el_package">musichub.business</a> > <span class="el_source">MusicHub.java</span></div><h1>MusicHub.java</h1><pre class="source lang-java linenums">package musichub.business; + +import musichub.util.XMLHandler; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import java.io.IOException; +import java.util.*; + +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.UnsupportedAudioFileException; + +<span class="nc" id="L15">class SortByDate implements Comparator<Album> {</span> + public int compare(Album a1, Album a2) { +<span class="nc" id="L17"> return a1.getDate().compareTo(a2.getDate());</span> + } +} + +<span class="nc" id="L21">class SortByGenre implements Comparator<Song> {</span> + public int compare(Song s1, Song s2) { +<span class="nc" id="L23"> return s1.getGenre().compareTo(s2.getGenre());</span> + } +} + +<span class="nc" id="L27">class SortByAuthor implements Comparator<AudioElement> {</span> + public int compare(AudioElement e1, AudioElement e2) { +<span class="nc" id="L29"> return e1.getArtist().compareTo(e2.getArtist());</span> + } +} + +public class MusicHub { +<span class="nc" id="L34"> public static final String DIR = System.getProperty("user.dir");</span> +<span class="nc" id="L35"> public static final String ALBUMS_FILE_PATH = DIR + "/files/albums.xml";</span> +<span class="nc" id="L36"> public static final String PLAYLISTS_FILE_PATH = DIR + "/files/playlists.xml";</span> +<span class="nc" id="L37"> public static final String ELEMENTS_FILE_PATH = DIR + "/files/elements.xml";</span> + private final List<Album> albums; + private final List<PlayList> playlists; + private final List<AudioElement> elements; +<span class="nc" id="L41"> private final XMLHandler xmlHandler = new XMLHandler();</span> + +<span class="nc" id="L43"> public MusicHub() {</span> +<span class="nc" id="L44"> albums = new LinkedList<>();</span> +<span class="nc" id="L45"> playlists = new LinkedList<>();</span> +<span class="nc" id="L46"> elements = new LinkedList<>();</span> +<span class="nc" id="L47"> this.loadElements();</span> +<span class="nc" id="L48"> this.loadAlbums();</span> +<span class="nc" id="L49"> this.loadPlaylists();</span> +<span class="nc" id="L50"> }</span> + + public void addElement(AudioElement element) { +<span class="nc" id="L53"> elements.add(element);</span> +<span class="nc" id="L54"> }</span> + + public void addAlbum(Album album) { +<span class="nc" id="L57"> albums.add(album);</span> +<span class="nc" id="L58"> }</span> + + public void addPlaylist(PlayList playlist) { +<span class="nc" id="L61"> playlists.add(playlist);</span> +<span class="nc" id="L62"> }</span> + + public void deletePlayList(String playListTitle) throws NoPlayListFoundException { + +<span class="nc" id="L66"> PlayList thePlayList = null;</span> +<span class="nc" id="L67"> boolean result = false;</span> +<span class="nc bnc" id="L68" title="All 2 branches missed."> for (PlayList pl : playlists) {</span> +<span class="nc bnc" id="L69" title="All 2 branches missed."> if (pl.getTitle().equalsIgnoreCase(playListTitle)) {</span> +<span class="nc" id="L70"> thePlayList = pl;</span> +<span class="nc" id="L71"> break;</span> + } +<span class="nc" id="L73"> }</span> + +<span class="nc bnc" id="L75" title="All 2 branches missed."> if (thePlayList != null)</span> +<span class="nc" id="L76"> result = playlists.remove(thePlayList);</span> +<span class="nc bnc" id="L77" title="All 2 branches missed."> if (!result) throw new NoPlayListFoundException("Playlist " + playListTitle + " not found!");</span> +<span class="nc" id="L78"> }</span> + + public Iterator<Album> albums() { +<span class="nc" id="L81"> return albums.listIterator();</span> + } + + public Iterator<PlayList> playlists() { +<span class="nc" id="L85"> return playlists.listIterator();</span> + } + + public Iterator<AudioElement> elements() { +<span class="nc" id="L89"> return elements.listIterator();</span> + } + + public String getAlbumsTitlesSortedByDate() { +<span class="nc" id="L93"> StringBuilder titleList = new StringBuilder();</span> +<span class="nc" id="L94"> albums.sort(new SortByDate());</span> +<span class="nc bnc" id="L95" title="All 2 branches missed."> for (Album al : albums)</span> +<span class="nc" id="L96"> titleList.append(al.getTitle()).append("\n");</span> +<span class="nc" id="L97"> return titleList.toString();</span> + } + + public String getAudiobooksTitlesSortedByAuthor() { +<span class="nc" id="L101"> StringBuilder titleList = new StringBuilder();</span> +<span class="nc" id="L102"> List<AudioElement> audioBookList = new ArrayList<>();</span> +<span class="nc bnc" id="L103" title="All 2 branches missed."> for (AudioElement ae : elements)</span> +<span class="nc bnc" id="L104" title="All 2 branches missed."> if (ae instanceof AudioBook)</span> +<span class="nc" id="L105"> audioBookList.add(ae);</span> +<span class="nc" id="L106"> audioBookList.sort(new SortByAuthor());</span> +<span class="nc bnc" id="L107" title="All 2 branches missed."> for (AudioElement ab : audioBookList)</span> +<span class="nc" id="L108"> titleList.append(ab.getArtist()).append("\n");</span> +<span class="nc" id="L109"> return titleList.toString();</span> + } + + public List<AudioElement> getAlbumSongs(String albumTitle) throws NoAlbumFoundException { +<span class="nc" id="L113"> Album theAlbum = null;</span> +<span class="nc" id="L114"> ArrayList<AudioElement> songsInAlbum = new ArrayList<>();</span> +<span class="nc bnc" id="L115" title="All 2 branches missed."> for (Album al : albums) {</span> +<span class="nc bnc" id="L116" title="All 2 branches missed."> if (al.getTitle().equalsIgnoreCase(albumTitle)) {</span> +<span class="nc" id="L117"> theAlbum = al;</span> +<span class="nc" id="L118"> break;</span> + } +<span class="nc" id="L120"> }</span> +<span class="nc bnc" id="L121" title="All 2 branches missed."> if (theAlbum == null) throw new NoAlbumFoundException("No album with this title in the MusicHub!");</span> + +<span class="nc" id="L123"> List<UUID> songIDs = theAlbum.getSongs();</span> +<span class="nc bnc" id="L124" title="All 2 branches missed."> for (UUID id : songIDs)</span> +<span class="nc bnc" id="L125" title="All 2 branches missed."> for (AudioElement el : elements) {</span> +<span class="nc bnc" id="L126" title="All 2 branches missed."> if (el instanceof Song) {</span> +<span class="nc bnc" id="L127" title="All 2 branches missed."> if (el.getUUID().equals(id)) songsInAlbum.add(el);</span> + } +<span class="nc" id="L129"> }</span> +<span class="nc" id="L130"> return songsInAlbum;</span> + + } + + public List<Song> getAlbumSongsSortedByGenre(String albumTitle) throws NoAlbumFoundException { +<span class="nc" id="L135"> Album theAlbum = null;</span> +<span class="nc" id="L136"> ArrayList<Song> songsInAlbum = new ArrayList<>();</span> +<span class="nc bnc" id="L137" title="All 2 branches missed."> for (Album al : albums) {</span> +<span class="nc bnc" id="L138" title="All 2 branches missed."> if (al.getTitle().equalsIgnoreCase(albumTitle)) {</span> +<span class="nc" id="L139"> theAlbum = al;</span> +<span class="nc" id="L140"> break;</span> + } +<span class="nc" id="L142"> }</span> +<span class="nc bnc" id="L143" title="All 2 branches missed."> if (theAlbum == null) throw new NoAlbumFoundException("No album with this title in the MusicHub!");</span> + +<span class="nc" id="L145"> List<UUID> songIDs = theAlbum.getSongs();</span> +<span class="nc bnc" id="L146" title="All 2 branches missed."> for (UUID id : songIDs)</span> +<span class="nc bnc" id="L147" title="All 2 branches missed."> for (AudioElement el : elements) {</span> +<span class="nc bnc" id="L148" title="All 2 branches missed."> if (el instanceof Song) {</span> +<span class="nc bnc" id="L149" title="All 2 branches missed."> if (el.getUUID().equals(id)) songsInAlbum.add((Song) el);</span> + } +<span class="nc" id="L151"> }</span> +<span class="nc" id="L152"> songsInAlbum.sort(new SortByGenre());</span> +<span class="nc" id="L153"> return songsInAlbum;</span> + + } + + public void addElementToAlbum(String elementTitle, String albumTitle) throws NoAlbumFoundException, NoElementFoundException { +<span class="nc" id="L158"> Album theAlbum = null;</span> + int i; +<span class="nc" id="L160"> boolean found = false;</span> +<span class="nc bnc" id="L161" title="All 2 branches missed."> for (i = 0; i < albums.size(); i++) {</span> +<span class="nc bnc" id="L162" title="All 2 branches missed."> if (albums.get(i).getTitle().equalsIgnoreCase(albumTitle)) {</span> +<span class="nc" id="L163"> theAlbum = albums.get(i);</span> +<span class="nc" id="L164"> found = true;</span> +<span class="nc" id="L165"> break;</span> + } + } + +<span class="nc bnc" id="L169" title="All 2 branches missed."> if (found) {</span> +<span class="nc" id="L170"> AudioElement theElement = null;</span> +<span class="nc bnc" id="L171" title="All 2 branches missed."> for (AudioElement ae : elements) {</span> +<span class="nc bnc" id="L172" title="All 2 branches missed."> if (ae.getTitle().equalsIgnoreCase(elementTitle)) {</span> +<span class="nc" id="L173"> theElement = ae;</span> +<span class="nc" id="L174"> break;</span> + } +<span class="nc" id="L176"> }</span> +<span class="nc bnc" id="L177" title="All 2 branches missed."> if (theElement != null) {</span> +<span class="nc" id="L178"> theAlbum.addSong(theElement.getUUID());</span> + //replace the album in the list +<span class="nc" id="L180"> albums.set(i, theAlbum);</span> +<span class="nc" id="L181"> } else throw new NoElementFoundException("Element " + elementTitle + " not found!");</span> +<span class="nc" id="L182"> } else throw new NoAlbumFoundException("Album " + albumTitle + " not found!");</span> + +<span class="nc" id="L184"> }</span> + + public void addElementToPlayList(String elementTitle, String playListTitle) throws NoPlayListFoundException, NoElementFoundException { +<span class="nc" id="L187"> PlayList thePlaylist = null;</span> + int i; +<span class="nc" id="L189"> boolean found = false;</span> + +<span class="nc bnc" id="L191" title="All 2 branches missed."> for (i = 0; i < playlists.size(); i++) {</span> +<span class="nc bnc" id="L192" title="All 2 branches missed."> if (playlists.get(i).getTitle().equalsIgnoreCase(playListTitle)) {</span> +<span class="nc" id="L193"> thePlaylist = playlists.get(i);</span> +<span class="nc" id="L194"> found = true;</span> +<span class="nc" id="L195"> break;</span> + } + } + +<span class="nc bnc" id="L199" title="All 2 branches missed."> if (found) {</span> +<span class="nc" id="L200"> AudioElement theElement = null;</span> +<span class="nc bnc" id="L201" title="All 2 branches missed."> for (AudioElement ae : elements) {</span> +<span class="nc bnc" id="L202" title="All 2 branches missed."> if (ae.getTitle().equalsIgnoreCase(elementTitle)) {</span> +<span class="nc" id="L203"> theElement = ae;</span> +<span class="nc" id="L204"> break;</span> + } +<span class="nc" id="L206"> }</span> +<span class="nc bnc" id="L207" title="All 2 branches missed."> if (theElement != null) {</span> +<span class="nc" id="L208"> thePlaylist.addElement(theElement.getUUID());</span> + //replace the album in the list +<span class="nc" id="L210"> playlists.set(i, thePlaylist);</span> +<span class="nc" id="L211"> } else throw new NoElementFoundException("Element " + elementTitle + " not found!");</span> + +<span class="nc" id="L213"> } else throw new NoPlayListFoundException("Playlist " + playListTitle + " not found!");</span> + +<span class="nc" id="L215"> }</span> + + private void loadAlbums() { +<span class="nc" id="L218"> NodeList albumNodes = xmlHandler.parseXMLFile(ALBUMS_FILE_PATH);</span> +<span class="nc bnc" id="L219" title="All 2 branches missed."> if (albumNodes == null) return;</span> + +<span class="nc bnc" id="L221" title="All 2 branches missed."> for (int i = 0; i < albumNodes.getLength(); i++) {</span> +<span class="nc bnc" id="L222" title="All 2 branches missed."> if (albumNodes.item(i).getNodeType() == Node.ELEMENT_NODE) {</span> +<span class="nc" id="L223"> Element albumElement = (Element) albumNodes.item(i);</span> +<span class="nc bnc" id="L224" title="All 2 branches missed."> if (albumElement.getNodeName().equals("album")) {</span> + try { +<span class="nc" id="L226"> this.addAlbum(new Album(albumElement));</span> +<span class="nc" id="L227"> } catch (Exception ex) {</span> +<span class="nc" id="L228"> System.out.println("Something is wrong with the XML album element");</span> +<span class="nc" id="L229"> }</span> + } + } + } +<span class="nc" id="L233"> }</span> + + private void loadPlaylists() { +<span class="nc" id="L236"> NodeList playlistNodes = xmlHandler.parseXMLFile(PLAYLISTS_FILE_PATH);</span> +<span class="nc bnc" id="L237" title="All 2 branches missed."> if (playlistNodes == null) return;</span> + +<span class="nc bnc" id="L239" title="All 2 branches missed."> for (int i = 0; i < playlistNodes.getLength(); i++) {</span> +<span class="nc bnc" id="L240" title="All 2 branches missed."> if (playlistNodes.item(i).getNodeType() == Node.ELEMENT_NODE) {</span> +<span class="nc" id="L241"> Element playlistElement = (Element) playlistNodes.item(i);</span> +<span class="nc bnc" id="L242" title="All 2 branches missed."> if (playlistElement.getNodeName().equals("playlist")) {</span> + try { +<span class="nc" id="L244"> this.addPlaylist(new PlayList(playlistElement));</span> +<span class="nc" id="L245"> } catch (Exception ex) {</span> +<span class="nc" id="L246"> System.out.println("Something is wrong with the XML playlist element");</span> +<span class="nc" id="L247"> }</span> + } + } + } +<span class="nc" id="L251"> }</span> + + private void loadElements() { +<span class="nc" id="L254"> NodeList audioelementsNodes = xmlHandler.parseXMLFile(ELEMENTS_FILE_PATH);</span> +<span class="nc bnc" id="L255" title="All 2 branches missed."> if (audioelementsNodes == null) return;</span> + +<span class="nc bnc" id="L257" title="All 2 branches missed."> for (int i = 0; i < audioelementsNodes.getLength(); i++) {</span> +<span class="nc bnc" id="L258" title="All 2 branches missed."> if (audioelementsNodes.item(i).getNodeType() == Node.ELEMENT_NODE) {</span> +<span class="nc" id="L259"> Element audioElement = (Element) audioelementsNodes.item(i);</span> +<span class="nc bnc" id="L260" title="All 2 branches missed."> if (audioElement.getNodeName().equals("song")) {</span> + try { +<span class="nc" id="L262"> AudioElement newSong = new Song(audioElement);</span> +<span class="nc" id="L263"> this.addElement(newSong);</span> +<span class="nc" id="L264"> } catch (Exception ex) {</span> +<span class="nc" id="L265"> System.out.println("Something is wrong with the XML song element");</span> +<span class="nc" id="L266"> }</span> + } +<span class="nc bnc" id="L268" title="All 2 branches missed."> if (audioElement.getNodeName().equals("audiobook")) {</span> + try { +<span class="nc" id="L270"> AudioElement newAudioBook = new AudioBook(audioElement);</span> +<span class="nc" id="L271"> this.addElement(newAudioBook);</span> +<span class="nc" id="L272"> } catch (Exception ex) {</span> +<span class="nc" id="L273"> System.out.println("Something is wrong with the XML audiobook element");</span> +<span class="nc" id="L274"> }</span> + } + } + } +<span class="nc" id="L278"> }</span> + + + public void saveAlbums() { +<span class="nc" id="L282"> Document document = xmlHandler.createXMLDocument();</span> +<span class="nc bnc" id="L283" title="All 2 branches missed."> if (document == null) return;</span> + + // root element +<span class="nc" id="L286"> Element root = document.createElement("albums");</span> +<span class="nc" id="L287"> document.appendChild(root);</span> + + //save all albums +<span class="nc bnc" id="L290" title="All 2 branches missed."> for (Iterator<Album> albumsIter = this.albums(); albumsIter.hasNext(); ) {</span> +<span class="nc" id="L291"> Album currentAlbum = albumsIter.next();</span> +<span class="nc" id="L292"> currentAlbum.createXMLElement(document, root);</span> +<span class="nc" id="L293"> }</span> +<span class="nc" id="L294"> xmlHandler.createXMLFile(document, ALBUMS_FILE_PATH);</span> +<span class="nc" id="L295"> }</span> + + public void savePlayLists() { +<span class="nc" id="L298"> Document document = xmlHandler.createXMLDocument();</span> +<span class="nc bnc" id="L299" title="All 2 branches missed."> if (document == null) return;</span> + + // root element +<span class="nc" id="L302"> Element root = document.createElement("playlists");</span> +<span class="nc" id="L303"> document.appendChild(root);</span> + + //save all playlists +<span class="nc bnc" id="L306" title="All 2 branches missed."> for (Iterator<PlayList> playlistsIter = this.playlists(); playlistsIter.hasNext(); ) {</span> +<span class="nc" id="L307"> PlayList currentPlayList = playlistsIter.next();</span> +<span class="nc" id="L308"> currentPlayList.createXMLElement(document, root);</span> +<span class="nc" id="L309"> }</span> +<span class="nc" id="L310"> xmlHandler.createXMLFile(document, PLAYLISTS_FILE_PATH);</span> +<span class="nc" id="L311"> }</span> + + public void saveElements() { +<span class="nc" id="L314"> Document document = xmlHandler.createXMLDocument();</span> +<span class="nc bnc" id="L315" title="All 2 branches missed."> if (document == null) return;</span> + + // root element +<span class="nc" id="L318"> Element root = document.createElement("elements");</span> +<span class="nc" id="L319"> document.appendChild(root);</span> + + //save all AudioElements +<span class="nc bnc" id="L322" title="All 2 branches missed."> for (AudioElement currentElement : elements) {</span> + +<span class="nc bnc" id="L324" title="All 2 branches missed."> if (currentElement instanceof Song) {</span> +<span class="nc" id="L325"> currentElement.createXMLElement(document, root);</span> + } +<span class="nc bnc" id="L327" title="All 2 branches missed."> if (currentElement instanceof AudioBook) {</span> +<span class="nc" id="L328"> currentElement.createXMLElement(document, root);</span> + } +<span class="nc" id="L330"> }</span> +<span class="nc" id="L331"> xmlHandler.createXMLFile(document, ELEMENTS_FILE_PATH);</span> +<span class="nc" id="L332"> }</span> + + public void getAudioElement(List<AudioElement> audios, String elementTitle) throws NoAlbumFoundException, UnsupportedAudioFileException, IOException, LineUnavailableException { +<span class="nc bnc" id="L335" title="All 2 branches missed."> for (AudioElement el : audios) {</span> +<span class="nc bnc" id="L336" title="All 2 branches missed."> if (el.getTitle().equalsIgnoreCase(elementTitle)) {</span> +<span class="nc" id="L337"> el.manageAudioElement();</span> + } +<span class="nc" id="L339"> }</span> + +<span class="nc" id="L341"> }</span> +} +</pre><div class="footer"><span class="right">Created with <a href="http://www.jacoco.org/jacoco">JaCoCo</a> 0.8.7.202105040129</span></div></body></html>
\ No newline at end of file |