diff options
Diffstat (limited to 'src/main/java/musichub')
-rw-r--r-- | src/main/java/musichub/business/MusicHub.java | 21 | ||||
-rw-r--r-- | src/main/java/musichub/main/Main.java | 23 | ||||
-rw-r--r-- | src/main/java/musichub/util/LogHandler.java | 68 | ||||
-rw-r--r-- | src/main/java/musichub/util/PathValidation.java (renamed from src/main/java/musichub/business/PathValidation.java) | 16 |
4 files changed, 122 insertions, 6 deletions
diff --git a/src/main/java/musichub/business/MusicHub.java b/src/main/java/musichub/business/MusicHub.java index f7cf137..bbac505 100644 --- a/src/main/java/musichub/business/MusicHub.java +++ b/src/main/java/musichub/business/MusicHub.java @@ -339,4 +339,25 @@ public class MusicHub { } } + + public void searchAudioElement() throws UnsupportedAudioFileException, NoAlbumFoundException, LineUnavailableException, IOException { + 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()){ + System.err.println("Aucun résultat pour votre recherche"); + } + if (searchResult.size()==1){ + this.getAudioElement(searchResult, searchResult.get(0).getTitle()); + } + } + }
\ No newline at end of file diff --git a/src/main/java/musichub/main/Main.java b/src/main/java/musichub/main/Main.java index e2e4731..cd1fd5f 100644 --- a/src/main/java/musichub/main/Main.java +++ b/src/main/java/musichub/main/Main.java @@ -1,6 +1,7 @@ package musichub.main; import musichub.business.*; +import musichub.util.LogHandler; import javax.sound.sampled.LineUnavailableException; import javax.sound.sampled.UnsupportedAudioFileException; @@ -9,10 +10,11 @@ import java.util.Iterator; import java.util.List; import java.util.Scanner; -import static musichub.business.PathValidation.isPathValid; +import static musichub.util.PathValidation.isPathValid; public class Main { - public static void main(String[] args) throws UnsupportedAudioFileException, IOException, LineUnavailableException { + public static void main(String[] args) throws UnsupportedAudioFileException, IOException, LineUnavailableException, NoAlbumFoundException { + MusicHub theHub = new MusicHub(); @@ -93,7 +95,9 @@ public class Main { System.out.println("Song content: "); String content = scan.nextLine(); if (!isPathValid(content)) { - System.out.println("The music file was not found with the path you've provided.\nType h for available commands"); + String logMsg = "The music file was not found with the path you've provided or the extension is not .wav"; + LogHandler.write(logMsg, "WARNING"); //write a line in the log file + System.out.println(logMsg + "\nType h for available commands"); choice = scan.nextLine(); break; } @@ -240,6 +244,16 @@ public class Main { printAvailableCommands(); choice = scan.nextLine(); break; + case 'r': + //search a music + theHub.searchAudioElement(); + printAvailableCommands(); + case 'o': + //consult the app logs + LogHandler.read(); + System.out.println("Type h for available commands"); + choice = scan.nextLine(); + break; default: break; @@ -253,6 +267,7 @@ public class Main { System.out.println("g: display songs of an album, ordered by genre"); System.out.println("d: display songs of an album"); System.out.println("u: display audiobooks ordered by author"); + System.out.println("r: search audio elements"); System.out.println("c: add a new song"); System.out.println("a: add a new album"); System.out.println("+: add a song to an album"); @@ -260,6 +275,8 @@ public class Main { System.out.println("p: create a new playlist from existing songs and audio books"); System.out.println("-: delete an existing playlist"); System.out.println("s: save elements, albums, playlists"); + System.out.println("o: consult the app logs"); System.out.println("q: quit program"); } + }
\ No newline at end of file diff --git a/src/main/java/musichub/util/LogHandler.java b/src/main/java/musichub/util/LogHandler.java new file mode 100644 index 0000000..988b149 --- /dev/null +++ b/src/main/java/musichub/util/LogHandler.java @@ -0,0 +1,68 @@ +package musichub.util; + +import java.io.IOException; +import java.nio.file.Files; +import java.nio.file.Path; +import java.nio.file.StandardOpenOption; +import java.sql.Timestamp; + +/** + * Class offering a log writing method. + * + * @author Aimeric ADJUTOR + * @version 1.0 + */ + +public final class LogHandler { + + /** + * Method that just throws an AssertionError if the class is called + * + * @throws AssertionError you can't instantiate this class + * @author Aimeric ADJUTOR + */ + + public LogHandler() { + throw new AssertionError("You just can't instantiate this class."); + } + + /** + * Method that writes a log message to spoteezer.log + * + * @param msg the message to write + * @param type the type of log + * @throws IOException if the file's not there + */ + public static void write(String msg, String type) throws IOException { + + Timestamp timestamp = new Timestamp(System.currentTimeMillis()); + + //Create the log using the given message + String logMsg = "\n[" + timestamp + "] " + type + ": " + msg; + + // Define the file name of the file + Path fileName = Path.of("log/spoteezer.log"); + + // Write into the file + Files.writeString(fileName, logMsg, StandardOpenOption.APPEND); + + + } + + /** + * Method that prints the content of spoteezer.log + * + * @throws IOException if the file's not there + */ + public static void read() throws IOException { + Path fileName = Path.of("log/spoteezer.log"); + + // Read the content of the file + String file_content = Files.readString(fileName); + + // Print the content inside the file + System.out.println("\n" + file_content + "\n"); + + } + +}
\ No newline at end of file diff --git a/src/main/java/musichub/business/PathValidation.java b/src/main/java/musichub/util/PathValidation.java index b0281ba..ea00c24 100644 --- a/src/main/java/musichub/business/PathValidation.java +++ b/src/main/java/musichub/util/PathValidation.java @@ -1,4 +1,4 @@ -package musichub.business; +package musichub.util; import java.nio.file.Files; import java.nio.file.Path; @@ -25,15 +25,25 @@ public final class PathValidation { } /** - * Method that checks the validity of a given path + * Method that checks the validity of a given path and file. * * @param inputPath the path given by the user * @return a boolean */ public static boolean isPathValid(String inputPath) { + boolean isExtensionValid = false; + + int index = inputPath.lastIndexOf('.'); + if (index > 0) { + String extension = inputPath.substring(index + 1); + if (extension.equals("wav")) { + isExtensionValid = true; + } + } + Path path = Paths.get(inputPath); - return Files.exists(path); + return (Files.exists(path) & isExtensionValid); } }
\ No newline at end of file |