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();
}
}