aboutsummaryrefslogtreecommitdiff
path: root/target/site/jacoco/musichub.main
diff options
context:
space:
mode:
authorClyhtsuriva <aimeric@adjutor.xyz>2021-06-26 14:32:12 +0200
committerClyhtsuriva <aimeric@adjutor.xyz>2021-06-26 14:32:12 +0200
commite9ee951e570c441151385d1ccd8c4230abf704ca (patch)
treea0c875335ce68efd4959ee031dfa8671c9eaa78a /target/site/jacoco/musichub.main
parenta57fd29902578adf7238d71cf9bbd55408584557 (diff)
Updated javadoc, added jacoco and the necessary JUnit for this feature.
Diffstat (limited to 'target/site/jacoco/musichub.main')
-rw-r--r--target/site/jacoco/musichub.main/Main.html1
-rw-r--r--target/site/jacoco/musichub.main/Main.java.html266
-rw-r--r--target/site/jacoco/musichub.main/index.html1
-rw-r--r--target/site/jacoco/musichub.main/index.source.html1
4 files changed, 269 insertions, 0 deletions
diff --git a/target/site/jacoco/musichub.main/Main.html b/target/site/jacoco/musichub.main/Main.html
new file mode 100644
index 0000000..de45b84
--- /dev/null
+++ b/target/site/jacoco/musichub.main/Main.html
@@ -0,0 +1 @@
+<?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>Main</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb'])"><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> &gt; <a href="index.html" class="el_package">musichub.main</a> &gt; <span class="el_class">Main</span></div><h1>Main</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">588 of 588</td><td class="ctr2">0 %</td><td class="bar">40 of 40</td><td class="ctr2">0 %</td><td class="ctr1">29</td><td class="ctr2">29</td><td class="ctr1">199</td><td class="ctr2">199</td><td class="ctr1">3</td><td class="ctr2">3</td></tr></tfoot><tbody><tr><td id="a1"><a href="Main.java.html#L17" class="el_method">main(String[])</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="548" alt="548"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="40" alt="40"/></td><td class="ctr2" id="e0">0 %</td><td class="ctr1" id="f0">27</td><td class="ctr2" id="g0">27</td><td class="ctr1" id="h0">185</td><td class="ctr2" id="i0">185</td><td class="ctr1" id="j0">1</td><td class="ctr2" id="k0">1</td></tr><tr><td id="a2"><a href="Main.java.html#L252" class="el_method">printAvailableCommands()</a></td><td class="bar" id="b1"><img src="../jacoco-resources/redbar.gif" width="8" height="10" title="37" alt="37"/></td><td class="ctr2" id="c1">0 %</td><td class="bar" id="d1"/><td class="ctr2" id="e1">n/a</td><td class="ctr1" id="f1">1</td><td class="ctr2" id="g1">1</td><td class="ctr1" id="h1">13</td><td class="ctr2" id="i1">13</td><td class="ctr1" id="j1">1</td><td class="ctr2" id="k1">1</td></tr><tr><td id="a0"><a href="Main.java.html#L14" class="el_method">Main()</a></td><td class="bar" id="b2"/><td class="ctr2" id="c2">0 %</td><td class="bar" id="d2"/><td class="ctr2" id="e2">n/a</td><td class="ctr1" id="f2">1</td><td class="ctr2" id="g2">1</td><td class="ctr1" id="h2">1</td><td class="ctr2" id="i2">1</td><td class="ctr1" id="j2">1</td><td class="ctr2" id="k2">1</td></tr></tbody></table><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
diff --git a/target/site/jacoco/musichub.main/Main.java.html b/target/site/jacoco/musichub.main/Main.java.html
new file mode 100644
index 0000000..df39af0
--- /dev/null
+++ b/target/site/jacoco/musichub.main/Main.java.html
@@ -0,0 +1,266 @@
+<?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>Main.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> &gt; <a href="index.source.html" class="el_package">musichub.main</a> &gt; <span class="el_source">Main.java</span></div><h1>Main.java</h1><pre class="source lang-java linenums">package musichub.main;
+
+import musichub.business.*;
+
+import javax.sound.sampled.LineUnavailableException;
+import javax.sound.sampled.UnsupportedAudioFileException;
+import java.io.IOException;
+import java.util.Iterator;
+import java.util.List;
+import java.util.Scanner;
+
+import static musichub.business.PathValidation.isPathValid;
+
+<span class="nc" id="L14">public class Main {</span>
+ public static void main(String[] args) throws UnsupportedAudioFileException, IOException, LineUnavailableException {
+
+<span class="nc" id="L17"> MusicHub theHub = new MusicHub();</span>
+
+<span class="nc" id="L19"> System.out.println(&quot;Type h for available commands&quot;);</span>
+
+
+<span class="nc" id="L22"> Scanner scan = new Scanner(System.in);</span>
+<span class="nc" id="L23"> String choice = scan.nextLine();</span>
+
+ String albumTitle;
+
+<span class="nc bnc" id="L27" title="All 2 branches missed."> if (choice.length() == 0) System.exit(0);</span>
+
+<span class="nc bnc" id="L29" title="All 2 branches missed."> while (!choice.equals(&quot;&quot;)) { //if the user puts nothing, quit the loop/system</span>
+<span class="nc bnc" id="L30" title="All 14 branches missed."> switch (choice.charAt(0)) {</span>
+ case 'q': //added the option directly in the switch instead of the loop
+<span class="nc" id="L32"> System.exit(0);</span>
+ case 'h':
+<span class="nc" id="L34"> printAvailableCommands();</span>
+<span class="nc" id="L35"> choice = scan.nextLine();</span>
+<span class="nc" id="L36"> break;</span>
+ case 't':
+ //album titles, ordered by date
+<span class="nc" id="L39"> System.out.println(theHub.getAlbumsTitlesSortedByDate());</span>
+<span class="nc" id="L40"> printAvailableCommands();</span>
+<span class="nc" id="L41"> choice = scan.nextLine();</span>
+<span class="nc" id="L42"> break;</span>
+ case 'g':
+ //songs of an album, sorted by genre
+<span class="nc" id="L45"> System.out.println(&quot;Songs of an album sorted by genre will be displayed; enter the album name, available albums are:&quot;);</span>
+<span class="nc" id="L46"> System.out.println(theHub.getAlbumsTitlesSortedByDate());</span>
+
+<span class="nc" id="L48"> albumTitle = scan.nextLine();</span>
+ try {
+<span class="nc" id="L50"> List&lt;Song&gt; songs = theHub.getAlbumSongsSortedByGenre(albumTitle);</span>
+<span class="nc" id="L51"> System.out.println(songs);</span>
+<span class="nc" id="L52"> } catch (NoAlbumFoundException ex) {</span>
+<span class="nc" id="L53"> System.out.println(&quot;No album found with the requested title &quot; + ex.getMessage());</span>
+<span class="nc" id="L54"> }</span>
+<span class="nc" id="L55"> printAvailableCommands();</span>
+<span class="nc" id="L56"> choice = scan.nextLine();</span>
+<span class="nc" id="L57"> break;</span>
+ case 'd':
+ //songs of an album
+<span class="nc" id="L60"> System.out.println(&quot;Songs of an album will be displayed; enter the album name, available albums are:&quot;);</span>
+<span class="nc" id="L61"> System.out.println(theHub.getAlbumsTitlesSortedByDate());</span>
+
+<span class="nc" id="L63"> albumTitle = scan.nextLine();</span>
+ try {
+<span class="nc" id="L65"> List&lt;AudioElement&gt; songs = theHub.getAlbumSongs(albumTitle);</span>
+<span class="nc" id="L66"> System.out.println(theHub.getAlbumSongs(albumTitle));</span>
+<span class="nc" id="L67"> String song = scan.nextLine();</span>
+<span class="nc" id="L68"> theHub.getAudioElement(songs, song);</span>
+<span class="nc" id="L69"> } catch (NoAlbumFoundException ex) {</span>
+<span class="nc" id="L70"> System.out.println(&quot;No album found with the requested title &quot; + ex.getMessage());</span>
+<span class="nc" id="L71"> }</span>
+<span class="nc" id="L72"> printAvailableCommands();</span>
+<span class="nc" id="L73"> choice = scan.nextLine();</span>
+<span class="nc" id="L74"> break;</span>
+ case 'u':
+ //audiobooks ordered by author
+<span class="nc" id="L77"> System.out.println(theHub.getAudiobooksTitlesSortedByAuthor());</span>
+<span class="nc" id="L78"> printAvailableCommands();</span>
+<span class="nc" id="L79"> choice = scan.nextLine();</span>
+<span class="nc" id="L80"> break;</span>
+ case 'c':
+ // add a new song
+<span class="nc" id="L83"> System.out.println(&quot;Enter a new song: &quot;);</span>
+<span class="nc" id="L84"> System.out.println(&quot;Song title: &quot;);</span>
+<span class="nc" id="L85"> String title = scan.nextLine();</span>
+<span class="nc" id="L86"> System.out.println(&quot;Song genre (jazz, classic, hiphop, rock, pop, rap):&quot;);</span>
+<span class="nc" id="L87"> String genre = scan.nextLine();</span>
+<span class="nc" id="L88"> System.out.println(&quot;Song artist: &quot;);</span>
+<span class="nc" id="L89"> String artist = scan.nextLine();</span>
+<span class="nc" id="L90"> System.out.println(&quot;Song length in seconds: &quot;);</span>
+<span class="nc" id="L91"> int length = Integer.parseInt(scan.nextLine());</span>
+
+<span class="nc" id="L93"> System.out.println(&quot;Song content: &quot;);</span>
+<span class="nc" id="L94"> String content = scan.nextLine();</span>
+<span class="nc bnc" id="L95" title="All 2 branches missed."> if (!isPathValid(content)) {</span>
+<span class="nc" id="L96"> System.out.println(&quot;The music file was not found with the path you've provided.\nType h for available commands&quot;);</span>
+<span class="nc" id="L97"> choice = scan.nextLine();</span>
+<span class="nc" id="L98"> break;</span>
+ }
+
+<span class="nc" id="L101"> Song s = new Song(title, artist, length, content, genre);</span>
+<span class="nc" id="L102"> theHub.addElement(s);</span>
+<span class="nc" id="L103"> System.out.println(&quot;New element list: &quot;);</span>
+<span class="nc" id="L104"> Iterator&lt;AudioElement&gt; it = theHub.elements();</span>
+<span class="nc bnc" id="L105" title="All 2 branches missed."> while (it.hasNext()) System.out.println(it.next().getTitle());</span>
+<span class="nc" id="L106"> System.out.println(&quot;Song created!&quot;);</span>
+<span class="nc" id="L107"> printAvailableCommands();</span>
+<span class="nc" id="L108"> choice = scan.nextLine();</span>
+<span class="nc" id="L109"> break;</span>
+ case 'a':
+ // add a new album
+<span class="nc" id="L112"> System.out.println(&quot;Enter a new album: &quot;);</span>
+<span class="nc" id="L113"> System.out.println(&quot;Album title: &quot;);</span>
+<span class="nc" id="L114"> String aTitle = scan.nextLine();</span>
+<span class="nc" id="L115"> System.out.println(&quot;Album artist: &quot;);</span>
+<span class="nc" id="L116"> String aArtist = scan.nextLine();</span>
+<span class="nc" id="L117"> System.out.println(&quot;Album length in seconds: &quot;);</span>
+<span class="nc" id="L118"> int aLength = Integer.parseInt(scan.nextLine());</span>
+<span class="nc" id="L119"> System.out.println(&quot;Album date as YYYY-DD-MM: &quot;);</span>
+<span class="nc" id="L120"> String aDate = scan.nextLine();</span>
+<span class="nc" id="L121"> Album a = new Album(aTitle, aArtist, aLength, aDate);</span>
+<span class="nc" id="L122"> theHub.addAlbum(a);</span>
+<span class="nc" id="L123"> System.out.println(&quot;New list of albums: &quot;);</span>
+<span class="nc" id="L124"> Iterator&lt;Album&gt; ita = theHub.albums();</span>
+<span class="nc bnc" id="L125" title="All 2 branches missed."> while (ita.hasNext()) System.out.println(ita.next().getTitle());</span>
+<span class="nc" id="L126"> System.out.println(&quot;Album created!&quot;);</span>
+<span class="nc" id="L127"> printAvailableCommands();</span>
+<span class="nc" id="L128"> choice = scan.nextLine();</span>
+<span class="nc" id="L129"> break;</span>
+ case '+':
+ //add a song to an album:
+<span class="nc" id="L132"> System.out.println(&quot;Add an existing song to an existing album&quot;);</span>
+<span class="nc" id="L133"> System.out.println(&quot;Type the name of the song you wish to add. Available songs: &quot;);</span>
+<span class="nc" id="L134"> Iterator&lt;AudioElement&gt; itae = theHub.elements();</span>
+<span class="nc bnc" id="L135" title="All 2 branches missed."> while (itae.hasNext()) {</span>
+<span class="nc" id="L136"> AudioElement ae = itae.next();</span>
+<span class="nc bnc" id="L137" title="All 2 branches missed."> if (ae instanceof Song) System.out.println(ae.getTitle());</span>
+<span class="nc" id="L138"> }</span>
+<span class="nc" id="L139"> String songTitle = scan.nextLine();</span>
+
+<span class="nc" id="L141"> System.out.println(&quot;Type the name of the album you wish to enrich. Available albums: &quot;);</span>
+<span class="nc" id="L142"> Iterator&lt;Album&gt; ait = theHub.albums();</span>
+<span class="nc bnc" id="L143" title="All 2 branches missed."> while (ait.hasNext()) {</span>
+<span class="nc" id="L144"> Album al = ait.next();</span>
+<span class="nc" id="L145"> System.out.println(al.getTitle());</span>
+<span class="nc" id="L146"> }</span>
+<span class="nc" id="L147"> String titleAlbum = scan.nextLine();</span>
+ try {
+<span class="nc" id="L149"> theHub.addElementToAlbum(songTitle, titleAlbum);</span>
+<span class="nc" id="L150"> } catch (NoAlbumFoundException | NoElementFoundException ex) {</span>
+<span class="nc" id="L151"> System.out.println(ex.getMessage());</span>
+<span class="nc" id="L152"> }</span>
+<span class="nc" id="L153"> System.out.println(&quot;Song added to the album!&quot;);</span>
+<span class="nc" id="L154"> printAvailableCommands();</span>
+<span class="nc" id="L155"> choice = scan.nextLine();</span>
+<span class="nc" id="L156"> break;</span>
+ case 'l':
+ // add a new audiobook
+<span class="nc" id="L159"> System.out.println(&quot;Enter a new audiobook: &quot;);</span>
+<span class="nc" id="L160"> System.out.println(&quot;AudioBook title: &quot;);</span>
+<span class="nc" id="L161"> String bTitle = scan.nextLine();</span>
+<span class="nc" id="L162"> System.out.println(&quot;AudioBook category (youth, novel, theater, documentary, speech)&quot;);</span>
+<span class="nc" id="L163"> String bCategory = scan.nextLine();</span>
+<span class="nc" id="L164"> System.out.println(&quot;AudioBook artist: &quot;);</span>
+<span class="nc" id="L165"> String bArtist = scan.nextLine();</span>
+<span class="nc" id="L166"> System.out.println(&quot;AudioBook length in seconds: &quot;);</span>
+<span class="nc" id="L167"> int bLength = Integer.parseInt(scan.nextLine());</span>
+<span class="nc" id="L168"> System.out.println(&quot;AudioBook content: &quot;);</span>
+<span class="nc" id="L169"> String bContent = scan.nextLine();</span>
+<span class="nc" id="L170"> System.out.println(&quot;AudioBook language (french, english, italian, spanish, german)&quot;);</span>
+<span class="nc" id="L171"> String bLanguage = scan.nextLine();</span>
+<span class="nc" id="L172"> AudioBook b = new AudioBook(bTitle, bArtist, bLength, bContent, bLanguage, bCategory);</span>
+<span class="nc" id="L173"> theHub.addElement(b);</span>
+<span class="nc" id="L174"> System.out.println(&quot;Audiobook created! New element list: &quot;);</span>
+<span class="nc" id="L175"> Iterator&lt;AudioElement&gt; itl = theHub.elements();</span>
+<span class="nc bnc" id="L176" title="All 2 branches missed."> while (itl.hasNext()) System.out.println(itl.next().getTitle());</span>
+<span class="nc" id="L177"> printAvailableCommands();</span>
+<span class="nc" id="L178"> choice = scan.nextLine();</span>
+<span class="nc" id="L179"> break;</span>
+ case 'p':
+ //create a new playlist from existing elements
+<span class="nc" id="L182"> System.out.println(&quot;Add an existing song or audiobook to a new playlist&quot;);</span>
+<span class="nc" id="L183"> System.out.println(&quot;Existing playlists:&quot;);</span>
+<span class="nc" id="L184"> Iterator&lt;PlayList&gt; itpl = theHub.playlists();</span>
+<span class="nc bnc" id="L185" title="All 2 branches missed."> while (itpl.hasNext()) {</span>
+<span class="nc" id="L186"> PlayList pl = itpl.next();</span>
+<span class="nc" id="L187"> System.out.println(pl.getTitle());</span>
+<span class="nc" id="L188"> }</span>
+<span class="nc" id="L189"> System.out.println(&quot;Type the name of the playlist you wish to create:&quot;);</span>
+<span class="nc" id="L190"> String playListTitle = scan.nextLine();</span>
+<span class="nc" id="L191"> PlayList pl = new PlayList(playListTitle);</span>
+<span class="nc" id="L192"> theHub.addPlaylist(pl);</span>
+<span class="nc" id="L193"> System.out.println(&quot;Available elements: &quot;);</span>
+
+<span class="nc" id="L195"> Iterator&lt;AudioElement&gt; itael = theHub.elements();</span>
+<span class="nc bnc" id="L196" title="All 2 branches missed."> while (itael.hasNext()) {</span>
+<span class="nc" id="L197"> AudioElement ae = itael.next();</span>
+<span class="nc" id="L198"> System.out.println(ae.getTitle());</span>
+<span class="nc" id="L199"> }</span>
+<span class="nc bnc" id="L200" title="All 2 branches missed."> while (choice.charAt(0) != 'n') {</span>
+<span class="nc" id="L201"> System.out.println(&quot;Type the name of the audio element you wish to add or 'n' to exit:&quot;);</span>
+<span class="nc" id="L202"> String elementTitle = scan.nextLine();</span>
+ try {
+<span class="nc" id="L204"> theHub.addElementToPlayList(elementTitle, playListTitle);</span>
+<span class="nc" id="L205"> } catch (NoPlayListFoundException | NoElementFoundException ex) {</span>
+<span class="nc" id="L206"> System.out.println(ex.getMessage());</span>
+<span class="nc" id="L207"> }</span>
+
+<span class="nc" id="L209"> System.out.println(&quot;Type y to add a new one, n to end&quot;);</span>
+<span class="nc" id="L210"> choice = scan.nextLine();</span>
+<span class="nc" id="L211"> }</span>
+<span class="nc" id="L212"> System.out.println(&quot;Playlist created!&quot;);</span>
+<span class="nc" id="L213"> printAvailableCommands();</span>
+<span class="nc" id="L214"> choice = scan.nextLine();</span>
+<span class="nc" id="L215"> break;</span>
+ case '-':
+ //delete a playlist
+<span class="nc" id="L218"> System.out.println(&quot;Delete an existing playlist. Available playlists:&quot;);</span>
+<span class="nc" id="L219"> Iterator&lt;PlayList&gt; itp = theHub.playlists();</span>
+<span class="nc bnc" id="L220" title="All 2 branches missed."> while (itp.hasNext()) {</span>
+<span class="nc" id="L221"> PlayList p = itp.next();</span>
+<span class="nc" id="L222"> System.out.println(p.getTitle());</span>
+<span class="nc" id="L223"> }</span>
+<span class="nc" id="L224"> String plTitle = scan.nextLine();</span>
+ try {
+<span class="nc" id="L226"> theHub.deletePlayList(plTitle);</span>
+<span class="nc" id="L227"> } catch (NoPlayListFoundException ex) {</span>
+<span class="nc" id="L228"> System.out.println(ex.getMessage());</span>
+<span class="nc" id="L229"> }</span>
+<span class="nc" id="L230"> System.out.println(&quot;Playlist deleted!&quot;);</span>
+<span class="nc" id="L231"> printAvailableCommands();</span>
+<span class="nc" id="L232"> choice = scan.nextLine();</span>
+<span class="nc" id="L233"> break;</span>
+ case 's':
+ //save elements, albums, playlists
+<span class="nc" id="L236"> theHub.saveElements();</span>
+<span class="nc" id="L237"> theHub.saveAlbums();</span>
+<span class="nc" id="L238"> theHub.savePlayLists();</span>
+<span class="nc" id="L239"> System.out.println(&quot;Elements, albums and playlists saved!&quot;);</span>
+<span class="nc" id="L240"> printAvailableCommands();</span>
+<span class="nc" id="L241"> choice = scan.nextLine();</span>
+<span class="nc" id="L242"> break;</span>
+ default:
+
+<span class="nc" id="L245"> break;</span>
+ }
+ }
+<span class="nc" id="L248"> scan.close();</span>
+<span class="nc" id="L249"> }</span>
+
+ private static void printAvailableCommands() {
+<span class="nc" id="L252"> System.out.println(&quot;t: display the album titles, ordered by date&quot;);</span>
+<span class="nc" id="L253"> System.out.println(&quot;g: display songs of an album, ordered by genre&quot;);</span>
+<span class="nc" id="L254"> System.out.println(&quot;d: display songs of an album&quot;);</span>
+<span class="nc" id="L255"> System.out.println(&quot;u: display audiobooks ordered by author&quot;);</span>
+<span class="nc" id="L256"> System.out.println(&quot;c: add a new song&quot;);</span>
+<span class="nc" id="L257"> System.out.println(&quot;a: add a new album&quot;);</span>
+<span class="nc" id="L258"> System.out.println(&quot;+: add a song to an album&quot;);</span>
+<span class="nc" id="L259"> System.out.println(&quot;l: add a new audiobook&quot;);</span>
+<span class="nc" id="L260"> System.out.println(&quot;p: create a new playlist from existing songs and audio books&quot;);</span>
+<span class="nc" id="L261"> System.out.println(&quot;-: delete an existing playlist&quot;);</span>
+<span class="nc" id="L262"> System.out.println(&quot;s: save elements, albums, playlists&quot;);</span>
+<span class="nc" id="L263"> System.out.println(&quot;q: quit program&quot;);</span>
+<span class="nc" id="L264"> }</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
diff --git a/target/site/jacoco/musichub.main/index.html b/target/site/jacoco/musichub.main/index.html
new file mode 100644
index 0000000..c4e995d
--- /dev/null
+++ b/target/site/jacoco/musichub.main/index.html
@@ -0,0 +1 @@
+<?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.main</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.source.html" class="el_source">Source Files</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> &gt; <span class="el_package">musichub.main</span></div><h1>musichub.main</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">588 of 588</td><td class="ctr2">0 %</td><td class="bar">40 of 40</td><td class="ctr2">0 %</td><td class="ctr1">29</td><td class="ctr2">29</td><td class="ctr1">199</td><td class="ctr2">199</td><td class="ctr1">3</td><td class="ctr2">3</td><td class="ctr1">1</td><td class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a href="Main.html" class="el_class">Main</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="588" alt="588"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="40" alt="40"/></td><td class="ctr2" id="e0">0 %</td><td class="ctr1" id="f0">29</td><td class="ctr2" id="g0">29</td><td class="ctr1" id="h0">199</td><td class="ctr2" id="i0">199</td><td class="ctr1" id="j0">3</td><td class="ctr2" id="k0">3</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr></tbody></table><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
diff --git a/target/site/jacoco/musichub.main/index.source.html b/target/site/jacoco/musichub.main/index.source.html
new file mode 100644
index 0000000..189774f
--- /dev/null
+++ b/target/site/jacoco/musichub.main/index.source.html
@@ -0,0 +1 @@
+<?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.main</title><script type="text/javascript" src="../jacoco-resources/sort.js"></script></head><body onload="initialSort(['breadcrumb', 'coveragetable'])"><div class="breadcrumb" id="breadcrumb"><span class="info"><a href="index.html" class="el_class">Classes</a><a href="../jacoco-sessions.html" class="el_session">Sessions</a></span><a href="../index.html" class="el_report">spoteezer</a> &gt; <span class="el_package">musichub.main</span></div><h1>musichub.main</h1><table class="coverage" cellspacing="0" id="coveragetable"><thead><tr><td class="sortable" id="a" onclick="toggleSort(this)">Element</td><td class="down sortable bar" id="b" onclick="toggleSort(this)">Missed Instructions</td><td class="sortable ctr2" id="c" onclick="toggleSort(this)">Cov.</td><td class="sortable bar" id="d" onclick="toggleSort(this)">Missed Branches</td><td class="sortable ctr2" id="e" onclick="toggleSort(this)">Cov.</td><td class="sortable ctr1" id="f" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="g" onclick="toggleSort(this)">Cxty</td><td class="sortable ctr1" id="h" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="i" onclick="toggleSort(this)">Lines</td><td class="sortable ctr1" id="j" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="k" onclick="toggleSort(this)">Methods</td><td class="sortable ctr1" id="l" onclick="toggleSort(this)">Missed</td><td class="sortable ctr2" id="m" onclick="toggleSort(this)">Classes</td></tr></thead><tfoot><tr><td>Total</td><td class="bar">588 of 588</td><td class="ctr2">0 %</td><td class="bar">40 of 40</td><td class="ctr2">0 %</td><td class="ctr1">29</td><td class="ctr2">29</td><td class="ctr1">199</td><td class="ctr2">199</td><td class="ctr1">3</td><td class="ctr2">3</td><td class="ctr1">1</td><td class="ctr2">1</td></tr></tfoot><tbody><tr><td id="a0"><a href="Main.java.html" class="el_source">Main.java</a></td><td class="bar" id="b0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="588" alt="588"/></td><td class="ctr2" id="c0">0 %</td><td class="bar" id="d0"><img src="../jacoco-resources/redbar.gif" width="120" height="10" title="40" alt="40"/></td><td class="ctr2" id="e0">0 %</td><td class="ctr1" id="f0">29</td><td class="ctr2" id="g0">29</td><td class="ctr1" id="h0">199</td><td class="ctr2" id="i0">199</td><td class="ctr1" id="j0">3</td><td class="ctr2" id="k0">3</td><td class="ctr1" id="l0">1</td><td class="ctr2" id="m0">1</td></tr></tbody></table><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