diff options
| author | Clyhtsuriva <61652557+clyhtsuriva@users.noreply.github.com> | 2021-06-28 21:40:03 +0000 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2021-06-28 21:40:03 +0000 |
| commit | 1504d0255279133668b85f5c092f040a14fbc35f (patch) | |
| tree | 0c9b9e927aa4d5f35ccc07e45e8abd973b2bad08 /src/main/java/musichub/business | |
| parent | 48d56d9db8fe93f1e1799674fefabdfc677d2eb7 (diff) | |
| parent | 49196ae84aea338dbc6cd10f4d135e4b717cdd1f (diff) | |
| download | Spoteezer-master.tar.gz Spoteezer-master.tar.bz2 Spoteezer-master.zip | |
Merging develop to master.
Diffstat (limited to '')
| -rw-r--r-- | src/main/java/musichub/business/Album.java (renamed from src/musichub/business/Album.java) | 0 | ||||
| -rw-r--r-- | src/main/java/musichub/business/AudioBook.java (renamed from src/musichub/business/AudioBook.java) | 0 | ||||
| -rw-r--r-- | src/main/java/musichub/business/AudioElement.java (renamed from src/musichub/business/AudioElement.java) | 44 | ||||
| -rw-r--r-- | src/main/java/musichub/business/Category.java (renamed from src/musichub/business/Category.java) | 0 | ||||
| -rw-r--r-- | src/main/java/musichub/business/Genre.java (renamed from src/musichub/business/Genre.java) | 0 | ||||
| -rw-r--r-- | src/main/java/musichub/business/Language.java (renamed from src/musichub/business/Language.java) | 0 | ||||
| -rw-r--r-- | src/main/java/musichub/business/MusicHub.java (renamed from src/musichub/business/MusicHub.java) | 76 | ||||
| -rw-r--r-- | src/main/java/musichub/business/NoAlbumFoundException.java (renamed from src/musichub/business/NoAlbumFoundException.java) | 0 | ||||
| -rw-r--r-- | src/main/java/musichub/business/NoElementFoundException.java (renamed from src/musichub/business/NoElementFoundException.java) | 0 | ||||
| -rw-r--r-- | src/main/java/musichub/business/NoPlayListFoundException.java (renamed from src/musichub/business/NoPlayListFoundException.java) | 0 | ||||
| -rw-r--r-- | src/main/java/musichub/business/PlayList.java (renamed from src/musichub/business/PlayList.java) | 0 | ||||
| -rw-r--r-- | src/main/java/musichub/business/Song.java (renamed from src/musichub/business/Song.java) | 2 |
12 files changed, 122 insertions, 0 deletions
diff --git a/src/musichub/business/Album.java b/src/main/java/musichub/business/Album.java index 01fd179..01fd179 100644 --- a/src/musichub/business/Album.java +++ b/src/main/java/musichub/business/Album.java diff --git a/src/musichub/business/AudioBook.java b/src/main/java/musichub/business/AudioBook.java index 80392d6..80392d6 100644 --- a/src/musichub/business/AudioBook.java +++ b/src/main/java/musichub/business/AudioBook.java diff --git a/src/musichub/business/AudioElement.java b/src/main/java/musichub/business/AudioElement.java index e0a686b..80a649a 100644 --- a/src/musichub/business/AudioElement.java +++ b/src/main/java/musichub/business/AudioElement.java @@ -1,8 +1,13 @@ package musichub.business; +import musichub.util.LogHandler; import org.w3c.dom.Document; import org.w3c.dom.Element; +import javax.sound.sampled.*; +import java.io.File; +import java.io.IOException; +import java.util.Scanner; import java.util.UUID; public abstract class AudioElement { @@ -84,5 +89,44 @@ public abstract class AudioElement { parentElement.appendChild(contentElement); } + + public void manageAudioElement() throws UnsupportedAudioFileException, IOException, LineUnavailableException { + + Scanner scanner = new Scanner(System.in); + + File file = new File(this.content); + AudioInputStream audioStream = AudioSystem.getAudioInputStream(file); + Clip clip = AudioSystem.getClip(); + clip.open(audioStream); + + String action = ""; + + while(!action.equals("Q")) { + System.out.println("P = Play \b S = Stop \b R = Reset \b Q = Quit"); + System.out.println("Enter your choice"); + action = scanner.next(); + action = action.toUpperCase(); + + switch (action) { + case "S", "Q" -> { + clip.stop(); + LogHandler.write("Music stopped", "INFO"); + } + case "P" -> { + clip.start(); + LogHandler.write("Music started", "INFO"); + } + case "R" -> { + clip.setMicrosecondPosition(0); + LogHandler.write("Music reseted", "INFO"); + } + default -> System.out.println("try again"); + } + System.out.println("You stopped the Audio element"); + } + + clip.close(); + + } }
\ No newline at end of file diff --git a/src/musichub/business/Category.java b/src/main/java/musichub/business/Category.java index f676e51..f676e51 100644 --- a/src/musichub/business/Category.java +++ b/src/main/java/musichub/business/Category.java diff --git a/src/musichub/business/Genre.java b/src/main/java/musichub/business/Genre.java index 18deca6..18deca6 100644 --- a/src/musichub/business/Genre.java +++ b/src/main/java/musichub/business/Genre.java diff --git a/src/musichub/business/Language.java b/src/main/java/musichub/business/Language.java index 679e586..679e586 100644 --- a/src/musichub/business/Language.java +++ b/src/main/java/musichub/business/Language.java diff --git a/src/musichub/business/MusicHub.java b/src/main/java/musichub/business/MusicHub.java index 38e2214..8db2f11 100644 --- a/src/musichub/business/MusicHub.java +++ b/src/main/java/musichub/business/MusicHub.java @@ -6,6 +6,9 @@ import org.w3c.dom.Element; import org.w3c.dom.Node; import org.w3c.dom.NodeList; +import javax.sound.sampled.LineUnavailableException; +import javax.sound.sampled.UnsupportedAudioFileException; +import java.io.IOException; import java.util.*; class SortByDate implements Comparator<Album> { @@ -326,4 +329,77 @@ public class MusicHub { } xmlHandler.createXMLFile(document, ELEMENTS_FILE_PATH); } + + public void getAudioElement(List<AudioElement> audios, String elementTitle) throws NoAlbumFoundException, UnsupportedAudioFileException, IOException, LineUnavailableException { + for (AudioElement el : audios) { + if (el.getTitle().equalsIgnoreCase(elementTitle)) { + el.manageAudioElement(); + } + } + + } + + public void searchAudioElement() throws UnsupportedAudioFileException, NoAlbumFoundException, LineUnavailableException, IOException, NoElementFoundException { + Scanner scanner = new Scanner(System.in); + System.out.println("Entrez le titre ou l'artiste de la musique que vous souhaitez chercher dans la base de données"); + String word = scanner.next().toLowerCase(Locale.ROOT); + List<AudioElement> searchResult = new ArrayList<>(); + for(AudioElement el : elements){ + if(el.getTitle().toLowerCase(Locale.ROOT).contains(word) || el.getArtist().toLowerCase(Locale.ROOT).contains(word)){ + searchResult.add(el); + System.out.println(el); + } + } + + if (searchResult.isEmpty()) { + throw new NoElementFoundException("Any result for your search"); + } + if (searchResult.size() == 1) { + this.getAudioElement(searchResult, searchResult.get(0).getTitle()); + } + } + + /** + * Method getting a list of playlists + * + * @return a list of playlist titles + * @author Anthony BOULANT + */ + public String getPlayListsTitles() { + StringBuilder titleList = new StringBuilder(); + + for (PlayList pl : playlists) + titleList.append(pl.getTitle()).append("\n"); + return titleList.toString(); + } + + /** + * Method checking the songs contained in a chosen playlist and returning them if found. + * + * @param playListTitle the title of a (chosen) playlist + * @return a list of songs from a playlist + * @throws NoPlayListFoundException if the chosen playlist doesn't exist + * @author Anthony BOULANT + */ + public List<AudioElement> getPlayListSongs(String playListTitle) throws NoPlayListFoundException { + PlayList thePlayList = null; + ArrayList<AudioElement> songsInPlayList = new ArrayList<>(); + for (PlayList pl : playlists) { + if (pl.getTitle().equalsIgnoreCase(playListTitle)) { + thePlayList = pl; + break; + } + } + if (thePlayList == null) throw new NoPlayListFoundException("No playlist with this title in the MusicHub!"); + + List<UUID> songIDs = thePlayList.getElements(); + for (UUID id : songIDs) + for (AudioElement el : elements) { + if (el instanceof Song) { + if (el.getUUID().equals(id)) songsInPlayList.add(el); + } + } + return songsInPlayList; + + } }
\ No newline at end of file diff --git a/src/musichub/business/NoAlbumFoundException.java b/src/main/java/musichub/business/NoAlbumFoundException.java index 04cbfcd..04cbfcd 100644 --- a/src/musichub/business/NoAlbumFoundException.java +++ b/src/main/java/musichub/business/NoAlbumFoundException.java diff --git a/src/musichub/business/NoElementFoundException.java b/src/main/java/musichub/business/NoElementFoundException.java index a9b0d76..a9b0d76 100644 --- a/src/musichub/business/NoElementFoundException.java +++ b/src/main/java/musichub/business/NoElementFoundException.java diff --git a/src/musichub/business/NoPlayListFoundException.java b/src/main/java/musichub/business/NoPlayListFoundException.java index c5eb413..c5eb413 100644 --- a/src/musichub/business/NoPlayListFoundException.java +++ b/src/main/java/musichub/business/NoPlayListFoundException.java diff --git a/src/musichub/business/PlayList.java b/src/main/java/musichub/business/PlayList.java index 4180a62..4180a62 100644 --- a/src/musichub/business/PlayList.java +++ b/src/main/java/musichub/business/PlayList.java diff --git a/src/musichub/business/Song.java b/src/main/java/musichub/business/Song.java index 3e9011b..564b7c5 100644 --- a/src/musichub/business/Song.java +++ b/src/main/java/musichub/business/Song.java @@ -53,4 +53,6 @@ public class Song extends AudioElement { parentElement.appendChild(song); } + + }
\ No newline at end of file |
