aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/main/java/musichub/business/PathValidation.java39
-rw-r--r--src/main/java/musichub/main/Main.java14
-rw-r--r--src/test/java/musichub/business/PathValidationTest.java26
3 files changed, 76 insertions, 3 deletions
diff --git a/src/main/java/musichub/business/PathValidation.java b/src/main/java/musichub/business/PathValidation.java
new file mode 100644
index 0000000..b0281ba
--- /dev/null
+++ b/src/main/java/musichub/business/PathValidation.java
@@ -0,0 +1,39 @@
+package musichub.business;
+
+import java.nio.file.Files;
+import java.nio.file.Path;
+import java.nio.file.Paths;
+
+/**
+ * Class offering a path validation method.
+ *
+ * @author Aimeric ADJUTOR
+ * @version 1.0
+ */
+
+public final class PathValidation {
+
+ /**
+ * Method that just throws an AssertionError if the class is called
+ *
+ * @throws AssertionError you can't instantiate this class
+ * @author Aimeric ADJUTOR
+ */
+
+ public PathValidation() {
+ throw new AssertionError("You just can't instantiate this class.");
+ }
+
+ /**
+ * Method that checks the validity of a given path
+ *
+ * @param inputPath the path given by the user
+ * @return a boolean
+ */
+
+ public static boolean isPathValid(String inputPath) {
+ Path path = Paths.get(inputPath);
+ return Files.exists(path);
+ }
+
+} \ 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 2876734..e2e4731 100644
--- a/src/main/java/musichub/main/Main.java
+++ b/src/main/java/musichub/main/Main.java
@@ -2,13 +2,14 @@ package musichub.main;
import musichub.business.*;
+import javax.sound.sampled.LineUnavailableException;
+import javax.sound.sampled.UnsupportedAudioFileException;
import java.io.IOException;
import java.util.Iterator;
import java.util.List;
import java.util.Scanner;
-import javax.sound.sampled.LineUnavailableException;
-import javax.sound.sampled.UnsupportedAudioFileException;
+import static musichub.business.PathValidation.isPathValid;
public class Main {
public static void main(String[] args) throws UnsupportedAudioFileException, IOException, LineUnavailableException {
@@ -47,7 +48,7 @@ public class Main {
albumTitle = scan.nextLine();
try {
List<Song> songs = theHub.getAlbumSongsSortedByGenre(albumTitle);
- System.out.println(songs);;
+ System.out.println(songs);
} catch (NoAlbumFoundException ex) {
System.out.println("No album found with the requested title " + ex.getMessage());
}
@@ -88,8 +89,15 @@ public class Main {
String artist = scan.nextLine();
System.out.println("Song length in seconds: ");
int length = Integer.parseInt(scan.nextLine());
+
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");
+ choice = scan.nextLine();
+ break;
+ }
+
Song s = new Song(title, artist, length, content, genre);
theHub.addElement(s);
System.out.println("New element list: ");
diff --git a/src/test/java/musichub/business/PathValidationTest.java b/src/test/java/musichub/business/PathValidationTest.java
new file mode 100644
index 0000000..fffbdde
--- /dev/null
+++ b/src/test/java/musichub/business/PathValidationTest.java
@@ -0,0 +1,26 @@
+package musichub.business;
+
+
+import org.junit.jupiter.api.Test;
+
+import static musichub.business.PathValidation.isPathValid;
+import static org.junit.jupiter.api.Assertions.*;
+
+public class PathValidationTest {
+ @Test
+ void testIsPathValid() {
+ assertTrue(isPathValid("Song/Side_To_Side.wav")); //the right path
+ assertFalse(isPathValid("wrong_path/Side_To_Side.wav")); //wrong path
+ assertFalse(isPathValid("Song/Side_To_Side.mp3")); //wrong extension
+ }
+
+ @Test
+ void testPathValidationClass() {
+ try {
+ PathValidation pathValidationClass = new PathValidation();
+ } catch (Error ex) {
+ assertTrue(ex instanceof AssertionError);
+ assertEquals("You just can't instantiate this class.", ex.getMessage());
+ }
+ }
+}