import java.util.*; import java.io.*; /**

jMusicHub

* * The jMusicHub class is basically the app. * It is used to launch the whole process. * * @author Aimeric ADJUTOR * @version 1.0 * @since 2020-11-13 * */ public class jMusicHub { /**

addSong

* add Song is used to add songs thanks to the "c" option * @param scan Scanner Object */ public static Song addSong(Scanner scan){ System.out.println("Adding a song..."); System.out.printf("Title : "); String title = scan.nextLine(); System.out.printf("Duration (in seconds) : "); int duration = scan.nextInt(); System.out.printf("Content path : "); String trash = scan.nextLine(); //Using this because the content scan is skip after a nexInt String content = scan.nextLine(); System.out.printf("Artist : "); String artist = scan.nextLine(); System.out.printf("Genre (JAZZ, CLASSICAL, HIPHOP, ROCK, POP, RAP) : "); String choosedGenre = scan.nextLine(); choosedGenre = choosedGenre.toUpperCase(); Genre genre = Genre.valueOf(choosedGenre); System.out.println(""); System.out.println("Do you confirm the addition of the following song ?"); System.out.println("Title : " + title); System.out.println("Duration : " + duration); System.out.println("Content path : " + content); System.out.println("Artist : " + artist); System.out.println("Genre : " + genre); System.out.println("[Y/n]"); String confirm = scan.nextLine(); if (confirm.equalsIgnoreCase("Y")){ //if the user is ok with what he typed, create a song obj Song newSong = new Song(title, duration, content, artist,genre); return newSong; // songs.add(newSong); } else { System.out.println("Aborting..."); System.out.println(""); return null; } } public jMusicHub() { System.out.println("Welcome to the jMusicHub !\n"); Scanner scan = new Scanner(System.in); String userInput; //Used to get the user's inputs. ArrayList songs = new ArrayList(); //used to temporarly save the songs before any "s" command System.out.println("Starting extraction"); //Here will be the process to extract the files /* try { FileOutputStream fos = new FileOutputStream(file); ObjectOutputStream oos = new ObjectOutputStream(fos); oos.writeObject(albums); oos.close(); fos.close(); } catch (IOException ioe) { ioe.printStackTrace(); return; }*/ System.out.println("Extraction done\n"); //Here will be the number of playlist, albums, songs and auidobook extracted do { System.out.println("What do you want to do? [h for help]"); userInput = scan.nextLine(); switch(userInput) { case "h" : //page help System.out.printf("c: add a new song\na: add a new album\n+: add an existing song to an album\nl: add a new audiobook\np: create a new playlist from existing songs and audiobooks\n-: delete a playlist\ns: save playlists, albums, songs and audiobooks into the concerned files\nh: print this help screen\nq: quit the program\n"); break; case "q" : System.out.println("Goodbye !"); break; case "c": try { //If something goes wrong, abort Song newSong=addSong(scan); if (newSong != null){ songs.add(newSong); System.out.println("Actual content of your songs list (you must save it (s) to do anything else with your songs) :"); for (Song iSong : songs){ System.out.println(iSong); } System.out.println(""); } } catch (InputMismatchException | IllegalArgumentException e) { System.out.println("You typed something wrong... I'm aborting.."); System.out.println(""); } break; case "a": break; case "+": break; case "l": break; case "p": break; case "-": break; case "s": for (Song s: songs){ String filename = "songs.csv"; // Serialization try { // Saving of object in a file FileOutputStream file = new FileOutputStream (filename); ObjectOutputStream out = new ObjectOutputStream (file); // Method for serialization of object out.writeObject(s); out.close(); file.close(); System.out.println("Object has been serialized\n" + "Data before Deserialization."); System.out.println(s); } catch (IOException ex) { System.out.println("IOException is caught"); } } break; default : System.out.println("Unknown command. Type h for help."); } } while(!userInput.equals("q")); } public static void main(String[] args) { new jMusicHub(); } }