aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorsaid belhadj <saidbelhadj0312@gmail.com>2021-06-26 01:58:15 +0200
committersaid belhadj <saidbelhadj0312@gmail.com>2021-06-26 01:58:15 +0200
commite58b48a3162539cb79ff495d6040ca6f53f069d6 (patch)
treeb85ebc592158883f806d6dc7b45e53fd7ee3b5df
parentf920b48762cae194d5a9f7808273826714166424 (diff)
Add the possibility to listen a song thanks to Audio System library
-rw-r--r--Song/Side_To_Side.wavbin0 -> 43422962 bytes
-rw-r--r--files/albums.xml2
-rw-r--r--files/elements.xml6
-rw-r--r--src/musichub/business/AudioElement.java16
-rw-r--r--src/musichub/business/MusicHub.java13
-rw-r--r--src/musichub/business/Song.java11
-rw-r--r--src/musichub/main/Main.java11
7 files changed, 55 insertions, 4 deletions
diff --git a/Song/Side_To_Side.wav b/Song/Side_To_Side.wav
new file mode 100644
index 0000000..3c874db
--- /dev/null
+++ b/Song/Side_To_Side.wav
Binary files differ
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());
}