diff options
| author | said belhadj <saidbelhadj0312@gmail.com> | 2021-06-26 01:58:15 +0200 | 
|---|---|---|
| committer | said belhadj <saidbelhadj0312@gmail.com> | 2021-06-26 01:58:15 +0200 | 
| commit | e58b48a3162539cb79ff495d6040ca6f53f069d6 (patch) | |
| tree | b85ebc592158883f806d6dc7b45e53fd7ee3b5df | |
| parent | f920b48762cae194d5a9f7808273826714166424 (diff) | |
Add the possibility to listen a song thanks to Audio System library
| -rw-r--r-- | Song/Side_To_Side.wav | bin | 0 -> 43422962 bytes | |||
| -rw-r--r-- | files/albums.xml | 2 | ||||
| -rw-r--r-- | files/elements.xml | 6 | ||||
| -rw-r--r-- | src/musichub/business/AudioElement.java | 16 | ||||
| -rw-r--r-- | src/musichub/business/MusicHub.java | 13 | ||||
| -rw-r--r-- | src/musichub/business/Song.java | 11 | ||||
| -rw-r--r-- | src/musichub/main/Main.java | 11 | 
7 files changed, 55 insertions, 4 deletions
diff --git a/Song/Side_To_Side.wav b/Song/Side_To_Side.wav Binary files differnew file mode 100644 index 0000000..3c874db --- /dev/null +++ b/Song/Side_To_Side.wav diff --git a/files/albums.xml b/files/albums.xml index edfd610..edb2a94 100644 --- a/files/albums.xml +++ b/files/albums.xml @@ -12,6 +12,7 @@              <UUID>b2ee0ca0-b5e2-4bc9-8fed-7932fb145f2f</UUID>              <UUID>bbe99998-1be6-4a40-8bf0-6a7fce9087c9</UUID>              <UUID>66d277ca-cbc4-471c-a07e-082363375bcc</UUID> +            <UUID>44136020-dc80-4522-9b71-2b9aad5e3039</UUID>          </songs>      </album>      <album> @@ -22,6 +23,7 @@          <date>1978-01-23</date>          <songs>              <UUID>44136020-dc80-4522-9b71-2b9aad5e3039</UUID> +            <UUID>66d277ca-cbc4-471c-a07e-082363375bcc</UUID>          </songs>      </album>  </albums>
\ No newline at end of file diff --git a/files/elements.xml b/files/elements.xml index 7fefc5f..553f228 100644 --- a/files/elements.xml +++ b/files/elements.xml @@ -9,11 +9,11 @@          <genre>pop</genre>      </song>      <song> -        <title>I Want to Hold your Hand</title> -        <artist>The Beatles</artist> +        <title>Side To Side</title> +        <artist>Ariana Grande</artist>          <length>186</length>          <UUID>66d277ca-cbc4-471c-a07e-082363375bcc</UUID> -        <content>i_want_to_hold_your_hand.mp3</content> +        <content>Song/Side_To_Side.wav</content>          <genre>rock</genre>      </song>      <song> diff --git a/src/musichub/business/AudioElement.java b/src/musichub/business/AudioElement.java index e0a686b..9294b49 100644 --- a/src/musichub/business/AudioElement.java +++ b/src/musichub/business/AudioElement.java @@ -3,8 +3,16 @@ package musichub.business;  import org.w3c.dom.Document;  import org.w3c.dom.Element; +import java.io.File; +import java.io.IOException;  import java.util.UUID; +import javax.sound.sampled.AudioInputStream; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.Clip; +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.UnsupportedAudioFileException; +  public abstract class AudioElement {      protected String title;      protected String artist; @@ -84,5 +92,13 @@ public abstract class AudioElement {          parentElement.appendChild(contentElement);      } +     +    public void playSong() throws UnsupportedAudioFileException, IOException, LineUnavailableException { +    	File file = new File(this.content); +    	AudioInputStream audioStream = AudioSystem.getAudioInputStream(file); +    	Clip clip = AudioSystem.getClip(); +    	clip.open(audioStream); +    	clip.start(); +    }  }
\ No newline at end of file diff --git a/src/musichub/business/MusicHub.java b/src/musichub/business/MusicHub.java index 38e2214..e138d84 100644 --- a/src/musichub/business/MusicHub.java +++ b/src/musichub/business/MusicHub.java @@ -6,8 +6,12 @@ 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; +  class SortByDate implements Comparator<Album> {      public int compare(Album a1, Album a2) {          return a1.getDate().compareTo(a2.getDate()); @@ -326,4 +330,13 @@ public class MusicHub {          }          xmlHandler.createXMLFile(document, ELEMENTS_FILE_PATH);      } +     +    public void getSong(List<AudioElement> Songs, String songTitle) throws NoAlbumFoundException, UnsupportedAudioFileException, IOException, LineUnavailableException { +        for (AudioElement s : Songs) { +            if (s.getTitle().equalsIgnoreCase(songTitle)) { +                s.playSong(); +            } +        } + +    }  }
\ No newline at end of file diff --git a/src/musichub/business/Song.java b/src/musichub/business/Song.java index 3e9011b..7b90156 100644 --- a/src/musichub/business/Song.java +++ b/src/musichub/business/Song.java @@ -1,5 +1,14 @@  package musichub.business; +import java.io.File; +import java.io.IOException; + +import javax.sound.sampled.AudioInputStream; +import javax.sound.sampled.AudioSystem; +import javax.sound.sampled.Clip; +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.UnsupportedAudioFileException; +  import org.w3c.dom.Document;  import org.w3c.dom.Element; @@ -53,4 +62,6 @@ public class Song extends AudioElement {          parentElement.appendChild(song);      } +     +  }
\ No newline at end of file diff --git a/src/musichub/main/Main.java b/src/musichub/main/Main.java index b72a95b..58080bd 100644 --- a/src/musichub/main/Main.java +++ b/src/musichub/main/Main.java @@ -2,11 +2,17 @@ package musichub.main;  import musichub.business.*; +import java.io.IOException; +import java.util.ArrayList;  import java.util.Iterator; +import java.util.List;  import java.util.Scanner; +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.UnsupportedAudioFileException; +  public class Main { -    public static void main(String[] args) { +    public static void main(String[] args) throws UnsupportedAudioFileException, IOException, LineUnavailableException {          MusicHub theHub = new MusicHub(); @@ -55,7 +61,10 @@ public class Main {                      albumTitle = scan.nextLine();                      try { +                    	List<AudioElement> songs = theHub.getAlbumSongs(albumTitle);                          System.out.println(theHub.getAlbumSongs(albumTitle)); +                        String song = scan.nextLine(); +                        theHub.getSong(songs, song);                      } catch (NoAlbumFoundException ex) {                          System.out.println("No album found with the requested title " + ex.getMessage());                      }  | 
