From c61ce2e94a1be121414670f93987abdd29d389c6 Mon Sep 17 00:00:00 2001 From: Clyhtsuriva Date: Fri, 25 Jun 2021 18:27:54 +0200 Subject: Fixing STZ-0004 issue. --- src/musichub/main/Main.java | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'src/musichub') diff --git a/src/musichub/main/Main.java b/src/musichub/main/Main.java index f917b01..b72a95b 100644 --- a/src/musichub/main/Main.java +++ b/src/musichub/main/Main.java @@ -20,8 +20,10 @@ public class Main { if (choice.length() == 0) System.exit(0); - while (choice.charAt(0) != 'q') { + while (!choice.equals("")) { //if the user puts nothing, quit the loop/system switch (choice.charAt(0)) { + case 'q': //added the option directly in the switch instead of the loop + System.exit(0); case 'h': printAvailableCommands(); choice = scan.nextLine(); -- cgit v1.2.3 From e64ffae239b19871704b4ac1e9cd58275ed58622 Mon Sep 17 00:00:00 2001 From: Clyhtsuriva Date: Sat, 26 Jun 2021 12:34:26 +0200 Subject: Changed the architecture to respect maven and generated an empty javadoc --- bin/musichub/business/Album.class | Bin 4580 -> 0 bytes bin/musichub/business/AudioBook.class | Bin 3854 -> 0 bytes bin/musichub/business/AudioElement.class | Bin 3209 -> 0 bytes bin/musichub/business/Category.class | Bin 1318 -> 0 bytes bin/musichub/business/Genre.class | Bin 1329 -> 0 bytes bin/musichub/business/Language.class | Bin 1316 -> 0 bytes bin/musichub/business/MusicHub.class | Bin 8924 -> 0 bytes bin/musichub/business/NoAlbumFoundException.class | Bin 260 -> 0 bytes .../business/NoElementFoundException.class | Bin 264 -> 0 bytes .../business/NoPlayListFoundException.class | Bin 266 -> 0 bytes bin/musichub/business/PlayList.class | Bin 3240 -> 0 bytes bin/musichub/business/Song.class | Bin 2853 -> 0 bytes bin/musichub/business/SortByAuthor.class | Bin 719 -> 0 bytes bin/musichub/business/SortByDate.class | Bin 681 -> 0 bytes bin/musichub/business/SortByGenre.class | Bin 685 -> 0 bytes bin/musichub/main/Main.class | Bin 7826 -> 0 bytes bin/musichub/util/XMLHandler.class | Bin 2388 -> 0 bytes dependency-reduced-pom.xml | 38 +- pom.xml | 10 +- src/main/java/musichub/business/Album.java | 145 ++++ src/main/java/musichub/business/AudioBook.java | 78 ++ src/main/java/musichub/business/AudioElement.java | 88 +++ src/main/java/musichub/business/Category.java | 14 + src/main/java/musichub/business/Genre.java | 14 + src/main/java/musichub/business/Language.java | 14 + src/main/java/musichub/business/MusicHub.java | 329 ++++++++ .../musichub/business/NoAlbumFoundException.java | 8 + .../musichub/business/NoElementFoundException.java | 8 + .../business/NoPlayListFoundException.java | 8 + src/main/java/musichub/business/PlayList.java | 100 +++ src/main/java/musichub/business/Song.java | 56 ++ src/main/java/musichub/main/Main.java | 248 ++++++ src/main/java/musichub/util/XMLHandler.java | 74 ++ src/musichub/business/Album.java | 145 ---- src/musichub/business/AudioBook.java | 78 -- src/musichub/business/AudioElement.java | 88 --- src/musichub/business/Category.java | 14 - src/musichub/business/Genre.java | 14 - src/musichub/business/Language.java | 14 - src/musichub/business/MusicHub.java | 329 -------- src/musichub/business/NoAlbumFoundException.java | 8 - src/musichub/business/NoElementFoundException.java | 8 - .../business/NoPlayListFoundException.java | 8 - src/musichub/business/PlayList.java | 100 --- src/musichub/business/Song.java | 56 -- src/musichub/main/Main.java | 248 ------ src/musichub/util/XMLHandler.java | 74 -- target/classes/musichub/business/Album.class | Bin 0 -> 5606 bytes target/classes/musichub/business/AudioBook.class | Bin 0 -> 4278 bytes .../classes/musichub/business/AudioElement.class | Bin 0 -> 3752 bytes target/classes/musichub/business/Category.class | Bin 0 -> 1476 bytes target/classes/musichub/business/Genre.class | Bin 0 -> 1487 bytes target/classes/musichub/business/Language.class | Bin 0 -> 1474 bytes target/classes/musichub/business/MusicHub.class | Bin 0 -> 11031 bytes .../musichub/business/NoAlbumFoundException.class | Bin 0 -> 387 bytes .../business/NoElementFoundException.class | Bin 0 -> 393 bytes .../business/NoPlayListFoundException.class | Bin 0 -> 396 bytes target/classes/musichub/business/PlayList.class | Bin 0 -> 3926 bytes target/classes/musichub/business/Song.class | Bin 0 -> 3217 bytes .../classes/musichub/business/SortByAuthor.class | Bin 0 -> 901 bytes target/classes/musichub/business/SortByDate.class | Bin 0 -> 854 bytes target/classes/musichub/business/SortByGenre.class | Bin 0 -> 858 bytes target/classes/musichub/main/Main.class | Bin 0 -> 9390 bytes target/classes/musichub/util/XMLHandler.class | Bin 0 -> 2921 bytes target/maven-archiver/pom.properties | 2 +- target/maven-javadoc-plugin-stale-data.txt | 64 ++ .../compile/default-compile/createdFiles.lst | 17 + .../compile/default-compile/inputFiles.lst | 14 + .../testCompile/default-testCompile/inputFiles.lst | 0 target/original-spoteezer-0.1.0.jar | Bin 2014 -> 29836 bytes target/site/apidocs/allclasses-index.html | 106 +++ target/site/apidocs/allpackages-index.html | 76 ++ target/site/apidocs/element-list | 3 + target/site/apidocs/help-doc.html | 162 ++++ target/site/apidocs/index-all.html | 375 ++++++++++ target/site/apidocs/index.html | 78 ++ target/site/apidocs/jquery-ui.overrides.css | 34 + target/site/apidocs/member-search-index.js | 1 + target/site/apidocs/module-search-index.js | 1 + target/site/apidocs/musichub/business/Album.html | 250 +++++++ .../site/apidocs/musichub/business/AudioBook.html | 273 +++++++ .../apidocs/musichub/business/AudioElement.html | 307 ++++++++ .../site/apidocs/musichub/business/Category.html | 258 +++++++ target/site/apidocs/musichub/business/Genre.html | 266 +++++++ .../site/apidocs/musichub/business/Language.html | 258 +++++++ .../site/apidocs/musichub/business/MusicHub.html | 390 ++++++++++ .../musichub/business/NoAlbumFoundException.html | 150 ++++ .../musichub/business/NoElementFoundException.html | 150 ++++ .../business/NoPlayListFoundException.html | 150 ++++ .../site/apidocs/musichub/business/PlayList.html | 215 ++++++ target/site/apidocs/musichub/business/Song.html | 251 +++++++ .../apidocs/musichub/business/class-use/Album.html | 99 +++ .../musichub/business/class-use/AudioBook.html | 65 ++ .../musichub/business/class-use/AudioElement.html | 114 +++ .../musichub/business/class-use/Category.html | 101 +++ .../apidocs/musichub/business/class-use/Genre.html | 98 +++ .../musichub/business/class-use/Language.html | 101 +++ .../musichub/business/class-use/MusicHub.html | 65 ++ .../business/class-use/NoAlbumFoundException.html | 97 +++ .../class-use/NoElementFoundException.html | 95 +++ .../class-use/NoPlayListFoundException.html | 94 +++ .../musichub/business/class-use/PlayList.html | 99 +++ .../apidocs/musichub/business/class-use/Song.html | 90 +++ .../apidocs/musichub/business/package-summary.html | 116 +++ .../apidocs/musichub/business/package-tree.html | 114 +++ .../apidocs/musichub/business/package-use.html | 105 +++ target/site/apidocs/musichub/main/Main.html | 166 +++++ .../site/apidocs/musichub/main/class-use/Main.html | 65 ++ .../apidocs/musichub/main/package-summary.html | 80 ++ .../site/apidocs/musichub/main/package-tree.html | 79 ++ target/site/apidocs/musichub/main/package-use.html | 65 ++ target/site/apidocs/musichub/util/XMLHandler.html | 186 +++++ .../musichub/util/class-use/XMLHandler.html | 65 ++ .../apidocs/musichub/util/package-summary.html | 80 ++ .../site/apidocs/musichub/util/package-tree.html | 79 ++ target/site/apidocs/musichub/util/package-use.html | 65 ++ target/site/apidocs/overview-summary.html | 27 + target/site/apidocs/overview-tree.html | 118 +++ target/site/apidocs/package-search-index.js | 1 + target/site/apidocs/resources/glass.png | Bin 0 -> 499 bytes target/site/apidocs/resources/x.png | Bin 0 -> 394 bytes .../images/ui-bg_glass_55_fbf9ee_1x400.png | Bin 0 -> 335 bytes .../images/ui-bg_glass_65_dadada_1x400.png | Bin 0 -> 262 bytes .../images/ui-bg_glass_75_dadada_1x400.png | Bin 0 -> 262 bytes .../images/ui-bg_glass_75_e6e6e6_1x400.png | Bin 0 -> 262 bytes .../images/ui-bg_glass_95_fef1ec_1x400.png | Bin 0 -> 332 bytes .../ui-bg_highlight-soft_75_cccccc_1x100.png | Bin 0 -> 280 bytes .../script-dir/images/ui-icons_222222_256x240.png | Bin 0 -> 6922 bytes .../script-dir/images/ui-icons_2e83ff_256x240.png | Bin 0 -> 4549 bytes .../script-dir/images/ui-icons_454545_256x240.png | Bin 0 -> 6992 bytes .../script-dir/images/ui-icons_888888_256x240.png | Bin 0 -> 6999 bytes .../script-dir/images/ui-icons_cd0a0a_256x240.png | Bin 0 -> 4549 bytes target/site/apidocs/script-dir/jquery-3.5.1.min.js | 2 + target/site/apidocs/script-dir/jquery-ui.min.css | 7 + target/site/apidocs/script-dir/jquery-ui.min.js | 6 + .../apidocs/script-dir/jquery-ui.structure.min.css | 5 + target/site/apidocs/script.js | 132 ++++ target/site/apidocs/search.js | 354 +++++++++ target/site/apidocs/serialized-form.html | 89 +++ target/site/apidocs/stylesheet.css | 827 +++++++++++++++++++++ target/site/apidocs/tag-search-index.js | 1 + target/site/apidocs/type-search-index.js | 1 + target/spoteezer-0.1.0.jar | Bin 337540 -> 365706 bytes 143 files changed, 9013 insertions(+), 1207 deletions(-) delete mode 100644 bin/musichub/business/Album.class delete mode 100644 bin/musichub/business/AudioBook.class delete mode 100644 bin/musichub/business/AudioElement.class delete mode 100644 bin/musichub/business/Category.class delete mode 100644 bin/musichub/business/Genre.class delete mode 100644 bin/musichub/business/Language.class delete mode 100644 bin/musichub/business/MusicHub.class delete mode 100644 bin/musichub/business/NoAlbumFoundException.class delete mode 100644 bin/musichub/business/NoElementFoundException.class delete mode 100644 bin/musichub/business/NoPlayListFoundException.class delete mode 100644 bin/musichub/business/PlayList.class delete mode 100644 bin/musichub/business/Song.class delete mode 100644 bin/musichub/business/SortByAuthor.class delete mode 100644 bin/musichub/business/SortByDate.class delete mode 100644 bin/musichub/business/SortByGenre.class delete mode 100644 bin/musichub/main/Main.class delete mode 100644 bin/musichub/util/XMLHandler.class create mode 100644 src/main/java/musichub/business/Album.java create mode 100644 src/main/java/musichub/business/AudioBook.java create mode 100644 src/main/java/musichub/business/AudioElement.java create mode 100644 src/main/java/musichub/business/Category.java create mode 100644 src/main/java/musichub/business/Genre.java create mode 100644 src/main/java/musichub/business/Language.java create mode 100644 src/main/java/musichub/business/MusicHub.java create mode 100644 src/main/java/musichub/business/NoAlbumFoundException.java create mode 100644 src/main/java/musichub/business/NoElementFoundException.java create mode 100644 src/main/java/musichub/business/NoPlayListFoundException.java create mode 100644 src/main/java/musichub/business/PlayList.java create mode 100644 src/main/java/musichub/business/Song.java create mode 100644 src/main/java/musichub/main/Main.java create mode 100644 src/main/java/musichub/util/XMLHandler.java delete mode 100644 src/musichub/business/Album.java delete mode 100644 src/musichub/business/AudioBook.java delete mode 100644 src/musichub/business/AudioElement.java delete mode 100644 src/musichub/business/Category.java delete mode 100644 src/musichub/business/Genre.java delete mode 100644 src/musichub/business/Language.java delete mode 100644 src/musichub/business/MusicHub.java delete mode 100644 src/musichub/business/NoAlbumFoundException.java delete mode 100644 src/musichub/business/NoElementFoundException.java delete mode 100644 src/musichub/business/NoPlayListFoundException.java delete mode 100644 src/musichub/business/PlayList.java delete mode 100644 src/musichub/business/Song.java delete mode 100644 src/musichub/main/Main.java delete mode 100644 src/musichub/util/XMLHandler.java create mode 100644 target/classes/musichub/business/Album.class create mode 100644 target/classes/musichub/business/AudioBook.class create mode 100644 target/classes/musichub/business/AudioElement.class create mode 100644 target/classes/musichub/business/Category.class create mode 100644 target/classes/musichub/business/Genre.class create mode 100644 target/classes/musichub/business/Language.class create mode 100644 target/classes/musichub/business/MusicHub.class create mode 100644 target/classes/musichub/business/NoAlbumFoundException.class create mode 100644 target/classes/musichub/business/NoElementFoundException.class create mode 100644 target/classes/musichub/business/NoPlayListFoundException.class create mode 100644 target/classes/musichub/business/PlayList.class create mode 100644 target/classes/musichub/business/Song.class create mode 100644 target/classes/musichub/business/SortByAuthor.class create mode 100644 target/classes/musichub/business/SortByDate.class create mode 100644 target/classes/musichub/business/SortByGenre.class create mode 100644 target/classes/musichub/main/Main.class create mode 100644 target/classes/musichub/util/XMLHandler.class create mode 100644 target/maven-javadoc-plugin-stale-data.txt create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst create mode 100644 target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst create mode 100644 target/site/apidocs/allclasses-index.html create mode 100644 target/site/apidocs/allpackages-index.html create mode 100644 target/site/apidocs/element-list create mode 100644 target/site/apidocs/help-doc.html create mode 100644 target/site/apidocs/index-all.html create mode 100644 target/site/apidocs/index.html create mode 100644 target/site/apidocs/jquery-ui.overrides.css create mode 100644 target/site/apidocs/member-search-index.js create mode 100644 target/site/apidocs/module-search-index.js create mode 100644 target/site/apidocs/musichub/business/Album.html create mode 100644 target/site/apidocs/musichub/business/AudioBook.html create mode 100644 target/site/apidocs/musichub/business/AudioElement.html create mode 100644 target/site/apidocs/musichub/business/Category.html create mode 100644 target/site/apidocs/musichub/business/Genre.html create mode 100644 target/site/apidocs/musichub/business/Language.html create mode 100644 target/site/apidocs/musichub/business/MusicHub.html create mode 100644 target/site/apidocs/musichub/business/NoAlbumFoundException.html create mode 100644 target/site/apidocs/musichub/business/NoElementFoundException.html create mode 100644 target/site/apidocs/musichub/business/NoPlayListFoundException.html create mode 100644 target/site/apidocs/musichub/business/PlayList.html create mode 100644 target/site/apidocs/musichub/business/Song.html create mode 100644 target/site/apidocs/musichub/business/class-use/Album.html create mode 100644 target/site/apidocs/musichub/business/class-use/AudioBook.html create mode 100644 target/site/apidocs/musichub/business/class-use/AudioElement.html create mode 100644 target/site/apidocs/musichub/business/class-use/Category.html create mode 100644 target/site/apidocs/musichub/business/class-use/Genre.html create mode 100644 target/site/apidocs/musichub/business/class-use/Language.html create mode 100644 target/site/apidocs/musichub/business/class-use/MusicHub.html create mode 100644 target/site/apidocs/musichub/business/class-use/NoAlbumFoundException.html create mode 100644 target/site/apidocs/musichub/business/class-use/NoElementFoundException.html create mode 100644 target/site/apidocs/musichub/business/class-use/NoPlayListFoundException.html create mode 100644 target/site/apidocs/musichub/business/class-use/PlayList.html create mode 100644 target/site/apidocs/musichub/business/class-use/Song.html create mode 100644 target/site/apidocs/musichub/business/package-summary.html create mode 100644 target/site/apidocs/musichub/business/package-tree.html create mode 100644 target/site/apidocs/musichub/business/package-use.html create mode 100644 target/site/apidocs/musichub/main/Main.html create mode 100644 target/site/apidocs/musichub/main/class-use/Main.html create mode 100644 target/site/apidocs/musichub/main/package-summary.html create mode 100644 target/site/apidocs/musichub/main/package-tree.html create mode 100644 target/site/apidocs/musichub/main/package-use.html create mode 100644 target/site/apidocs/musichub/util/XMLHandler.html create mode 100644 target/site/apidocs/musichub/util/class-use/XMLHandler.html create mode 100644 target/site/apidocs/musichub/util/package-summary.html create mode 100644 target/site/apidocs/musichub/util/package-tree.html create mode 100644 target/site/apidocs/musichub/util/package-use.html create mode 100644 target/site/apidocs/overview-summary.html create mode 100644 target/site/apidocs/overview-tree.html create mode 100644 target/site/apidocs/package-search-index.js create mode 100644 target/site/apidocs/resources/glass.png create mode 100644 target/site/apidocs/resources/x.png create mode 100644 target/site/apidocs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png create mode 100644 target/site/apidocs/script-dir/images/ui-bg_glass_65_dadada_1x400.png create mode 100644 target/site/apidocs/script-dir/images/ui-bg_glass_75_dadada_1x400.png create mode 100644 target/site/apidocs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png create mode 100644 target/site/apidocs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png create mode 100644 target/site/apidocs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png create mode 100644 target/site/apidocs/script-dir/images/ui-icons_222222_256x240.png create mode 100644 target/site/apidocs/script-dir/images/ui-icons_2e83ff_256x240.png create mode 100644 target/site/apidocs/script-dir/images/ui-icons_454545_256x240.png create mode 100644 target/site/apidocs/script-dir/images/ui-icons_888888_256x240.png create mode 100644 target/site/apidocs/script-dir/images/ui-icons_cd0a0a_256x240.png create mode 100644 target/site/apidocs/script-dir/jquery-3.5.1.min.js create mode 100644 target/site/apidocs/script-dir/jquery-ui.min.css create mode 100644 target/site/apidocs/script-dir/jquery-ui.min.js create mode 100644 target/site/apidocs/script-dir/jquery-ui.structure.min.css create mode 100644 target/site/apidocs/script.js create mode 100644 target/site/apidocs/search.js create mode 100644 target/site/apidocs/serialized-form.html create mode 100644 target/site/apidocs/stylesheet.css create mode 100644 target/site/apidocs/tag-search-index.js create mode 100644 target/site/apidocs/type-search-index.js (limited to 'src/musichub') diff --git a/bin/musichub/business/Album.class b/bin/musichub/business/Album.class deleted file mode 100644 index 0bc7b94..0000000 Binary files a/bin/musichub/business/Album.class and /dev/null differ diff --git a/bin/musichub/business/AudioBook.class b/bin/musichub/business/AudioBook.class deleted file mode 100644 index acd92fc..0000000 Binary files a/bin/musichub/business/AudioBook.class and /dev/null differ diff --git a/bin/musichub/business/AudioElement.class b/bin/musichub/business/AudioElement.class deleted file mode 100644 index b737756..0000000 Binary files a/bin/musichub/business/AudioElement.class and /dev/null differ diff --git a/bin/musichub/business/Category.class b/bin/musichub/business/Category.class deleted file mode 100644 index 08b0990..0000000 Binary files a/bin/musichub/business/Category.class and /dev/null differ diff --git a/bin/musichub/business/Genre.class b/bin/musichub/business/Genre.class deleted file mode 100644 index 5a59007..0000000 Binary files a/bin/musichub/business/Genre.class and /dev/null differ diff --git a/bin/musichub/business/Language.class b/bin/musichub/business/Language.class deleted file mode 100644 index e22490e..0000000 Binary files a/bin/musichub/business/Language.class and /dev/null differ diff --git a/bin/musichub/business/MusicHub.class b/bin/musichub/business/MusicHub.class deleted file mode 100644 index 0a7ffda..0000000 Binary files a/bin/musichub/business/MusicHub.class and /dev/null differ diff --git a/bin/musichub/business/NoAlbumFoundException.class b/bin/musichub/business/NoAlbumFoundException.class deleted file mode 100644 index 2c37b0c..0000000 Binary files a/bin/musichub/business/NoAlbumFoundException.class and /dev/null differ diff --git a/bin/musichub/business/NoElementFoundException.class b/bin/musichub/business/NoElementFoundException.class deleted file mode 100644 index 6afa6b4..0000000 Binary files a/bin/musichub/business/NoElementFoundException.class and /dev/null differ diff --git a/bin/musichub/business/NoPlayListFoundException.class b/bin/musichub/business/NoPlayListFoundException.class deleted file mode 100644 index 2290022..0000000 Binary files a/bin/musichub/business/NoPlayListFoundException.class and /dev/null differ diff --git a/bin/musichub/business/PlayList.class b/bin/musichub/business/PlayList.class deleted file mode 100644 index 571eac0..0000000 Binary files a/bin/musichub/business/PlayList.class and /dev/null differ diff --git a/bin/musichub/business/Song.class b/bin/musichub/business/Song.class deleted file mode 100644 index 2cad917..0000000 Binary files a/bin/musichub/business/Song.class and /dev/null differ diff --git a/bin/musichub/business/SortByAuthor.class b/bin/musichub/business/SortByAuthor.class deleted file mode 100644 index 009d9fe..0000000 Binary files a/bin/musichub/business/SortByAuthor.class and /dev/null differ diff --git a/bin/musichub/business/SortByDate.class b/bin/musichub/business/SortByDate.class deleted file mode 100644 index 4ad6b49..0000000 Binary files a/bin/musichub/business/SortByDate.class and /dev/null differ diff --git a/bin/musichub/business/SortByGenre.class b/bin/musichub/business/SortByGenre.class deleted file mode 100644 index cf0f29c..0000000 Binary files a/bin/musichub/business/SortByGenre.class and /dev/null differ diff --git a/bin/musichub/main/Main.class b/bin/musichub/main/Main.class deleted file mode 100644 index 0ebef6e..0000000 Binary files a/bin/musichub/main/Main.class and /dev/null differ diff --git a/bin/musichub/util/XMLHandler.class b/bin/musichub/util/XMLHandler.class deleted file mode 100644 index 9a53fc4..0000000 Binary files a/bin/musichub/util/XMLHandler.class and /dev/null differ diff --git a/dependency-reduced-pom.xml b/dependency-reduced-pom.xml index 3b838f2..027738e 100644 --- a/dependency-reduced-pom.xml +++ b/dependency-reduced-pom.xml @@ -1,16 +1,16 @@ - 4.0.0 - esiea.softwareengineering - spoteezer - 0.1.0 - - - - maven-shade-plugin - 3.2.4 - + 4.0.0 + esiea.softwareengineering + spoteezer + 0.1.0 + + + + maven-shade-plugin + 3.2.4 + package @@ -51,15 +51,17 @@ maven-compiler-plugin - - 14 - 14 - + + 16 + 16 + - - 1.8 - 1.8 - + + 16 + 16 + 16 + 16 + diff --git a/pom.xml b/pom.xml index b3833f4..821c1b6 100644 --- a/pom.xml +++ b/pom.xml @@ -8,8 +8,10 @@ jar 0.1.0 - 1.8 - 1.8 + 16 + 16 + 16 + 16 @@ -63,8 +65,8 @@ org.apache.maven.plugins maven-compiler-plugin - 14 - 14 + 16 + 16 diff --git a/src/main/java/musichub/business/Album.java b/src/main/java/musichub/business/Album.java new file mode 100644 index 0000000..01fd179 --- /dev/null +++ b/src/main/java/musichub/business/Album.java @@ -0,0 +1,145 @@ +package musichub.business; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import java.text.ParseException; +import java.text.SimpleDateFormat; +import java.util.*; + + +public class Album { + private final String title; + private final int lengthInSeconds; + private final UUID uuid; + private String artist; + private Date date; + private ArrayList songsUIDs; + + public Album(String title, String artist, int lengthInSeconds, String id, String date, ArrayList songsUIDs) { + this.title = title; + this.artist = artist; + this.lengthInSeconds = lengthInSeconds; + this.uuid = UUID.fromString(id); + try { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + this.date = sdf.parse(date); + } catch (ParseException ex) { + ex.printStackTrace(); + } + this.songsUIDs = songsUIDs; + } + + public Album(String title, String artist, int lengthInSeconds, String date) { + this.title = title; + this.artist = artist; + this.lengthInSeconds = lengthInSeconds; + this.uuid = UUID.randomUUID(); + try { + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + this.date = sdf.parse(date); + } catch (ParseException ex) { + ex.printStackTrace(); + } + this.songsUIDs = new ArrayList<>(); + } + + public Album(Element xmlElement) throws Exception { + { + this.title = xmlElement.getElementsByTagName("title").item(0).getTextContent(); + this.lengthInSeconds = Integer.parseInt(xmlElement.getElementsByTagName("lengthInSeconds").item(0).getTextContent()); + String uuid = null; + try { + uuid = xmlElement.getElementsByTagName("UUID").item(0).getTextContent(); + } catch (Exception ex) { + System.out.println("Empty album UUID, will create a new one"); + } + if ((uuid == null) || (uuid.isEmpty())) + this.uuid = UUID.randomUUID(); + else this.uuid = UUID.fromString(uuid); + + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + this.date = sdf.parse(xmlElement.getElementsByTagName("date").item(0).getTextContent()); + //parse list of songs: + Node songsElement = xmlElement.getElementsByTagName("songs").item(0); + NodeList songUUIDNodes = songsElement.getChildNodes(); + if (songUUIDNodes == null) return; + + this.songsUIDs = new ArrayList<>(); + + for (int i = 0; i < songUUIDNodes.getLength(); i++) { + if (songUUIDNodes.item(i).getNodeType() == Node.ELEMENT_NODE) { + Element songElement = (Element) songUUIDNodes.item(i); + if (songElement.getNodeName().equals("UUID")) { + try { + this.addSong(UUID.fromString(songElement.getTextContent())); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + } + } + } + } + + + public void addSong(UUID song) { + songsUIDs.add(song); + } + + + public List getSongs() { + return songsUIDs; + } + + public ArrayList getSongsRandomly() { + ArrayList shuffledSongs = songsUIDs; + Collections.shuffle(shuffledSongs); + return shuffledSongs; + } + + public String getTitle() { + return title; + } + + public Date getDate() { + return date; + } + + public void createXMLElement(Document document, Element parentElement) { + Element albumElement = document.createElement("album"); + parentElement.appendChild(albumElement); + + Element nameElement = document.createElement("title"); + nameElement.appendChild(document.createTextNode(title)); + albumElement.appendChild(nameElement); + + Element artistElement = document.createElement("artist"); + artistElement.appendChild(document.createTextNode(artist)); + albumElement.appendChild(artistElement); + + Element lengthElement = document.createElement("lengthInSeconds"); + lengthElement.appendChild(document.createTextNode(Integer.valueOf(lengthInSeconds).toString())); + albumElement.appendChild(lengthElement); + + Element UUIDElement = document.createElement("UUID"); + UUIDElement.appendChild(document.createTextNode(uuid.toString())); + albumElement.appendChild(UUIDElement); + + Element dateElement = document.createElement("date"); + SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); + dateElement.appendChild(document.createTextNode(sdf.format(date))); + albumElement.appendChild(dateElement); + + Element songsElement = document.createElement("songs"); + for (UUID currentUUID : this.songsUIDs) { + Element songUUIDElement = document.createElement("UUID"); + songUUIDElement.appendChild(document.createTextNode(currentUUID.toString())); + songsElement.appendChild(songUUIDElement); + } + albumElement.appendChild(songsElement); + + } +} \ No newline at end of file diff --git a/src/main/java/musichub/business/AudioBook.java b/src/main/java/musichub/business/AudioBook.java new file mode 100644 index 0000000..80392d6 --- /dev/null +++ b/src/main/java/musichub/business/AudioBook.java @@ -0,0 +1,78 @@ +package musichub.business; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +public class AudioBook extends AudioElement { + private Language language; + private Category category; + + public AudioBook(String title, String artist, int lengthInSeconds, String uid, String content, String language, String category) { + super(title, artist, lengthInSeconds, uid, content); + this.setLanguage(language); + this.setCategory(category); + } + + public AudioBook(String title, String artist, int lengthInSeconds, String content, String language, String category) { + super(title, artist, lengthInSeconds, content); + this.setLanguage(language); + this.setCategory(category); + } + + public AudioBook(Element xmlElement) { + super(xmlElement); + this.setLanguage(xmlElement.getElementsByTagName("language").item(0).getTextContent()); + this.setCategory(xmlElement.getElementsByTagName("category").item(0).getTextContent()); + } + + public Language getLanguage() { + return this.language; + } + + public void setLanguage(String language) { + switch (language.toLowerCase()) { + default -> this.language = Language.ENGLISH; + case "french" -> this.language = Language.FRENCH; + case "german" -> this.language = Language.GERMAN; + case "spanish" -> this.language = Language.SPANISH; + case "italian" -> this.language = Language.ITALIAN; + } + } + + public Category getCategory() { + return this.category; + } + + public void setCategory(String category) { + switch (category.toLowerCase()) { + default -> this.category = Category.YOUTH; + case "novel" -> this.category = Category.NOVEL; + case "theater" -> this.category = Category.THEATER; + case "documentary" -> this.category = Category.DOCUMENTARY; + case "speech" -> this.category = Category.SPEECH; + } + } + + + public String toString() { + return super.toString() + ", Language = " + getLanguage() + ", Category = " + getCategory() + "\n"; + } + + + public void createXMLElement(Document document, Element parentElement) { + // audiobook element + Element audioBook = document.createElement("audiobook"); + + super.createXMLElement(document, audioBook); + + Element languageElement = document.createElement("language"); + languageElement.appendChild(document.createTextNode(language.getLanguage())); + audioBook.appendChild(languageElement); + + Element categoryElement = document.createElement("category"); + categoryElement.appendChild(document.createTextNode(category.getCategory())); + audioBook.appendChild(categoryElement); + + parentElement.appendChild(audioBook); + } +} \ No newline at end of file diff --git a/src/main/java/musichub/business/AudioElement.java b/src/main/java/musichub/business/AudioElement.java new file mode 100644 index 0000000..e0a686b --- /dev/null +++ b/src/main/java/musichub/business/AudioElement.java @@ -0,0 +1,88 @@ +package musichub.business; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + +import java.util.UUID; + +public abstract class AudioElement { + protected String title; + protected String artist; + protected int lengthInSeconds; + protected UUID uuid; + protected String content; + + public AudioElement(String title, String artist, int lengthInSeconds, String id, String content) { + this.title = title; + this.artist = artist; + this.lengthInSeconds = lengthInSeconds; + this.uuid = UUID.fromString(id); + this.content = content; + } + + public AudioElement(String title, String artist, int lengthInSeconds, String content) { + this.title = title; + this.artist = artist; + this.lengthInSeconds = lengthInSeconds; + this.content = content; + this.uuid = UUID.randomUUID(); + } + + public AudioElement(Element xmlElement) { + { + title = xmlElement.getElementsByTagName("title").item(0).getTextContent(); + artist = xmlElement.getElementsByTagName("artist").item(0).getTextContent(); + lengthInSeconds = Integer.parseInt(xmlElement.getElementsByTagName("length").item(0).getTextContent()); + content = xmlElement.getElementsByTagName("content").item(0).getTextContent(); + String uuid = null; + try { + uuid = xmlElement.getElementsByTagName("UUID").item(0).getTextContent(); + } catch (Exception ex) { + System.out.println("Empty element UUID, will create a new one"); + } + if ((uuid == null) || (uuid.isEmpty())) + this.uuid = UUID.randomUUID(); + else this.uuid = UUID.fromString(uuid); + } + } + + public UUID getUUID() { + return this.uuid; + } + + public String getArtist() { + return this.artist; + } + + public String getTitle() { + return this.title; + } + + public String toString() { + return "Title = " + this.title + ", Artist = " + this.artist + ", Length = " + this.lengthInSeconds + ", Content = " + this.content; + } + + public void createXMLElement(Document document, Element parentElement) { + Element nameElement = document.createElement("title"); + nameElement.appendChild(document.createTextNode(title)); + parentElement.appendChild(nameElement); + + Element artistElement = document.createElement("artist"); + artistElement.appendChild(document.createTextNode(artist)); + parentElement.appendChild(artistElement); + + Element lengthElement = document.createElement("length"); + lengthElement.appendChild(document.createTextNode(Integer.valueOf(lengthInSeconds).toString())); + parentElement.appendChild(lengthElement); + + Element UUIDElement = document.createElement("UUID"); + UUIDElement.appendChild(document.createTextNode(uuid.toString())); + parentElement.appendChild(UUIDElement); + + Element contentElement = document.createElement("content"); + contentElement.appendChild(document.createTextNode(content)); + parentElement.appendChild(contentElement); + + } + +} \ No newline at end of file diff --git a/src/main/java/musichub/business/Category.java b/src/main/java/musichub/business/Category.java new file mode 100644 index 0000000..f676e51 --- /dev/null +++ b/src/main/java/musichub/business/Category.java @@ -0,0 +1,14 @@ +package musichub.business; + +public enum Category { + YOUTH("youth"), NOVEL("novel"), THEATER("theater"), DOCUMENTARY("documentary"), SPEECH("speech"); + private final String category; + + Category(String category) { + this.category = category; + } + + public String getCategory() { + return category; + } +} \ No newline at end of file diff --git a/src/main/java/musichub/business/Genre.java b/src/main/java/musichub/business/Genre.java new file mode 100644 index 0000000..18deca6 --- /dev/null +++ b/src/main/java/musichub/business/Genre.java @@ -0,0 +1,14 @@ +package musichub.business; + +public enum Genre { + JAZZ("jazz"), CLASSIC("classic"), HIPHOP("hiphop"), ROCK("rock"), POP("pop"), RAP("rap"); + private final String genre; + + Genre(String genre) { + this.genre = genre; + } + + public String getGenre() { + return genre; + } +} \ No newline at end of file diff --git a/src/main/java/musichub/business/Language.java b/src/main/java/musichub/business/Language.java new file mode 100644 index 0000000..679e586 --- /dev/null +++ b/src/main/java/musichub/business/Language.java @@ -0,0 +1,14 @@ +package musichub.business; + +public enum Language { + FRENCH("french"), ENGLISH("english"), ITALIAN("italian"), SPANISH("spanish"), GERMAN("german"); + private final String language; + + Language(String language) { + this.language = language; + } + + public String getLanguage() { + return language; + } +} \ No newline at end of file diff --git a/src/main/java/musichub/business/MusicHub.java b/src/main/java/musichub/business/MusicHub.java new file mode 100644 index 0000000..38e2214 --- /dev/null +++ b/src/main/java/musichub/business/MusicHub.java @@ -0,0 +1,329 @@ +package musichub.business; + +import musichub.util.XMLHandler; +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import java.util.*; + +class SortByDate implements Comparator { + public int compare(Album a1, Album a2) { + return a1.getDate().compareTo(a2.getDate()); + } +} + +class SortByGenre implements Comparator { + public int compare(Song s1, Song s2) { + return s1.getGenre().compareTo(s2.getGenre()); + } +} + +class SortByAuthor implements Comparator { + public int compare(AudioElement e1, AudioElement e2) { + return e1.getArtist().compareTo(e2.getArtist()); + } +} + +public class MusicHub { + public static final String DIR = System.getProperty("user.dir"); + public static final String ALBUMS_FILE_PATH = DIR + "/files/albums.xml"; + public static final String PLAYLISTS_FILE_PATH = DIR + "/files/playlists.xml"; + public static final String ELEMENTS_FILE_PATH = DIR + "/files/elements.xml"; + private final List albums; + private final List playlists; + private final List elements; + private final XMLHandler xmlHandler = new XMLHandler(); + + public MusicHub() { + albums = new LinkedList<>(); + playlists = new LinkedList<>(); + elements = new LinkedList<>(); + this.loadElements(); + this.loadAlbums(); + this.loadPlaylists(); + } + + public void addElement(AudioElement element) { + elements.add(element); + } + + public void addAlbum(Album album) { + albums.add(album); + } + + public void addPlaylist(PlayList playlist) { + playlists.add(playlist); + } + + public void deletePlayList(String playListTitle) throws NoPlayListFoundException { + + PlayList thePlayList = null; + boolean result = false; + for (PlayList pl : playlists) { + if (pl.getTitle().equalsIgnoreCase(playListTitle)) { + thePlayList = pl; + break; + } + } + + if (thePlayList != null) + result = playlists.remove(thePlayList); + if (!result) throw new NoPlayListFoundException("Playlist " + playListTitle + " not found!"); + } + + public Iterator albums() { + return albums.listIterator(); + } + + public Iterator playlists() { + return playlists.listIterator(); + } + + public Iterator elements() { + return elements.listIterator(); + } + + public String getAlbumsTitlesSortedByDate() { + StringBuilder titleList = new StringBuilder(); + albums.sort(new SortByDate()); + for (Album al : albums) + titleList.append(al.getTitle()).append("\n"); + return titleList.toString(); + } + + public String getAudiobooksTitlesSortedByAuthor() { + StringBuilder titleList = new StringBuilder(); + List audioBookList = new ArrayList<>(); + for (AudioElement ae : elements) + if (ae instanceof AudioBook) + audioBookList.add(ae); + audioBookList.sort(new SortByAuthor()); + for (AudioElement ab : audioBookList) + titleList.append(ab.getArtist()).append("\n"); + return titleList.toString(); + } + + public List getAlbumSongs(String albumTitle) throws NoAlbumFoundException { + Album theAlbum = null; + ArrayList songsInAlbum = new ArrayList<>(); + for (Album al : albums) { + if (al.getTitle().equalsIgnoreCase(albumTitle)) { + theAlbum = al; + break; + } + } + if (theAlbum == null) throw new NoAlbumFoundException("No album with this title in the MusicHub!"); + + List songIDs = theAlbum.getSongs(); + for (UUID id : songIDs) + for (AudioElement el : elements) { + if (el instanceof Song) { + if (el.getUUID().equals(id)) songsInAlbum.add(el); + } + } + return songsInAlbum; + + } + + public List getAlbumSongsSortedByGenre(String albumTitle) throws NoAlbumFoundException { + Album theAlbum = null; + ArrayList songsInAlbum = new ArrayList<>(); + for (Album al : albums) { + if (al.getTitle().equalsIgnoreCase(albumTitle)) { + theAlbum = al; + break; + } + } + if (theAlbum == null) throw new NoAlbumFoundException("No album with this title in the MusicHub!"); + + List songIDs = theAlbum.getSongs(); + for (UUID id : songIDs) + for (AudioElement el : elements) { + if (el instanceof Song) { + if (el.getUUID().equals(id)) songsInAlbum.add((Song) el); + } + } + songsInAlbum.sort(new SortByGenre()); + return songsInAlbum; + + } + + public void addElementToAlbum(String elementTitle, String albumTitle) throws NoAlbumFoundException, NoElementFoundException { + Album theAlbum = null; + int i; + boolean found = false; + for (i = 0; i < albums.size(); i++) { + if (albums.get(i).getTitle().equalsIgnoreCase(albumTitle)) { + theAlbum = albums.get(i); + found = true; + break; + } + } + + if (found) { + AudioElement theElement = null; + for (AudioElement ae : elements) { + if (ae.getTitle().equalsIgnoreCase(elementTitle)) { + theElement = ae; + break; + } + } + if (theElement != null) { + theAlbum.addSong(theElement.getUUID()); + //replace the album in the list + albums.set(i, theAlbum); + } else throw new NoElementFoundException("Element " + elementTitle + " not found!"); + } else throw new NoAlbumFoundException("Album " + albumTitle + " not found!"); + + } + + public void addElementToPlayList(String elementTitle, String playListTitle) throws NoPlayListFoundException, NoElementFoundException { + PlayList thePlaylist = null; + int i; + boolean found = false; + + for (i = 0; i < playlists.size(); i++) { + if (playlists.get(i).getTitle().equalsIgnoreCase(playListTitle)) { + thePlaylist = playlists.get(i); + found = true; + break; + } + } + + if (found) { + AudioElement theElement = null; + for (AudioElement ae : elements) { + if (ae.getTitle().equalsIgnoreCase(elementTitle)) { + theElement = ae; + break; + } + } + if (theElement != null) { + thePlaylist.addElement(theElement.getUUID()); + //replace the album in the list + playlists.set(i, thePlaylist); + } else throw new NoElementFoundException("Element " + elementTitle + " not found!"); + + } else throw new NoPlayListFoundException("Playlist " + playListTitle + " not found!"); + + } + + private void loadAlbums() { + NodeList albumNodes = xmlHandler.parseXMLFile(ALBUMS_FILE_PATH); + if (albumNodes == null) return; + + for (int i = 0; i < albumNodes.getLength(); i++) { + if (albumNodes.item(i).getNodeType() == Node.ELEMENT_NODE) { + Element albumElement = (Element) albumNodes.item(i); + if (albumElement.getNodeName().equals("album")) { + try { + this.addAlbum(new Album(albumElement)); + } catch (Exception ex) { + System.out.println("Something is wrong with the XML album element"); + } + } + } + } + } + + private void loadPlaylists() { + NodeList playlistNodes = xmlHandler.parseXMLFile(PLAYLISTS_FILE_PATH); + if (playlistNodes == null) return; + + for (int i = 0; i < playlistNodes.getLength(); i++) { + if (playlistNodes.item(i).getNodeType() == Node.ELEMENT_NODE) { + Element playlistElement = (Element) playlistNodes.item(i); + if (playlistElement.getNodeName().equals("playlist")) { + try { + this.addPlaylist(new PlayList(playlistElement)); + } catch (Exception ex) { + System.out.println("Something is wrong with the XML playlist element"); + } + } + } + } + } + + private void loadElements() { + NodeList audioelementsNodes = xmlHandler.parseXMLFile(ELEMENTS_FILE_PATH); + if (audioelementsNodes == null) return; + + for (int i = 0; i < audioelementsNodes.getLength(); i++) { + if (audioelementsNodes.item(i).getNodeType() == Node.ELEMENT_NODE) { + Element audioElement = (Element) audioelementsNodes.item(i); + if (audioElement.getNodeName().equals("song")) { + try { + AudioElement newSong = new Song(audioElement); + this.addElement(newSong); + } catch (Exception ex) { + System.out.println("Something is wrong with the XML song element"); + } + } + if (audioElement.getNodeName().equals("audiobook")) { + try { + AudioElement newAudioBook = new AudioBook(audioElement); + this.addElement(newAudioBook); + } catch (Exception ex) { + System.out.println("Something is wrong with the XML audiobook element"); + } + } + } + } + } + + + public void saveAlbums() { + Document document = xmlHandler.createXMLDocument(); + if (document == null) return; + + // root element + Element root = document.createElement("albums"); + document.appendChild(root); + + //save all albums + for (Iterator albumsIter = this.albums(); albumsIter.hasNext(); ) { + Album currentAlbum = albumsIter.next(); + currentAlbum.createXMLElement(document, root); + } + xmlHandler.createXMLFile(document, ALBUMS_FILE_PATH); + } + + public void savePlayLists() { + Document document = xmlHandler.createXMLDocument(); + if (document == null) return; + + // root element + Element root = document.createElement("playlists"); + document.appendChild(root); + + //save all playlists + for (Iterator playlistsIter = this.playlists(); playlistsIter.hasNext(); ) { + PlayList currentPlayList = playlistsIter.next(); + currentPlayList.createXMLElement(document, root); + } + xmlHandler.createXMLFile(document, PLAYLISTS_FILE_PATH); + } + + public void saveElements() { + Document document = xmlHandler.createXMLDocument(); + if (document == null) return; + + // root element + Element root = document.createElement("elements"); + document.appendChild(root); + + //save all AudioElements + for (AudioElement currentElement : elements) { + + if (currentElement instanceof Song) { + currentElement.createXMLElement(document, root); + } + if (currentElement instanceof AudioBook) { + currentElement.createXMLElement(document, root); + } + } + xmlHandler.createXMLFile(document, ELEMENTS_FILE_PATH); + } +} \ No newline at end of file diff --git a/src/main/java/musichub/business/NoAlbumFoundException.java b/src/main/java/musichub/business/NoAlbumFoundException.java new file mode 100644 index 0000000..04cbfcd --- /dev/null +++ b/src/main/java/musichub/business/NoAlbumFoundException.java @@ -0,0 +1,8 @@ +package musichub.business; + +public class NoAlbumFoundException extends Exception { + + public NoAlbumFoundException(String msg) { + super(msg); + } +} \ No newline at end of file diff --git a/src/main/java/musichub/business/NoElementFoundException.java b/src/main/java/musichub/business/NoElementFoundException.java new file mode 100644 index 0000000..a9b0d76 --- /dev/null +++ b/src/main/java/musichub/business/NoElementFoundException.java @@ -0,0 +1,8 @@ +package musichub.business; + +public class NoElementFoundException extends Exception { + + public NoElementFoundException(String msg) { + super(msg); + } +} \ No newline at end of file diff --git a/src/main/java/musichub/business/NoPlayListFoundException.java b/src/main/java/musichub/business/NoPlayListFoundException.java new file mode 100644 index 0000000..c5eb413 --- /dev/null +++ b/src/main/java/musichub/business/NoPlayListFoundException.java @@ -0,0 +1,8 @@ +package musichub.business; + +public class NoPlayListFoundException extends Exception { + + public NoPlayListFoundException(String msg) { + super(msg); + } +} \ No newline at end of file diff --git a/src/main/java/musichub/business/PlayList.java b/src/main/java/musichub/business/PlayList.java new file mode 100644 index 0000000..4180a62 --- /dev/null +++ b/src/main/java/musichub/business/PlayList.java @@ -0,0 +1,100 @@ +package musichub.business; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.Node; +import org.w3c.dom.NodeList; + +import java.util.ArrayList; +import java.util.UUID; + +public class PlayList { + private final String title; + private final UUID uuid; + private ArrayList elementUUIDs; + + public PlayList(String title, String id, ArrayList elementUUIDs) { + this.title = title; + this.uuid = UUID.fromString(id); + this.elementUUIDs = elementUUIDs; + } + + public PlayList(String title) { + this.title = title; + this.uuid = UUID.randomUUID(); + this.elementUUIDs = new ArrayList<>(); + } + + public PlayList(Element xmlElement) { + { + this.title = xmlElement.getElementsByTagName("title").item(0).getTextContent(); + + String uuid = null; + try { + uuid = xmlElement.getElementsByTagName("UUID").item(0).getTextContent(); + } catch (Exception ex) { + System.out.println("Empty playlist UUID, will create a new one"); + } + if ((uuid == null) || (uuid.isEmpty())) + this.uuid = UUID.randomUUID(); + else this.uuid = UUID.fromString(uuid); + + //parse list of elements: + Node elementsElement = xmlElement.getElementsByTagName("elements").item(0); + NodeList elementUUIDNodes = elementsElement.getChildNodes(); + if (elementUUIDNodes == null) return; + + this.elementUUIDs = new ArrayList<>(); + + + for (int i = 0; i < elementUUIDNodes.getLength(); i++) { + if (elementUUIDNodes.item(i).getNodeType() == Node.ELEMENT_NODE) { + Element elementElement = (Element) elementUUIDNodes.item(i); + if (elementElement.getNodeName().equals("UUID")) { + try { + this.addElement(UUID.fromString(elementElement.getTextContent())); + } catch (Exception ex) { + ex.printStackTrace(); + } + } + } + } + } + } + + public void addElement(UUID element) { + elementUUIDs.add(element); + } + + public ArrayList getElements() { + return elementUUIDs; + } + + public String getTitle() { + return title; + } + + public void createXMLElement(Document document, Element parentElement) { + Element playlistElement = document.createElement("playlist"); + parentElement.appendChild(playlistElement); + + Element nameElement = document.createElement("title"); + nameElement.appendChild(document.createTextNode(title)); + playlistElement.appendChild(nameElement); + + Element UUIDElement = document.createElement("UUID"); + UUIDElement.appendChild(document.createTextNode(uuid.toString())); + playlistElement.appendChild(UUIDElement); + + + Element elementsElement = document.createElement("elements"); + for (UUID currentUUID : this.elementUUIDs) { + + Element elementUUIDElement = document.createElement("UUID"); + elementUUIDElement.appendChild(document.createTextNode(currentUUID.toString())); + elementsElement.appendChild(elementUUIDElement); + } + playlistElement.appendChild(elementsElement); + } + +} \ No newline at end of file diff --git a/src/main/java/musichub/business/Song.java b/src/main/java/musichub/business/Song.java new file mode 100644 index 0000000..3e9011b --- /dev/null +++ b/src/main/java/musichub/business/Song.java @@ -0,0 +1,56 @@ +package musichub.business; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; + + +public class Song extends AudioElement { + private Genre genre; + + public Song(String title, String artist, int length, String uid, String content, String genre) { + super(title, artist, length, uid, content); + this.setGenre(genre); + } + + public Song(String title, String artist, int length, String content, String genre) { + super(title, artist, length, content); + this.setGenre(genre); + } + + public Song(Element xmlElement) { + super(xmlElement); + this.setGenre(xmlElement.getElementsByTagName("genre").item(0).getTextContent()); + } + + public String getGenre() { + return genre.getGenre(); + } + + public void setGenre(String genre) { + switch (genre.toLowerCase()) { + default -> this.genre = Genre.JAZZ; + case "classic" -> this.genre = Genre.CLASSIC; + case "hiphop" -> this.genre = Genre.HIPHOP; + case "rock" -> this.genre = Genre.ROCK; + case "pop" -> this.genre = Genre.POP; + case "rap" -> this.genre = Genre.RAP; + } + } + + public String toString() { + return super.toString() + ", Genre = " + getGenre() + "\n"; + } + + public void createXMLElement(Document document, Element parentElement) { + // song element + Element song = document.createElement("song"); + + super.createXMLElement(document, song); + + Element genreElement = document.createElement("genre"); + genreElement.appendChild(document.createTextNode(genre.getGenre())); + song.appendChild(genreElement); + + parentElement.appendChild(song); + } +} \ No newline at end of file diff --git a/src/main/java/musichub/main/Main.java b/src/main/java/musichub/main/Main.java new file mode 100644 index 0000000..b72a95b --- /dev/null +++ b/src/main/java/musichub/main/Main.java @@ -0,0 +1,248 @@ +package musichub.main; + +import musichub.business.*; + +import java.util.Iterator; +import java.util.Scanner; + +public class Main { + public static void main(String[] args) { + + MusicHub theHub = new MusicHub(); + + System.out.println("Type h for available commands"); + + + Scanner scan = new Scanner(System.in); + String choice = scan.nextLine(); + + String albumTitle; + + if (choice.length() == 0) System.exit(0); + + while (!choice.equals("")) { //if the user puts nothing, quit the loop/system + switch (choice.charAt(0)) { + case 'q': //added the option directly in the switch instead of the loop + System.exit(0); + case 'h': + printAvailableCommands(); + choice = scan.nextLine(); + break; + case 't': + //album titles, ordered by date + System.out.println(theHub.getAlbumsTitlesSortedByDate()); + printAvailableCommands(); + choice = scan.nextLine(); + break; + case 'g': + //songs of an album, sorted by genre + System.out.println("Songs of an album sorted by genre will be displayed; enter the album name, available albums are:"); + System.out.println(theHub.getAlbumsTitlesSortedByDate()); + + albumTitle = scan.nextLine(); + try { + System.out.println(theHub.getAlbumSongsSortedByGenre(albumTitle)); + } catch (NoAlbumFoundException ex) { + System.out.println("No album found with the requested title " + ex.getMessage()); + } + printAvailableCommands(); + choice = scan.nextLine(); + break; + case 'd': + //songs of an album + System.out.println("Songs of an album will be displayed; enter the album name, available albums are:"); + System.out.println(theHub.getAlbumsTitlesSortedByDate()); + + albumTitle = scan.nextLine(); + try { + System.out.println(theHub.getAlbumSongs(albumTitle)); + } catch (NoAlbumFoundException ex) { + System.out.println("No album found with the requested title " + ex.getMessage()); + } + printAvailableCommands(); + choice = scan.nextLine(); + break; + case 'u': + //audiobooks ordered by author + System.out.println(theHub.getAudiobooksTitlesSortedByAuthor()); + printAvailableCommands(); + choice = scan.nextLine(); + break; + case 'c': + // add a new song + System.out.println("Enter a new song: "); + System.out.println("Song title: "); + String title = scan.nextLine(); + System.out.println("Song genre (jazz, classic, hiphop, rock, pop, rap):"); + String genre = scan.nextLine(); + System.out.println("Song artist: "); + 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(); + Song s = new Song(title, artist, length, content, genre); + theHub.addElement(s); + System.out.println("New element list: "); + Iterator it = theHub.elements(); + while (it.hasNext()) System.out.println(it.next().getTitle()); + System.out.println("Song created!"); + printAvailableCommands(); + choice = scan.nextLine(); + break; + case 'a': + // add a new album + System.out.println("Enter a new album: "); + System.out.println("Album title: "); + String aTitle = scan.nextLine(); + System.out.println("Album artist: "); + String aArtist = scan.nextLine(); + System.out.println("Album length in seconds: "); + int aLength = Integer.parseInt(scan.nextLine()); + System.out.println("Album date as YYYY-DD-MM: "); + String aDate = scan.nextLine(); + Album a = new Album(aTitle, aArtist, aLength, aDate); + theHub.addAlbum(a); + System.out.println("New list of albums: "); + Iterator ita = theHub.albums(); + while (ita.hasNext()) System.out.println(ita.next().getTitle()); + System.out.println("Album created!"); + printAvailableCommands(); + choice = scan.nextLine(); + break; + case '+': + //add a song to an album: + System.out.println("Add an existing song to an existing album"); + System.out.println("Type the name of the song you wish to add. Available songs: "); + Iterator itae = theHub.elements(); + while (itae.hasNext()) { + AudioElement ae = itae.next(); + if (ae instanceof Song) System.out.println(ae.getTitle()); + } + String songTitle = scan.nextLine(); + + System.out.println("Type the name of the album you wish to enrich. Available albums: "); + Iterator ait = theHub.albums(); + while (ait.hasNext()) { + Album al = ait.next(); + System.out.println(al.getTitle()); + } + String titleAlbum = scan.nextLine(); + try { + theHub.addElementToAlbum(songTitle, titleAlbum); + } catch (NoAlbumFoundException | NoElementFoundException ex) { + System.out.println(ex.getMessage()); + } + System.out.println("Song added to the album!"); + printAvailableCommands(); + choice = scan.nextLine(); + break; + case 'l': + // add a new audiobook + System.out.println("Enter a new audiobook: "); + System.out.println("AudioBook title: "); + String bTitle = scan.nextLine(); + System.out.println("AudioBook category (youth, novel, theater, documentary, speech)"); + String bCategory = scan.nextLine(); + System.out.println("AudioBook artist: "); + String bArtist = scan.nextLine(); + System.out.println("AudioBook length in seconds: "); + int bLength = Integer.parseInt(scan.nextLine()); + System.out.println("AudioBook content: "); + String bContent = scan.nextLine(); + System.out.println("AudioBook language (french, english, italian, spanish, german)"); + String bLanguage = scan.nextLine(); + AudioBook b = new AudioBook(bTitle, bArtist, bLength, bContent, bLanguage, bCategory); + theHub.addElement(b); + System.out.println("Audiobook created! New element list: "); + Iterator itl = theHub.elements(); + while (itl.hasNext()) System.out.println(itl.next().getTitle()); + printAvailableCommands(); + choice = scan.nextLine(); + break; + case 'p': + //create a new playlist from existing elements + System.out.println("Add an existing song or audiobook to a new playlist"); + System.out.println("Existing playlists:"); + Iterator itpl = theHub.playlists(); + while (itpl.hasNext()) { + PlayList pl = itpl.next(); + System.out.println(pl.getTitle()); + } + System.out.println("Type the name of the playlist you wish to create:"); + String playListTitle = scan.nextLine(); + PlayList pl = new PlayList(playListTitle); + theHub.addPlaylist(pl); + System.out.println("Available elements: "); + + Iterator itael = theHub.elements(); + while (itael.hasNext()) { + AudioElement ae = itael.next(); + System.out.println(ae.getTitle()); + } + while (choice.charAt(0) != 'n') { + System.out.println("Type the name of the audio element you wish to add or 'n' to exit:"); + String elementTitle = scan.nextLine(); + try { + theHub.addElementToPlayList(elementTitle, playListTitle); + } catch (NoPlayListFoundException | NoElementFoundException ex) { + System.out.println(ex.getMessage()); + } + + System.out.println("Type y to add a new one, n to end"); + choice = scan.nextLine(); + } + System.out.println("Playlist created!"); + printAvailableCommands(); + choice = scan.nextLine(); + break; + case '-': + //delete a playlist + System.out.println("Delete an existing playlist. Available playlists:"); + Iterator itp = theHub.playlists(); + while (itp.hasNext()) { + PlayList p = itp.next(); + System.out.println(p.getTitle()); + } + String plTitle = scan.nextLine(); + try { + theHub.deletePlayList(plTitle); + } catch (NoPlayListFoundException ex) { + System.out.println(ex.getMessage()); + } + System.out.println("Playlist deleted!"); + printAvailableCommands(); + choice = scan.nextLine(); + break; + case 's': + //save elements, albums, playlists + theHub.saveElements(); + theHub.saveAlbums(); + theHub.savePlayLists(); + System.out.println("Elements, albums and playlists saved!"); + printAvailableCommands(); + choice = scan.nextLine(); + break; + default: + + break; + } + } + scan.close(); + } + + private static void printAvailableCommands() { + System.out.println("t: display the album titles, ordered by date"); + 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("c: add a new song"); + System.out.println("a: add a new album"); + System.out.println("+: add a song to an album"); + System.out.println("l: add a new audiobook"); + 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("q: quit program"); + } +} \ No newline at end of file diff --git a/src/main/java/musichub/util/XMLHandler.java b/src/main/java/musichub/util/XMLHandler.java new file mode 100644 index 0000000..4b61842 --- /dev/null +++ b/src/main/java/musichub/util/XMLHandler.java @@ -0,0 +1,74 @@ +package musichub.util; + +import org.w3c.dom.Document; +import org.w3c.dom.Element; +import org.w3c.dom.NodeList; +import org.xml.sax.SAXException; + +import javax.xml.parsers.DocumentBuilder; +import javax.xml.parsers.DocumentBuilderFactory; +import javax.xml.parsers.ParserConfigurationException; +import javax.xml.transform.Transformer; +import javax.xml.transform.TransformerException; +import javax.xml.transform.TransformerFactory; +import javax.xml.transform.dom.DOMSource; +import javax.xml.transform.stream.StreamResult; +import java.io.File; +import java.io.IOException; + + +public class XMLHandler { + TransformerFactory transformerFactory; + Transformer transformer; + DocumentBuilderFactory documentFactory; + DocumentBuilder documentBuilder; + + public XMLHandler() { + try { + transformerFactory = TransformerFactory.newInstance(); + transformer = transformerFactory.newTransformer(); + documentFactory = DocumentBuilderFactory.newInstance(); + documentBuilder = documentFactory.newDocumentBuilder(); + } catch (TransformerException | ParserConfigurationException tfe) { + tfe.printStackTrace(); + } + } + + public void createXMLFile(Document document, String filePath) { + try { + // create the xml file + //transform the DOM Object to an XML File + DOMSource domSource = new DOMSource(document); + StreamResult streamResult = new StreamResult(new File(filePath)); + + // If you use + // StreamResult result = new StreamResult(System.out); + // the output will be pushed to the standard output ... + // You can use that for debugging + + transformer.transform(domSource, streamResult); + + } catch (TransformerException tfe) { + tfe.printStackTrace(); + } + } + + public Document createXMLDocument() { + return documentBuilder.newDocument(); + } + + public NodeList parseXMLFile(String filePath) { + NodeList elementNodes = null; + try { + Document document = documentBuilder.parse(new File(filePath)); + Element root = document.getDocumentElement(); + + elementNodes = root.getChildNodes(); + } catch (SAXException | IOException e) { + e.printStackTrace(); + } + return elementNodes; + } + + +} \ No newline at end of file diff --git a/src/musichub/business/Album.java b/src/musichub/business/Album.java deleted file mode 100644 index 01fd179..0000000 --- a/src/musichub/business/Album.java +++ /dev/null @@ -1,145 +0,0 @@ -package musichub.business; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.*; - - -public class Album { - private final String title; - private final int lengthInSeconds; - private final UUID uuid; - private String artist; - private Date date; - private ArrayList songsUIDs; - - public Album(String title, String artist, int lengthInSeconds, String id, String date, ArrayList songsUIDs) { - this.title = title; - this.artist = artist; - this.lengthInSeconds = lengthInSeconds; - this.uuid = UUID.fromString(id); - try { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - this.date = sdf.parse(date); - } catch (ParseException ex) { - ex.printStackTrace(); - } - this.songsUIDs = songsUIDs; - } - - public Album(String title, String artist, int lengthInSeconds, String date) { - this.title = title; - this.artist = artist; - this.lengthInSeconds = lengthInSeconds; - this.uuid = UUID.randomUUID(); - try { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - this.date = sdf.parse(date); - } catch (ParseException ex) { - ex.printStackTrace(); - } - this.songsUIDs = new ArrayList<>(); - } - - public Album(Element xmlElement) throws Exception { - { - this.title = xmlElement.getElementsByTagName("title").item(0).getTextContent(); - this.lengthInSeconds = Integer.parseInt(xmlElement.getElementsByTagName("lengthInSeconds").item(0).getTextContent()); - String uuid = null; - try { - uuid = xmlElement.getElementsByTagName("UUID").item(0).getTextContent(); - } catch (Exception ex) { - System.out.println("Empty album UUID, will create a new one"); - } - if ((uuid == null) || (uuid.isEmpty())) - this.uuid = UUID.randomUUID(); - else this.uuid = UUID.fromString(uuid); - - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - this.date = sdf.parse(xmlElement.getElementsByTagName("date").item(0).getTextContent()); - //parse list of songs: - Node songsElement = xmlElement.getElementsByTagName("songs").item(0); - NodeList songUUIDNodes = songsElement.getChildNodes(); - if (songUUIDNodes == null) return; - - this.songsUIDs = new ArrayList<>(); - - for (int i = 0; i < songUUIDNodes.getLength(); i++) { - if (songUUIDNodes.item(i).getNodeType() == Node.ELEMENT_NODE) { - Element songElement = (Element) songUUIDNodes.item(i); - if (songElement.getNodeName().equals("UUID")) { - try { - this.addSong(UUID.fromString(songElement.getTextContent())); - } catch (Exception ex) { - ex.printStackTrace(); - } - } - } - } - } - } - - - public void addSong(UUID song) { - songsUIDs.add(song); - } - - - public List getSongs() { - return songsUIDs; - } - - public ArrayList getSongsRandomly() { - ArrayList shuffledSongs = songsUIDs; - Collections.shuffle(shuffledSongs); - return shuffledSongs; - } - - public String getTitle() { - return title; - } - - public Date getDate() { - return date; - } - - public void createXMLElement(Document document, Element parentElement) { - Element albumElement = document.createElement("album"); - parentElement.appendChild(albumElement); - - Element nameElement = document.createElement("title"); - nameElement.appendChild(document.createTextNode(title)); - albumElement.appendChild(nameElement); - - Element artistElement = document.createElement("artist"); - artistElement.appendChild(document.createTextNode(artist)); - albumElement.appendChild(artistElement); - - Element lengthElement = document.createElement("lengthInSeconds"); - lengthElement.appendChild(document.createTextNode(Integer.valueOf(lengthInSeconds).toString())); - albumElement.appendChild(lengthElement); - - Element UUIDElement = document.createElement("UUID"); - UUIDElement.appendChild(document.createTextNode(uuid.toString())); - albumElement.appendChild(UUIDElement); - - Element dateElement = document.createElement("date"); - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - dateElement.appendChild(document.createTextNode(sdf.format(date))); - albumElement.appendChild(dateElement); - - Element songsElement = document.createElement("songs"); - for (UUID currentUUID : this.songsUIDs) { - Element songUUIDElement = document.createElement("UUID"); - songUUIDElement.appendChild(document.createTextNode(currentUUID.toString())); - songsElement.appendChild(songUUIDElement); - } - albumElement.appendChild(songsElement); - - } -} \ No newline at end of file diff --git a/src/musichub/business/AudioBook.java b/src/musichub/business/AudioBook.java deleted file mode 100644 index 80392d6..0000000 --- a/src/musichub/business/AudioBook.java +++ /dev/null @@ -1,78 +0,0 @@ -package musichub.business; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -public class AudioBook extends AudioElement { - private Language language; - private Category category; - - public AudioBook(String title, String artist, int lengthInSeconds, String uid, String content, String language, String category) { - super(title, artist, lengthInSeconds, uid, content); - this.setLanguage(language); - this.setCategory(category); - } - - public AudioBook(String title, String artist, int lengthInSeconds, String content, String language, String category) { - super(title, artist, lengthInSeconds, content); - this.setLanguage(language); - this.setCategory(category); - } - - public AudioBook(Element xmlElement) { - super(xmlElement); - this.setLanguage(xmlElement.getElementsByTagName("language").item(0).getTextContent()); - this.setCategory(xmlElement.getElementsByTagName("category").item(0).getTextContent()); - } - - public Language getLanguage() { - return this.language; - } - - public void setLanguage(String language) { - switch (language.toLowerCase()) { - default -> this.language = Language.ENGLISH; - case "french" -> this.language = Language.FRENCH; - case "german" -> this.language = Language.GERMAN; - case "spanish" -> this.language = Language.SPANISH; - case "italian" -> this.language = Language.ITALIAN; - } - } - - public Category getCategory() { - return this.category; - } - - public void setCategory(String category) { - switch (category.toLowerCase()) { - default -> this.category = Category.YOUTH; - case "novel" -> this.category = Category.NOVEL; - case "theater" -> this.category = Category.THEATER; - case "documentary" -> this.category = Category.DOCUMENTARY; - case "speech" -> this.category = Category.SPEECH; - } - } - - - public String toString() { - return super.toString() + ", Language = " + getLanguage() + ", Category = " + getCategory() + "\n"; - } - - - public void createXMLElement(Document document, Element parentElement) { - // audiobook element - Element audioBook = document.createElement("audiobook"); - - super.createXMLElement(document, audioBook); - - Element languageElement = document.createElement("language"); - languageElement.appendChild(document.createTextNode(language.getLanguage())); - audioBook.appendChild(languageElement); - - Element categoryElement = document.createElement("category"); - categoryElement.appendChild(document.createTextNode(category.getCategory())); - audioBook.appendChild(categoryElement); - - parentElement.appendChild(audioBook); - } -} \ No newline at end of file diff --git a/src/musichub/business/AudioElement.java b/src/musichub/business/AudioElement.java deleted file mode 100644 index e0a686b..0000000 --- a/src/musichub/business/AudioElement.java +++ /dev/null @@ -1,88 +0,0 @@ -package musichub.business; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; - -import java.util.UUID; - -public abstract class AudioElement { - protected String title; - protected String artist; - protected int lengthInSeconds; - protected UUID uuid; - protected String content; - - public AudioElement(String title, String artist, int lengthInSeconds, String id, String content) { - this.title = title; - this.artist = artist; - this.lengthInSeconds = lengthInSeconds; - this.uuid = UUID.fromString(id); - this.content = content; - } - - public AudioElement(String title, String artist, int lengthInSeconds, String content) { - this.title = title; - this.artist = artist; - this.lengthInSeconds = lengthInSeconds; - this.content = content; - this.uuid = UUID.randomUUID(); - } - - public AudioElement(Element xmlElement) { - { - title = xmlElement.getElementsByTagName("title").item(0).getTextContent(); - artist = xmlElement.getElementsByTagName("artist").item(0).getTextContent(); - lengthInSeconds = Integer.parseInt(xmlElement.getElementsByTagName("length").item(0).getTextContent()); - content = xmlElement.getElementsByTagName("content").item(0).getTextContent(); - String uuid = null; - try { - uuid = xmlElement.getElementsByTagName("UUID").item(0).getTextContent(); - } catch (Exception ex) { - System.out.println("Empty element UUID, will create a new one"); - } - if ((uuid == null) || (uuid.isEmpty())) - this.uuid = UUID.randomUUID(); - else this.uuid = UUID.fromString(uuid); - } - } - - public UUID getUUID() { - return this.uuid; - } - - public String getArtist() { - return this.artist; - } - - public String getTitle() { - return this.title; - } - - public String toString() { - return "Title = " + this.title + ", Artist = " + this.artist + ", Length = " + this.lengthInSeconds + ", Content = " + this.content; - } - - public void createXMLElement(Document document, Element parentElement) { - Element nameElement = document.createElement("title"); - nameElement.appendChild(document.createTextNode(title)); - parentElement.appendChild(nameElement); - - Element artistElement = document.createElement("artist"); - artistElement.appendChild(document.createTextNode(artist)); - parentElement.appendChild(artistElement); - - Element lengthElement = document.createElement("length"); - lengthElement.appendChild(document.createTextNode(Integer.valueOf(lengthInSeconds).toString())); - parentElement.appendChild(lengthElement); - - Element UUIDElement = document.createElement("UUID"); - UUIDElement.appendChild(document.createTextNode(uuid.toString())); - parentElement.appendChild(UUIDElement); - - Element contentElement = document.createElement("content"); - contentElement.appendChild(document.createTextNode(content)); - parentElement.appendChild(contentElement); - - } - -} \ No newline at end of file diff --git a/src/musichub/business/Category.java b/src/musichub/business/Category.java deleted file mode 100644 index f676e51..0000000 --- a/src/musichub/business/Category.java +++ /dev/null @@ -1,14 +0,0 @@ -package musichub.business; - -public enum Category { - YOUTH("youth"), NOVEL("novel"), THEATER("theater"), DOCUMENTARY("documentary"), SPEECH("speech"); - private final String category; - - Category(String category) { - this.category = category; - } - - public String getCategory() { - return category; - } -} \ No newline at end of file diff --git a/src/musichub/business/Genre.java b/src/musichub/business/Genre.java deleted file mode 100644 index 18deca6..0000000 --- a/src/musichub/business/Genre.java +++ /dev/null @@ -1,14 +0,0 @@ -package musichub.business; - -public enum Genre { - JAZZ("jazz"), CLASSIC("classic"), HIPHOP("hiphop"), ROCK("rock"), POP("pop"), RAP("rap"); - private final String genre; - - Genre(String genre) { - this.genre = genre; - } - - public String getGenre() { - return genre; - } -} \ No newline at end of file diff --git a/src/musichub/business/Language.java b/src/musichub/business/Language.java deleted file mode 100644 index 679e586..0000000 --- a/src/musichub/business/Language.java +++ /dev/null @@ -1,14 +0,0 @@ -package musichub.business; - -public enum Language { - FRENCH("french"), ENGLISH("english"), ITALIAN("italian"), SPANISH("spanish"), GERMAN("german"); - private final String language; - - Language(String language) { - this.language = language; - } - - public String getLanguage() { - return language; - } -} \ No newline at end of file diff --git a/src/musichub/business/MusicHub.java b/src/musichub/business/MusicHub.java deleted file mode 100644 index 38e2214..0000000 --- a/src/musichub/business/MusicHub.java +++ /dev/null @@ -1,329 +0,0 @@ -package musichub.business; - -import musichub.util.XMLHandler; -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -import java.util.*; - -class SortByDate implements Comparator { - public int compare(Album a1, Album a2) { - return a1.getDate().compareTo(a2.getDate()); - } -} - -class SortByGenre implements Comparator { - public int compare(Song s1, Song s2) { - return s1.getGenre().compareTo(s2.getGenre()); - } -} - -class SortByAuthor implements Comparator { - public int compare(AudioElement e1, AudioElement e2) { - return e1.getArtist().compareTo(e2.getArtist()); - } -} - -public class MusicHub { - public static final String DIR = System.getProperty("user.dir"); - public static final String ALBUMS_FILE_PATH = DIR + "/files/albums.xml"; - public static final String PLAYLISTS_FILE_PATH = DIR + "/files/playlists.xml"; - public static final String ELEMENTS_FILE_PATH = DIR + "/files/elements.xml"; - private final List albums; - private final List playlists; - private final List elements; - private final XMLHandler xmlHandler = new XMLHandler(); - - public MusicHub() { - albums = new LinkedList<>(); - playlists = new LinkedList<>(); - elements = new LinkedList<>(); - this.loadElements(); - this.loadAlbums(); - this.loadPlaylists(); - } - - public void addElement(AudioElement element) { - elements.add(element); - } - - public void addAlbum(Album album) { - albums.add(album); - } - - public void addPlaylist(PlayList playlist) { - playlists.add(playlist); - } - - public void deletePlayList(String playListTitle) throws NoPlayListFoundException { - - PlayList thePlayList = null; - boolean result = false; - for (PlayList pl : playlists) { - if (pl.getTitle().equalsIgnoreCase(playListTitle)) { - thePlayList = pl; - break; - } - } - - if (thePlayList != null) - result = playlists.remove(thePlayList); - if (!result) throw new NoPlayListFoundException("Playlist " + playListTitle + " not found!"); - } - - public Iterator albums() { - return albums.listIterator(); - } - - public Iterator playlists() { - return playlists.listIterator(); - } - - public Iterator elements() { - return elements.listIterator(); - } - - public String getAlbumsTitlesSortedByDate() { - StringBuilder titleList = new StringBuilder(); - albums.sort(new SortByDate()); - for (Album al : albums) - titleList.append(al.getTitle()).append("\n"); - return titleList.toString(); - } - - public String getAudiobooksTitlesSortedByAuthor() { - StringBuilder titleList = new StringBuilder(); - List audioBookList = new ArrayList<>(); - for (AudioElement ae : elements) - if (ae instanceof AudioBook) - audioBookList.add(ae); - audioBookList.sort(new SortByAuthor()); - for (AudioElement ab : audioBookList) - titleList.append(ab.getArtist()).append("\n"); - return titleList.toString(); - } - - public List getAlbumSongs(String albumTitle) throws NoAlbumFoundException { - Album theAlbum = null; - ArrayList songsInAlbum = new ArrayList<>(); - for (Album al : albums) { - if (al.getTitle().equalsIgnoreCase(albumTitle)) { - theAlbum = al; - break; - } - } - if (theAlbum == null) throw new NoAlbumFoundException("No album with this title in the MusicHub!"); - - List songIDs = theAlbum.getSongs(); - for (UUID id : songIDs) - for (AudioElement el : elements) { - if (el instanceof Song) { - if (el.getUUID().equals(id)) songsInAlbum.add(el); - } - } - return songsInAlbum; - - } - - public List getAlbumSongsSortedByGenre(String albumTitle) throws NoAlbumFoundException { - Album theAlbum = null; - ArrayList songsInAlbum = new ArrayList<>(); - for (Album al : albums) { - if (al.getTitle().equalsIgnoreCase(albumTitle)) { - theAlbum = al; - break; - } - } - if (theAlbum == null) throw new NoAlbumFoundException("No album with this title in the MusicHub!"); - - List songIDs = theAlbum.getSongs(); - for (UUID id : songIDs) - for (AudioElement el : elements) { - if (el instanceof Song) { - if (el.getUUID().equals(id)) songsInAlbum.add((Song) el); - } - } - songsInAlbum.sort(new SortByGenre()); - return songsInAlbum; - - } - - public void addElementToAlbum(String elementTitle, String albumTitle) throws NoAlbumFoundException, NoElementFoundException { - Album theAlbum = null; - int i; - boolean found = false; - for (i = 0; i < albums.size(); i++) { - if (albums.get(i).getTitle().equalsIgnoreCase(albumTitle)) { - theAlbum = albums.get(i); - found = true; - break; - } - } - - if (found) { - AudioElement theElement = null; - for (AudioElement ae : elements) { - if (ae.getTitle().equalsIgnoreCase(elementTitle)) { - theElement = ae; - break; - } - } - if (theElement != null) { - theAlbum.addSong(theElement.getUUID()); - //replace the album in the list - albums.set(i, theAlbum); - } else throw new NoElementFoundException("Element " + elementTitle + " not found!"); - } else throw new NoAlbumFoundException("Album " + albumTitle + " not found!"); - - } - - public void addElementToPlayList(String elementTitle, String playListTitle) throws NoPlayListFoundException, NoElementFoundException { - PlayList thePlaylist = null; - int i; - boolean found = false; - - for (i = 0; i < playlists.size(); i++) { - if (playlists.get(i).getTitle().equalsIgnoreCase(playListTitle)) { - thePlaylist = playlists.get(i); - found = true; - break; - } - } - - if (found) { - AudioElement theElement = null; - for (AudioElement ae : elements) { - if (ae.getTitle().equalsIgnoreCase(elementTitle)) { - theElement = ae; - break; - } - } - if (theElement != null) { - thePlaylist.addElement(theElement.getUUID()); - //replace the album in the list - playlists.set(i, thePlaylist); - } else throw new NoElementFoundException("Element " + elementTitle + " not found!"); - - } else throw new NoPlayListFoundException("Playlist " + playListTitle + " not found!"); - - } - - private void loadAlbums() { - NodeList albumNodes = xmlHandler.parseXMLFile(ALBUMS_FILE_PATH); - if (albumNodes == null) return; - - for (int i = 0; i < albumNodes.getLength(); i++) { - if (albumNodes.item(i).getNodeType() == Node.ELEMENT_NODE) { - Element albumElement = (Element) albumNodes.item(i); - if (albumElement.getNodeName().equals("album")) { - try { - this.addAlbum(new Album(albumElement)); - } catch (Exception ex) { - System.out.println("Something is wrong with the XML album element"); - } - } - } - } - } - - private void loadPlaylists() { - NodeList playlistNodes = xmlHandler.parseXMLFile(PLAYLISTS_FILE_PATH); - if (playlistNodes == null) return; - - for (int i = 0; i < playlistNodes.getLength(); i++) { - if (playlistNodes.item(i).getNodeType() == Node.ELEMENT_NODE) { - Element playlistElement = (Element) playlistNodes.item(i); - if (playlistElement.getNodeName().equals("playlist")) { - try { - this.addPlaylist(new PlayList(playlistElement)); - } catch (Exception ex) { - System.out.println("Something is wrong with the XML playlist element"); - } - } - } - } - } - - private void loadElements() { - NodeList audioelementsNodes = xmlHandler.parseXMLFile(ELEMENTS_FILE_PATH); - if (audioelementsNodes == null) return; - - for (int i = 0; i < audioelementsNodes.getLength(); i++) { - if (audioelementsNodes.item(i).getNodeType() == Node.ELEMENT_NODE) { - Element audioElement = (Element) audioelementsNodes.item(i); - if (audioElement.getNodeName().equals("song")) { - try { - AudioElement newSong = new Song(audioElement); - this.addElement(newSong); - } catch (Exception ex) { - System.out.println("Something is wrong with the XML song element"); - } - } - if (audioElement.getNodeName().equals("audiobook")) { - try { - AudioElement newAudioBook = new AudioBook(audioElement); - this.addElement(newAudioBook); - } catch (Exception ex) { - System.out.println("Something is wrong with the XML audiobook element"); - } - } - } - } - } - - - public void saveAlbums() { - Document document = xmlHandler.createXMLDocument(); - if (document == null) return; - - // root element - Element root = document.createElement("albums"); - document.appendChild(root); - - //save all albums - for (Iterator albumsIter = this.albums(); albumsIter.hasNext(); ) { - Album currentAlbum = albumsIter.next(); - currentAlbum.createXMLElement(document, root); - } - xmlHandler.createXMLFile(document, ALBUMS_FILE_PATH); - } - - public void savePlayLists() { - Document document = xmlHandler.createXMLDocument(); - if (document == null) return; - - // root element - Element root = document.createElement("playlists"); - document.appendChild(root); - - //save all playlists - for (Iterator playlistsIter = this.playlists(); playlistsIter.hasNext(); ) { - PlayList currentPlayList = playlistsIter.next(); - currentPlayList.createXMLElement(document, root); - } - xmlHandler.createXMLFile(document, PLAYLISTS_FILE_PATH); - } - - public void saveElements() { - Document document = xmlHandler.createXMLDocument(); - if (document == null) return; - - // root element - Element root = document.createElement("elements"); - document.appendChild(root); - - //save all AudioElements - for (AudioElement currentElement : elements) { - - if (currentElement instanceof Song) { - currentElement.createXMLElement(document, root); - } - if (currentElement instanceof AudioBook) { - currentElement.createXMLElement(document, root); - } - } - xmlHandler.createXMLFile(document, ELEMENTS_FILE_PATH); - } -} \ No newline at end of file diff --git a/src/musichub/business/NoAlbumFoundException.java b/src/musichub/business/NoAlbumFoundException.java deleted file mode 100644 index 04cbfcd..0000000 --- a/src/musichub/business/NoAlbumFoundException.java +++ /dev/null @@ -1,8 +0,0 @@ -package musichub.business; - -public class NoAlbumFoundException extends Exception { - - public NoAlbumFoundException(String msg) { - super(msg); - } -} \ No newline at end of file diff --git a/src/musichub/business/NoElementFoundException.java b/src/musichub/business/NoElementFoundException.java deleted file mode 100644 index a9b0d76..0000000 --- a/src/musichub/business/NoElementFoundException.java +++ /dev/null @@ -1,8 +0,0 @@ -package musichub.business; - -public class NoElementFoundException extends Exception { - - public NoElementFoundException(String msg) { - super(msg); - } -} \ No newline at end of file diff --git a/src/musichub/business/NoPlayListFoundException.java b/src/musichub/business/NoPlayListFoundException.java deleted file mode 100644 index c5eb413..0000000 --- a/src/musichub/business/NoPlayListFoundException.java +++ /dev/null @@ -1,8 +0,0 @@ -package musichub.business; - -public class NoPlayListFoundException extends Exception { - - public NoPlayListFoundException(String msg) { - super(msg); - } -} \ No newline at end of file diff --git a/src/musichub/business/PlayList.java b/src/musichub/business/PlayList.java deleted file mode 100644 index 4180a62..0000000 --- a/src/musichub/business/PlayList.java +++ /dev/null @@ -1,100 +0,0 @@ -package musichub.business; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.Node; -import org.w3c.dom.NodeList; - -import java.util.ArrayList; -import java.util.UUID; - -public class PlayList { - private final String title; - private final UUID uuid; - private ArrayList elementUUIDs; - - public PlayList(String title, String id, ArrayList elementUUIDs) { - this.title = title; - this.uuid = UUID.fromString(id); - this.elementUUIDs = elementUUIDs; - } - - public PlayList(String title) { - this.title = title; - this.uuid = UUID.randomUUID(); - this.elementUUIDs = new ArrayList<>(); - } - - public PlayList(Element xmlElement) { - { - this.title = xmlElement.getElementsByTagName("title").item(0).getTextContent(); - - String uuid = null; - try { - uuid = xmlElement.getElementsByTagName("UUID").item(0).getTextContent(); - } catch (Exception ex) { - System.out.println("Empty playlist UUID, will create a new one"); - } - if ((uuid == null) || (uuid.isEmpty())) - this.uuid = UUID.randomUUID(); - else this.uuid = UUID.fromString(uuid); - - //parse list of elements: - Node elementsElement = xmlElement.getElementsByTagName("elements").item(0); - NodeList elementUUIDNodes = elementsElement.getChildNodes(); - if (elementUUIDNodes == null) return; - - this.elementUUIDs = new ArrayList<>(); - - - for (int i = 0; i < elementUUIDNodes.getLength(); i++) { - if (elementUUIDNodes.item(i).getNodeType() == Node.ELEMENT_NODE) { - Element elementElement = (Element) elementUUIDNodes.item(i); - if (elementElement.getNodeName().equals("UUID")) { - try { - this.addElement(UUID.fromString(elementElement.getTextContent())); - } catch (Exception ex) { - ex.printStackTrace(); - } - } - } - } - } - } - - public void addElement(UUID element) { - elementUUIDs.add(element); - } - - public ArrayList getElements() { - return elementUUIDs; - } - - public String getTitle() { - return title; - } - - public void createXMLElement(Document document, Element parentElement) { - Element playlistElement = document.createElement("playlist"); - parentElement.appendChild(playlistElement); - - Element nameElement = document.createElement("title"); - nameElement.appendChild(document.createTextNode(title)); - playlistElement.appendChild(nameElement); - - Element UUIDElement = document.createElement("UUID"); - UUIDElement.appendChild(document.createTextNode(uuid.toString())); - playlistElement.appendChild(UUIDElement); - - - Element elementsElement = document.createElement("elements"); - for (UUID currentUUID : this.elementUUIDs) { - - Element elementUUIDElement = document.createElement("UUID"); - elementUUIDElement.appendChild(document.createTextNode(currentUUID.toString())); - elementsElement.appendChild(elementUUIDElement); - } - playlistElement.appendChild(elementsElement); - } - -} \ No newline at end of file diff --git a/src/musichub/business/Song.java b/src/musichub/business/Song.java deleted file mode 100644 index 3e9011b..0000000 --- a/src/musichub/business/Song.java +++ /dev/null @@ -1,56 +0,0 @@ -package musichub.business; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; - - -public class Song extends AudioElement { - private Genre genre; - - public Song(String title, String artist, int length, String uid, String content, String genre) { - super(title, artist, length, uid, content); - this.setGenre(genre); - } - - public Song(String title, String artist, int length, String content, String genre) { - super(title, artist, length, content); - this.setGenre(genre); - } - - public Song(Element xmlElement) { - super(xmlElement); - this.setGenre(xmlElement.getElementsByTagName("genre").item(0).getTextContent()); - } - - public String getGenre() { - return genre.getGenre(); - } - - public void setGenre(String genre) { - switch (genre.toLowerCase()) { - default -> this.genre = Genre.JAZZ; - case "classic" -> this.genre = Genre.CLASSIC; - case "hiphop" -> this.genre = Genre.HIPHOP; - case "rock" -> this.genre = Genre.ROCK; - case "pop" -> this.genre = Genre.POP; - case "rap" -> this.genre = Genre.RAP; - } - } - - public String toString() { - return super.toString() + ", Genre = " + getGenre() + "\n"; - } - - public void createXMLElement(Document document, Element parentElement) { - // song element - Element song = document.createElement("song"); - - super.createXMLElement(document, song); - - Element genreElement = document.createElement("genre"); - genreElement.appendChild(document.createTextNode(genre.getGenre())); - song.appendChild(genreElement); - - parentElement.appendChild(song); - } -} \ No newline at end of file diff --git a/src/musichub/main/Main.java b/src/musichub/main/Main.java deleted file mode 100644 index b72a95b..0000000 --- a/src/musichub/main/Main.java +++ /dev/null @@ -1,248 +0,0 @@ -package musichub.main; - -import musichub.business.*; - -import java.util.Iterator; -import java.util.Scanner; - -public class Main { - public static void main(String[] args) { - - MusicHub theHub = new MusicHub(); - - System.out.println("Type h for available commands"); - - - Scanner scan = new Scanner(System.in); - String choice = scan.nextLine(); - - String albumTitle; - - if (choice.length() == 0) System.exit(0); - - while (!choice.equals("")) { //if the user puts nothing, quit the loop/system - switch (choice.charAt(0)) { - case 'q': //added the option directly in the switch instead of the loop - System.exit(0); - case 'h': - printAvailableCommands(); - choice = scan.nextLine(); - break; - case 't': - //album titles, ordered by date - System.out.println(theHub.getAlbumsTitlesSortedByDate()); - printAvailableCommands(); - choice = scan.nextLine(); - break; - case 'g': - //songs of an album, sorted by genre - System.out.println("Songs of an album sorted by genre will be displayed; enter the album name, available albums are:"); - System.out.println(theHub.getAlbumsTitlesSortedByDate()); - - albumTitle = scan.nextLine(); - try { - System.out.println(theHub.getAlbumSongsSortedByGenre(albumTitle)); - } catch (NoAlbumFoundException ex) { - System.out.println("No album found with the requested title " + ex.getMessage()); - } - printAvailableCommands(); - choice = scan.nextLine(); - break; - case 'd': - //songs of an album - System.out.println("Songs of an album will be displayed; enter the album name, available albums are:"); - System.out.println(theHub.getAlbumsTitlesSortedByDate()); - - albumTitle = scan.nextLine(); - try { - System.out.println(theHub.getAlbumSongs(albumTitle)); - } catch (NoAlbumFoundException ex) { - System.out.println("No album found with the requested title " + ex.getMessage()); - } - printAvailableCommands(); - choice = scan.nextLine(); - break; - case 'u': - //audiobooks ordered by author - System.out.println(theHub.getAudiobooksTitlesSortedByAuthor()); - printAvailableCommands(); - choice = scan.nextLine(); - break; - case 'c': - // add a new song - System.out.println("Enter a new song: "); - System.out.println("Song title: "); - String title = scan.nextLine(); - System.out.println("Song genre (jazz, classic, hiphop, rock, pop, rap):"); - String genre = scan.nextLine(); - System.out.println("Song artist: "); - 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(); - Song s = new Song(title, artist, length, content, genre); - theHub.addElement(s); - System.out.println("New element list: "); - Iterator it = theHub.elements(); - while (it.hasNext()) System.out.println(it.next().getTitle()); - System.out.println("Song created!"); - printAvailableCommands(); - choice = scan.nextLine(); - break; - case 'a': - // add a new album - System.out.println("Enter a new album: "); - System.out.println("Album title: "); - String aTitle = scan.nextLine(); - System.out.println("Album artist: "); - String aArtist = scan.nextLine(); - System.out.println("Album length in seconds: "); - int aLength = Integer.parseInt(scan.nextLine()); - System.out.println("Album date as YYYY-DD-MM: "); - String aDate = scan.nextLine(); - Album a = new Album(aTitle, aArtist, aLength, aDate); - theHub.addAlbum(a); - System.out.println("New list of albums: "); - Iterator ita = theHub.albums(); - while (ita.hasNext()) System.out.println(ita.next().getTitle()); - System.out.println("Album created!"); - printAvailableCommands(); - choice = scan.nextLine(); - break; - case '+': - //add a song to an album: - System.out.println("Add an existing song to an existing album"); - System.out.println("Type the name of the song you wish to add. Available songs: "); - Iterator itae = theHub.elements(); - while (itae.hasNext()) { - AudioElement ae = itae.next(); - if (ae instanceof Song) System.out.println(ae.getTitle()); - } - String songTitle = scan.nextLine(); - - System.out.println("Type the name of the album you wish to enrich. Available albums: "); - Iterator ait = theHub.albums(); - while (ait.hasNext()) { - Album al = ait.next(); - System.out.println(al.getTitle()); - } - String titleAlbum = scan.nextLine(); - try { - theHub.addElementToAlbum(songTitle, titleAlbum); - } catch (NoAlbumFoundException | NoElementFoundException ex) { - System.out.println(ex.getMessage()); - } - System.out.println("Song added to the album!"); - printAvailableCommands(); - choice = scan.nextLine(); - break; - case 'l': - // add a new audiobook - System.out.println("Enter a new audiobook: "); - System.out.println("AudioBook title: "); - String bTitle = scan.nextLine(); - System.out.println("AudioBook category (youth, novel, theater, documentary, speech)"); - String bCategory = scan.nextLine(); - System.out.println("AudioBook artist: "); - String bArtist = scan.nextLine(); - System.out.println("AudioBook length in seconds: "); - int bLength = Integer.parseInt(scan.nextLine()); - System.out.println("AudioBook content: "); - String bContent = scan.nextLine(); - System.out.println("AudioBook language (french, english, italian, spanish, german)"); - String bLanguage = scan.nextLine(); - AudioBook b = new AudioBook(bTitle, bArtist, bLength, bContent, bLanguage, bCategory); - theHub.addElement(b); - System.out.println("Audiobook created! New element list: "); - Iterator itl = theHub.elements(); - while (itl.hasNext()) System.out.println(itl.next().getTitle()); - printAvailableCommands(); - choice = scan.nextLine(); - break; - case 'p': - //create a new playlist from existing elements - System.out.println("Add an existing song or audiobook to a new playlist"); - System.out.println("Existing playlists:"); - Iterator itpl = theHub.playlists(); - while (itpl.hasNext()) { - PlayList pl = itpl.next(); - System.out.println(pl.getTitle()); - } - System.out.println("Type the name of the playlist you wish to create:"); - String playListTitle = scan.nextLine(); - PlayList pl = new PlayList(playListTitle); - theHub.addPlaylist(pl); - System.out.println("Available elements: "); - - Iterator itael = theHub.elements(); - while (itael.hasNext()) { - AudioElement ae = itael.next(); - System.out.println(ae.getTitle()); - } - while (choice.charAt(0) != 'n') { - System.out.println("Type the name of the audio element you wish to add or 'n' to exit:"); - String elementTitle = scan.nextLine(); - try { - theHub.addElementToPlayList(elementTitle, playListTitle); - } catch (NoPlayListFoundException | NoElementFoundException ex) { - System.out.println(ex.getMessage()); - } - - System.out.println("Type y to add a new one, n to end"); - choice = scan.nextLine(); - } - System.out.println("Playlist created!"); - printAvailableCommands(); - choice = scan.nextLine(); - break; - case '-': - //delete a playlist - System.out.println("Delete an existing playlist. Available playlists:"); - Iterator itp = theHub.playlists(); - while (itp.hasNext()) { - PlayList p = itp.next(); - System.out.println(p.getTitle()); - } - String plTitle = scan.nextLine(); - try { - theHub.deletePlayList(plTitle); - } catch (NoPlayListFoundException ex) { - System.out.println(ex.getMessage()); - } - System.out.println("Playlist deleted!"); - printAvailableCommands(); - choice = scan.nextLine(); - break; - case 's': - //save elements, albums, playlists - theHub.saveElements(); - theHub.saveAlbums(); - theHub.savePlayLists(); - System.out.println("Elements, albums and playlists saved!"); - printAvailableCommands(); - choice = scan.nextLine(); - break; - default: - - break; - } - } - scan.close(); - } - - private static void printAvailableCommands() { - System.out.println("t: display the album titles, ordered by date"); - 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("c: add a new song"); - System.out.println("a: add a new album"); - System.out.println("+: add a song to an album"); - System.out.println("l: add a new audiobook"); - 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("q: quit program"); - } -} \ No newline at end of file diff --git a/src/musichub/util/XMLHandler.java b/src/musichub/util/XMLHandler.java deleted file mode 100644 index 4b61842..0000000 --- a/src/musichub/util/XMLHandler.java +++ /dev/null @@ -1,74 +0,0 @@ -package musichub.util; - -import org.w3c.dom.Document; -import org.w3c.dom.Element; -import org.w3c.dom.NodeList; -import org.xml.sax.SAXException; - -import javax.xml.parsers.DocumentBuilder; -import javax.xml.parsers.DocumentBuilderFactory; -import javax.xml.parsers.ParserConfigurationException; -import javax.xml.transform.Transformer; -import javax.xml.transform.TransformerException; -import javax.xml.transform.TransformerFactory; -import javax.xml.transform.dom.DOMSource; -import javax.xml.transform.stream.StreamResult; -import java.io.File; -import java.io.IOException; - - -public class XMLHandler { - TransformerFactory transformerFactory; - Transformer transformer; - DocumentBuilderFactory documentFactory; - DocumentBuilder documentBuilder; - - public XMLHandler() { - try { - transformerFactory = TransformerFactory.newInstance(); - transformer = transformerFactory.newTransformer(); - documentFactory = DocumentBuilderFactory.newInstance(); - documentBuilder = documentFactory.newDocumentBuilder(); - } catch (TransformerException | ParserConfigurationException tfe) { - tfe.printStackTrace(); - } - } - - public void createXMLFile(Document document, String filePath) { - try { - // create the xml file - //transform the DOM Object to an XML File - DOMSource domSource = new DOMSource(document); - StreamResult streamResult = new StreamResult(new File(filePath)); - - // If you use - // StreamResult result = new StreamResult(System.out); - // the output will be pushed to the standard output ... - // You can use that for debugging - - transformer.transform(domSource, streamResult); - - } catch (TransformerException tfe) { - tfe.printStackTrace(); - } - } - - public Document createXMLDocument() { - return documentBuilder.newDocument(); - } - - public NodeList parseXMLFile(String filePath) { - NodeList elementNodes = null; - try { - Document document = documentBuilder.parse(new File(filePath)); - Element root = document.getDocumentElement(); - - elementNodes = root.getChildNodes(); - } catch (SAXException | IOException e) { - e.printStackTrace(); - } - return elementNodes; - } - - -} \ No newline at end of file diff --git a/target/classes/musichub/business/Album.class b/target/classes/musichub/business/Album.class new file mode 100644 index 0000000..c08b1be Binary files /dev/null and b/target/classes/musichub/business/Album.class differ diff --git a/target/classes/musichub/business/AudioBook.class b/target/classes/musichub/business/AudioBook.class new file mode 100644 index 0000000..3ad965d Binary files /dev/null and b/target/classes/musichub/business/AudioBook.class differ diff --git a/target/classes/musichub/business/AudioElement.class b/target/classes/musichub/business/AudioElement.class new file mode 100644 index 0000000..ab20d50 Binary files /dev/null and b/target/classes/musichub/business/AudioElement.class differ diff --git a/target/classes/musichub/business/Category.class b/target/classes/musichub/business/Category.class new file mode 100644 index 0000000..51a68d1 Binary files /dev/null and b/target/classes/musichub/business/Category.class differ diff --git a/target/classes/musichub/business/Genre.class b/target/classes/musichub/business/Genre.class new file mode 100644 index 0000000..66a7d69 Binary files /dev/null and b/target/classes/musichub/business/Genre.class differ diff --git a/target/classes/musichub/business/Language.class b/target/classes/musichub/business/Language.class new file mode 100644 index 0000000..31b17c2 Binary files /dev/null and b/target/classes/musichub/business/Language.class differ diff --git a/target/classes/musichub/business/MusicHub.class b/target/classes/musichub/business/MusicHub.class new file mode 100644 index 0000000..e1a0961 Binary files /dev/null and b/target/classes/musichub/business/MusicHub.class differ diff --git a/target/classes/musichub/business/NoAlbumFoundException.class b/target/classes/musichub/business/NoAlbumFoundException.class new file mode 100644 index 0000000..03aff87 Binary files /dev/null and b/target/classes/musichub/business/NoAlbumFoundException.class differ diff --git a/target/classes/musichub/business/NoElementFoundException.class b/target/classes/musichub/business/NoElementFoundException.class new file mode 100644 index 0000000..6ba1c87 Binary files /dev/null and b/target/classes/musichub/business/NoElementFoundException.class differ diff --git a/target/classes/musichub/business/NoPlayListFoundException.class b/target/classes/musichub/business/NoPlayListFoundException.class new file mode 100644 index 0000000..54319de Binary files /dev/null and b/target/classes/musichub/business/NoPlayListFoundException.class differ diff --git a/target/classes/musichub/business/PlayList.class b/target/classes/musichub/business/PlayList.class new file mode 100644 index 0000000..ea68021 Binary files /dev/null and b/target/classes/musichub/business/PlayList.class differ diff --git a/target/classes/musichub/business/Song.class b/target/classes/musichub/business/Song.class new file mode 100644 index 0000000..c3bdeb7 Binary files /dev/null and b/target/classes/musichub/business/Song.class differ diff --git a/target/classes/musichub/business/SortByAuthor.class b/target/classes/musichub/business/SortByAuthor.class new file mode 100644 index 0000000..fb8ee7a Binary files /dev/null and b/target/classes/musichub/business/SortByAuthor.class differ diff --git a/target/classes/musichub/business/SortByDate.class b/target/classes/musichub/business/SortByDate.class new file mode 100644 index 0000000..c52e870 Binary files /dev/null and b/target/classes/musichub/business/SortByDate.class differ diff --git a/target/classes/musichub/business/SortByGenre.class b/target/classes/musichub/business/SortByGenre.class new file mode 100644 index 0000000..2016012 Binary files /dev/null and b/target/classes/musichub/business/SortByGenre.class differ diff --git a/target/classes/musichub/main/Main.class b/target/classes/musichub/main/Main.class new file mode 100644 index 0000000..06c19ac Binary files /dev/null and b/target/classes/musichub/main/Main.class differ diff --git a/target/classes/musichub/util/XMLHandler.class b/target/classes/musichub/util/XMLHandler.class new file mode 100644 index 0000000..4ab0064 Binary files /dev/null and b/target/classes/musichub/util/XMLHandler.class differ diff --git a/target/maven-archiver/pom.properties b/target/maven-archiver/pom.properties index 24b2415..2665c29 100644 --- a/target/maven-archiver/pom.properties +++ b/target/maven-archiver/pom.properties @@ -1,5 +1,5 @@ #Generated by Maven -#Sat Jun 26 10:59:45 CEST 2021 +#Sat Jun 26 12:33:30 CEST 2021 groupId=esiea.softwareengineering artifactId=spoteezer version=0.1.0 diff --git a/target/maven-javadoc-plugin-stale-data.txt b/target/maven-javadoc-plugin-stale-data.txt new file mode 100644 index 0000000..4368553 --- /dev/null +++ b/target/maven-javadoc-plugin-stale-data.txt @@ -0,0 +1,64 @@ +@options +@argfile +-classpath +'C:/Users/SoftA/.m2/repository/org/junit/jupiter/junit-jupiter-api/5.0.2/junit-jupiter-api-5.0.2.jar;C:/Users/SoftA/.m2/repository/org/opentest4j/opentest4j/1.0.0/opentest4j-1.0.0.jar;C:/Users/SoftA/.m2/repository/org/junit/platform/junit-platform-commons/1.0.2/junit-platform-commons-1.0.2.jar;C:/Users/SoftA/.m2/repository/org/junit/jupiter/junit-jupiter-engine/5.0.2/junit-jupiter-engine-5.0.2.jar;C:/Users/SoftA/.m2/repository/org/junit/platform/junit-platform-engine/1.0.2/junit-platform-engine-1.0.2.jar' +-encoding +'Cp1252' +-protected +--release +16 +-sourcepath +'C:/Users/SoftA/Documents/spoteezer/src/main/java' +-author +-bottom +'Copyright © 2021. All rights reserved.' +-charset +'UTF-8' +-d +'C:/Users/SoftA/Documents/spoteezer/target/site/apidocs' +-docencoding +'UTF-8' +-doctitle +'spoteezer 0.1.0 API' +-use +-version +-windowtitle +'spoteezer 0.1.0 API' +'C:/Users/SoftA/Documents/spoteezer/src/main/java/musichub/business/Album.java' +'C:/Users/SoftA/Documents/spoteezer/src/main/java/musichub/business/AudioBook.java' +'C:/Users/SoftA/Documents/spoteezer/src/main/java/musichub/business/AudioElement.java' +'C:/Users/SoftA/Documents/spoteezer/src/main/java/musichub/business/Category.java' +'C:/Users/SoftA/Documents/spoteezer/src/main/java/musichub/business/Genre.java' +'C:/Users/SoftA/Documents/spoteezer/src/main/java/musichub/business/Language.java' +'C:/Users/SoftA/Documents/spoteezer/src/main/java/musichub/business/MusicHub.java' +'C:/Users/SoftA/Documents/spoteezer/src/main/java/musichub/business/NoAlbumFoundException.java' +'C:/Users/SoftA/Documents/spoteezer/src/main/java/musichub/business/NoElementFoundException.java' +'C:/Users/SoftA/Documents/spoteezer/src/main/java/musichub/business/NoPlayListFoundException.java' +'C:/Users/SoftA/Documents/spoteezer/src/main/java/musichub/business/PlayList.java' +'C:/Users/SoftA/Documents/spoteezer/src/main/java/musichub/business/Song.java' +'C:/Users/SoftA/Documents/spoteezer/src/main/java/musichub/main/Main.java' +'C:/Users/SoftA/Documents/spoteezer/src/main/java/musichub/util/XMLHandler.java' +C:\Users\SoftA\.m2\repository\org\junit\jupiter\junit-jupiter-api\5.0.2\junit-jupiter-api-5.0.2.jar = 1624015816799 +C:\Users\SoftA\.m2\repository\org\opentest4j\opentest4j\1.0.0\opentest4j-1.0.0.jar = 1624015816785 +C:\Users\SoftA\.m2\repository\org\junit\platform\junit-platform-commons\1.0.2\junit-platform-commons-1.0.2.jar = 1624015816770 +C:\Users\SoftA\.m2\repository\org\junit\jupiter\junit-jupiter-engine\5.0.2\junit-jupiter-engine-5.0.2.jar = 1624015816790 +C:\Users\SoftA\.m2\repository\org\junit\platform\junit-platform-engine\1.0.2\junit-platform-engine-1.0.2.jar = 1624015816783 +C:\Users\SoftA\Documents\spoteezer\src\main\java = 1624701235404 +C:\Users\SoftA\Documents\spoteezer\target\site\apidocs\allclasses-index.html = 1624703620814 +C:\Users\SoftA\Documents\spoteezer\target\site\apidocs\allpackages-index.html = 1624703620816 +C:\Users\SoftA\Documents\spoteezer\target\site\apidocs\element-list = 1624703620727 +C:\Users\SoftA\Documents\spoteezer\target\site\apidocs\help-doc.html = 1624703620841 +C:\Users\SoftA\Documents\spoteezer\target\site\apidocs\index-all.html = 1624703620837 +C:\Users\SoftA\Documents\spoteezer\target\site\apidocs\index.html = 1624703620798 +C:\Users\SoftA\Documents\spoteezer\target\site\apidocs\jquery-ui.overrides.css = 1624703620864 +C:\Users\SoftA\Documents\spoteezer\target\site\apidocs\member-search-index.js = 1624703620820 +C:\Users\SoftA\Documents\spoteezer\target\site\apidocs\module-search-index.js = 1624703620817 +C:\Users\SoftA\Documents\spoteezer\target\site\apidocs\overview-summary.html = 1624703620839 +C:\Users\SoftA\Documents\spoteezer\target\site\apidocs\overview-tree.html = 1624703620795 +C:\Users\SoftA\Documents\spoteezer\target\site\apidocs\package-search-index.js = 1624703620818 +C:\Users\SoftA\Documents\spoteezer\target\site\apidocs\script.js = 1624703620845 +C:\Users\SoftA\Documents\spoteezer\target\site\apidocs\search.js = 1624703620848 +C:\Users\SoftA\Documents\spoteezer\target\site\apidocs\serialized-form.html = 1624703620749 +C:\Users\SoftA\Documents\spoteezer\target\site\apidocs\stylesheet.css = 1624703620844 +C:\Users\SoftA\Documents\spoteezer\target\site\apidocs\tag-search-index.js = 1624703620821 +C:\Users\SoftA\Documents\spoteezer\target\site\apidocs\type-search-index.js = 1624703620819 \ No newline at end of file diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst new file mode 100644 index 0000000..a388223 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/createdFiles.lst @@ -0,0 +1,17 @@ +musichub\util\XMLHandler.class +musichub\business\NoElementFoundException.class +musichub\business\Language.class +musichub\business\PlayList.class +musichub\main\Main.class +musichub\business\Album.class +musichub\business\SortByDate.class +musichub\business\AudioElement.class +musichub\business\SortByAuthor.class +musichub\business\NoAlbumFoundException.class +musichub\business\AudioBook.class +musichub\business\Song.class +musichub\business\Genre.class +musichub\business\NoPlayListFoundException.class +musichub\business\Category.class +musichub\business\MusicHub.class +musichub\business\SortByGenre.class diff --git a/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst new file mode 100644 index 0000000..5354743 --- /dev/null +++ b/target/maven-status/maven-compiler-plugin/compile/default-compile/inputFiles.lst @@ -0,0 +1,14 @@ +C:\Users\SoftA\Documents\spoteezer\src\main\java\musichub\business\Genre.java +C:\Users\SoftA\Documents\spoteezer\src\main\java\musichub\business\Song.java +C:\Users\SoftA\Documents\spoteezer\src\main\java\musichub\business\PlayList.java +C:\Users\SoftA\Documents\spoteezer\src\main\java\musichub\main\Main.java +C:\Users\SoftA\Documents\spoteezer\src\main\java\musichub\business\AudioBook.java +C:\Users\SoftA\Documents\spoteezer\src\main\java\musichub\business\Language.java +C:\Users\SoftA\Documents\spoteezer\src\main\java\musichub\business\MusicHub.java +C:\Users\SoftA\Documents\spoteezer\src\main\java\musichub\business\Album.java +C:\Users\SoftA\Documents\spoteezer\src\main\java\musichub\business\AudioElement.java +C:\Users\SoftA\Documents\spoteezer\src\main\java\musichub\business\Category.java +C:\Users\SoftA\Documents\spoteezer\src\main\java\musichub\business\NoAlbumFoundException.java +C:\Users\SoftA\Documents\spoteezer\src\main\java\musichub\business\NoPlayListFoundException.java +C:\Users\SoftA\Documents\spoteezer\src\main\java\musichub\business\NoElementFoundException.java +C:\Users\SoftA\Documents\spoteezer\src\main\java\musichub\util\XMLHandler.java diff --git a/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst b/target/maven-status/maven-compiler-plugin/testCompile/default-testCompile/inputFiles.lst new file mode 100644 index 0000000..e69de29 diff --git a/target/original-spoteezer-0.1.0.jar b/target/original-spoteezer-0.1.0.jar index 3850ad4..1acfbb8 100644 Binary files a/target/original-spoteezer-0.1.0.jar and b/target/original-spoteezer-0.1.0.jar differ diff --git a/target/site/apidocs/allclasses-index.html b/target/site/apidocs/allclasses-index.html new file mode 100644 index 0000000..cf6d8b7 --- /dev/null +++ b/target/site/apidocs/allclasses-index.html @@ -0,0 +1,106 @@ + + + + + +All Classes (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

All Classes

+
+
+
+
+
+
Class
+
Description
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+ +
 
+
+
+
+
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/allpackages-index.html b/target/site/apidocs/allpackages-index.html new file mode 100644 index 0000000..28ab802 --- /dev/null +++ b/target/site/apidocs/allpackages-index.html @@ -0,0 +1,76 @@ + + + + + +All Packages (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

All Packages

+
+
Package Summary
+
+
Package
+
Description
+ +
 
+ +
 
+ +
 
+
+
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/element-list b/target/site/apidocs/element-list new file mode 100644 index 0000000..87e8cdc --- /dev/null +++ b/target/site/apidocs/element-list @@ -0,0 +1,3 @@ +musichub.business +musichub.main +musichub.util diff --git a/target/site/apidocs/help-doc.html b/target/site/apidocs/help-doc.html new file mode 100644 index 0000000..678cc80 --- /dev/null +++ b/target/site/apidocs/help-doc.html @@ -0,0 +1,162 @@ + + + + + +API Help (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

How This API Document Is Organized

+
This API (Application Programming Interface) document has pages corresponding to the items in the navigation bar, described as follows.
+
+
+

Overview

+

The Overview page is the front page of this API document and provides a list of all packages with a summary for each. This page can also contain an overall description of the set of packages.

+
+
+

Package

+

Each package has a page that contains a list of its classes and interfaces, with a summary for each. These pages may contain six categories:

+
    +
  • Interfaces
  • +
  • Classes
  • +
  • Enum Classes
  • +
  • Exceptions
  • +
  • Errors
  • +
  • Annotation Interfaces
  • +
+
+
+

Class or Interface

+

Each class, interface, nested class and nested interface has its own separate page. Each of these pages has three sections consisting of a class/interface description, summary tables, and detailed member descriptions:

+
    +
  • Class Inheritance Diagram
  • +
  • Direct Subclasses
  • +
  • All Known Subinterfaces
  • +
  • All Known Implementing Classes
  • +
  • Class or Interface Declaration
  • +
  • Class or Interface Description
  • +
+
+
    +
  • Nested Class Summary
  • +
  • Field Summary
  • +
  • Property Summary
  • +
  • Constructor Summary
  • +
  • Method Summary
  • +
+
+
    +
  • Field Details
  • +
  • Property Details
  • +
  • Constructor Details
  • +
  • Method Details
  • +
+

The summary entries are alphabetical, while the detailed descriptions are in the order they appear in the source code. This preserves the logical groupings established by the programmer.

+
+
+

Annotation Interface

+

Each annotation interface has its own separate page with the following sections:

+
    +
  • Annotation Interface Declaration
  • +
  • Annotation Interface Description
  • +
  • Required Element Summary
  • +
  • Optional Element Summary
  • +
  • Element Details
  • +
+
+
+

Enum Class

+

Each enum class has its own separate page with the following sections:

+
    +
  • Enum Declaration
  • +
  • Enum Description
  • +
  • Enum Constant Summary
  • +
  • Enum Constant Details
  • +
+
+
+

Use

+

Each documented package, class and interface has its own Use page. This page describes what packages, classes, methods, constructors and fields use any part of the given class or package. Given a class or interface A, its "Use" page includes subclasses of A, fields declared as A, methods that return A, and methods and constructors with parameters of type A. You can access this page by first going to the package, class or interface, then clicking on the "Use" link in the navigation bar.

+
+
+

Tree (Class Hierarchy)

+

There is a Class Hierarchy page for all packages, plus a hierarchy for each package. Each hierarchy page contains a list of classes and a list of interfaces. Classes are organized by inheritance structure starting with java.lang.Object. Interfaces do not inherit from java.lang.Object.

+
    +
  • When viewing the Overview page, clicking on "Tree" displays the hierarchy for all packages.
  • +
  • When viewing a particular package, class or interface page, clicking on "Tree" displays the hierarchy for only that package.
  • +
+
+
+

Index

+

The Index contains an alphabetic index of all classes, interfaces, constructors, methods, and fields, as well as lists of all packages and all classes.

+
+
+

Serialized Form

+

Each serializable or externalizable class has a description of its serialization fields and methods. This information is of interest to those who implement rather than use the API. While there is no link in the navigation bar, you can get to this information by going to any serialized class and clicking "Serialized Form" in the "See Also" section of the class description.

+
+
+

Search

+

You can search for definitions of modules, packages, types, fields, methods, system properties and other terms defined in the API, using some or all of the name, optionally using "camel-case" abbreviations. For example:

+
    +
  • j.l.obj will match "java.lang.Object"
  • +
  • InpStr will match "java.io.InputStream"
  • +
  • HM.cK will match "java.util.HashMap.containsKey(Object)"
  • +
+

Refer to the Javadoc Search Specification for a full description of search features.

+
+
+This help file applies to API documentation generated by the standard doclet.
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/index-all.html b/target/site/apidocs/index-all.html new file mode 100644 index 0000000..4260fa8 --- /dev/null +++ b/target/site/apidocs/index-all.html @@ -0,0 +1,375 @@ + + + + + +Index (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Index

+
+A C D E F G H I J L M N P R S T U V X Y 
All Classes|All Packages|Serialized Form +

A

+
+
addAlbum(Album) - Method in class musichub.business.MusicHub
+
 
+
addElement(UUID) - Method in class musichub.business.PlayList
+
 
+
addElement(AudioElement) - Method in class musichub.business.MusicHub
+
 
+
addElementToAlbum(String, String) - Method in class musichub.business.MusicHub
+
 
+
addElementToPlayList(String, String) - Method in class musichub.business.MusicHub
+
 
+
addPlaylist(PlayList) - Method in class musichub.business.MusicHub
+
 
+
addSong(UUID) - Method in class musichub.business.Album
+
 
+
Album - Class in musichub.business
+
 
+
Album(String, String, int, String) - Constructor for class musichub.business.Album
+
 
+
Album(String, String, int, String, String, ArrayList<UUID>) - Constructor for class musichub.business.Album
+
 
+
Album(Element) - Constructor for class musichub.business.Album
+
 
+
albums() - Method in class musichub.business.MusicHub
+
 
+
ALBUMS_FILE_PATH - Static variable in class musichub.business.MusicHub
+
 
+
artist - Variable in class musichub.business.AudioElement
+
 
+
AudioBook - Class in musichub.business
+
 
+
AudioBook(String, String, int, String, String, String) - Constructor for class musichub.business.AudioBook
+
 
+
AudioBook(String, String, int, String, String, String, String) - Constructor for class musichub.business.AudioBook
+
 
+
AudioBook(Element) - Constructor for class musichub.business.AudioBook
+
 
+
AudioElement - Class in musichub.business
+
 
+
AudioElement(String, String, int, String) - Constructor for class musichub.business.AudioElement
+
 
+
AudioElement(String, String, int, String, String) - Constructor for class musichub.business.AudioElement
+
 
+
AudioElement(Element) - Constructor for class musichub.business.AudioElement
+
 
+
+

C

+
+
Category - Enum Class in musichub.business
+
 
+
CLASSIC - Enum constant in enum class musichub.business.Genre
+
 
+
content - Variable in class musichub.business.AudioElement
+
 
+
createXMLDocument() - Method in class musichub.util.XMLHandler
+
 
+
createXMLElement(Document, Element) - Method in class musichub.business.Album
+
 
+
createXMLElement(Document, Element) - Method in class musichub.business.AudioBook
+
 
+
createXMLElement(Document, Element) - Method in class musichub.business.AudioElement
+
 
+
createXMLElement(Document, Element) - Method in class musichub.business.PlayList
+
 
+
createXMLElement(Document, Element) - Method in class musichub.business.Song
+
 
+
createXMLFile(Document, String) - Method in class musichub.util.XMLHandler
+
 
+
+

D

+
+
deletePlayList(String) - Method in class musichub.business.MusicHub
+
 
+
DIR - Static variable in class musichub.business.MusicHub
+
 
+
DOCUMENTARY - Enum constant in enum class musichub.business.Category
+
 
+
+

E

+
+
elements() - Method in class musichub.business.MusicHub
+
 
+
ELEMENTS_FILE_PATH - Static variable in class musichub.business.MusicHub
+
 
+
ENGLISH - Enum constant in enum class musichub.business.Language
+
 
+
+

F

+
+
FRENCH - Enum constant in enum class musichub.business.Language
+
 
+
+

G

+
+
Genre - Enum Class in musichub.business
+
 
+
GERMAN - Enum constant in enum class musichub.business.Language
+
 
+
getAlbumSongs(String) - Method in class musichub.business.MusicHub
+
 
+
getAlbumSongsSortedByGenre(String) - Method in class musichub.business.MusicHub
+
 
+
getAlbumsTitlesSortedByDate() - Method in class musichub.business.MusicHub
+
 
+
getArtist() - Method in class musichub.business.AudioElement
+
 
+
getAudiobooksTitlesSortedByAuthor() - Method in class musichub.business.MusicHub
+
 
+
getCategory() - Method in class musichub.business.AudioBook
+
 
+
getCategory() - Method in enum class musichub.business.Category
+
 
+
getDate() - Method in class musichub.business.Album
+
 
+
getElements() - Method in class musichub.business.PlayList
+
 
+
getGenre() - Method in enum class musichub.business.Genre
+
 
+
getGenre() - Method in class musichub.business.Song
+
 
+
getLanguage() - Method in class musichub.business.AudioBook
+
 
+
getLanguage() - Method in enum class musichub.business.Language
+
 
+
getSongs() - Method in class musichub.business.Album
+
 
+
getSongsRandomly() - Method in class musichub.business.Album
+
 
+
getTitle() - Method in class musichub.business.Album
+
 
+
getTitle() - Method in class musichub.business.AudioElement
+
 
+
getTitle() - Method in class musichub.business.PlayList
+
 
+
getUUID() - Method in class musichub.business.AudioElement
+
 
+
+

H

+
+
HIPHOP - Enum constant in enum class musichub.business.Genre
+
 
+
+

I

+
+
ITALIAN - Enum constant in enum class musichub.business.Language
+
 
+
+

J

+
+
JAZZ - Enum constant in enum class musichub.business.Genre
+
 
+
+

L

+
+
Language - Enum Class in musichub.business
+
 
+
lengthInSeconds - Variable in class musichub.business.AudioElement
+
 
+
+

M

+
+
main(String[]) - Static method in class musichub.main.Main
+
 
+
Main - Class in musichub.main
+
 
+
Main() - Constructor for class musichub.main.Main
+
 
+
MusicHub - Class in musichub.business
+
 
+
MusicHub() - Constructor for class musichub.business.MusicHub
+
 
+
musichub.business - package musichub.business
+
 
+
musichub.main - package musichub.main
+
 
+
musichub.util - package musichub.util
+
 
+
+

N

+
+
NoAlbumFoundException - Exception in musichub.business
+
 
+
NoAlbumFoundException(String) - Constructor for exception musichub.business.NoAlbumFoundException
+
 
+
NoElementFoundException - Exception in musichub.business
+
 
+
NoElementFoundException(String) - Constructor for exception musichub.business.NoElementFoundException
+
 
+
NoPlayListFoundException - Exception in musichub.business
+
 
+
NoPlayListFoundException(String) - Constructor for exception musichub.business.NoPlayListFoundException
+
 
+
NOVEL - Enum constant in enum class musichub.business.Category
+
 
+
+

P

+
+
parseXMLFile(String) - Method in class musichub.util.XMLHandler
+
 
+
PlayList - Class in musichub.business
+
 
+
PlayList(String) - Constructor for class musichub.business.PlayList
+
 
+
PlayList(String, String, ArrayList<UUID>) - Constructor for class musichub.business.PlayList
+
 
+
PlayList(Element) - Constructor for class musichub.business.PlayList
+
 
+
playlists() - Method in class musichub.business.MusicHub
+
 
+
PLAYLISTS_FILE_PATH - Static variable in class musichub.business.MusicHub
+
 
+
POP - Enum constant in enum class musichub.business.Genre
+
 
+
+

R

+
+
RAP - Enum constant in enum class musichub.business.Genre
+
 
+
ROCK - Enum constant in enum class musichub.business.Genre
+
 
+
+

S

+
+
saveAlbums() - Method in class musichub.business.MusicHub
+
 
+
saveElements() - Method in class musichub.business.MusicHub
+
 
+
savePlayLists() - Method in class musichub.business.MusicHub
+
 
+
setCategory(String) - Method in class musichub.business.AudioBook
+
 
+
setGenre(String) - Method in class musichub.business.Song
+
 
+
setLanguage(String) - Method in class musichub.business.AudioBook
+
 
+
Song - Class in musichub.business
+
 
+
Song(String, String, int, String, String) - Constructor for class musichub.business.Song
+
 
+
Song(String, String, int, String, String, String) - Constructor for class musichub.business.Song
+
 
+
Song(Element) - Constructor for class musichub.business.Song
+
 
+
SPANISH - Enum constant in enum class musichub.business.Language
+
 
+
SPEECH - Enum constant in enum class musichub.business.Category
+
 
+
+

T

+
+
THEATER - Enum constant in enum class musichub.business.Category
+
 
+
title - Variable in class musichub.business.AudioElement
+
 
+
toString() - Method in class musichub.business.AudioBook
+
 
+
toString() - Method in class musichub.business.AudioElement
+
 
+
toString() - Method in class musichub.business.Song
+
 
+
+

U

+
+
uuid - Variable in class musichub.business.AudioElement
+
 
+
+

V

+
+
valueOf(String) - Static method in enum class musichub.business.Category
+
+
Returns the enum constant of this class with the specified name.
+
+
valueOf(String) - Static method in enum class musichub.business.Genre
+
+
Returns the enum constant of this class with the specified name.
+
+
valueOf(String) - Static method in enum class musichub.business.Language
+
+
Returns the enum constant of this class with the specified name.
+
+
values() - Static method in enum class musichub.business.Category
+
+
Returns an array containing the constants of this enum class, in +the order they are declared.
+
+
values() - Static method in enum class musichub.business.Genre
+
+
Returns an array containing the constants of this enum class, in +the order they are declared.
+
+
values() - Static method in enum class musichub.business.Language
+
+
Returns an array containing the constants of this enum class, in +the order they are declared.
+
+
+

X

+
+
XMLHandler - Class in musichub.util
+
 
+
XMLHandler() - Constructor for class musichub.util.XMLHandler
+
 
+
+

Y

+
+
YOUTH - Enum constant in enum class musichub.business.Category
+
 
+
+A C D E F G H I J L M N P R S T U V X Y 
All Classes|All Packages|Serialized Form
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/index.html b/target/site/apidocs/index.html new file mode 100644 index 0000000..62084d5 --- /dev/null +++ b/target/site/apidocs/index.html @@ -0,0 +1,78 @@ + + + + + +Overview (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

spoteezer 0.1.0 API

+
+
+
Packages
+
+
Package
+
Description
+ +
 
+ +
 
+ +
 
+
+
+
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/jquery-ui.overrides.css b/target/site/apidocs/jquery-ui.overrides.css new file mode 100644 index 0000000..f89acb6 --- /dev/null +++ b/target/site/apidocs/jquery-ui.overrides.css @@ -0,0 +1,34 @@ +/* + * Copyright (c) 2020, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +.ui-state-active, +.ui-widget-content .ui-state-active, +.ui-widget-header .ui-state-active, +a.ui-button:active, +.ui-button:active, +.ui-button.ui-state-active:hover { + /* Overrides the color of selection used in jQuery UI */ + background: #F8981D; +} diff --git a/target/site/apidocs/member-search-index.js b/target/site/apidocs/member-search-index.js new file mode 100644 index 0000000..d356ad0 --- /dev/null +++ b/target/site/apidocs/member-search-index.js @@ -0,0 +1 @@ +memberSearchIndex = [{"p":"musichub.business","c":"MusicHub","l":"addAlbum(Album)","u":"addAlbum(musichub.business.Album)"},{"p":"musichub.business","c":"MusicHub","l":"addElement(AudioElement)","u":"addElement(musichub.business.AudioElement)"},{"p":"musichub.business","c":"PlayList","l":"addElement(UUID)","u":"addElement(java.util.UUID)"},{"p":"musichub.business","c":"MusicHub","l":"addElementToAlbum(String, String)","u":"addElementToAlbum(java.lang.String,java.lang.String)"},{"p":"musichub.business","c":"MusicHub","l":"addElementToPlayList(String, String)","u":"addElementToPlayList(java.lang.String,java.lang.String)"},{"p":"musichub.business","c":"MusicHub","l":"addPlaylist(PlayList)","u":"addPlaylist(musichub.business.PlayList)"},{"p":"musichub.business","c":"Album","l":"addSong(UUID)","u":"addSong(java.util.UUID)"},{"p":"musichub.business","c":"Album","l":"Album(Element)","u":"%3Cinit%3E(org.w3c.dom.Element)"},{"p":"musichub.business","c":"Album","l":"Album(String, String, int, String)","u":"%3Cinit%3E(java.lang.String,java.lang.String,int,java.lang.String)"},{"p":"musichub.business","c":"Album","l":"Album(String, String, int, String, String, ArrayList)","u":"%3Cinit%3E(java.lang.String,java.lang.String,int,java.lang.String,java.lang.String,java.util.ArrayList)"},{"p":"musichub.business","c":"MusicHub","l":"ALBUMS_FILE_PATH"},{"p":"musichub.business","c":"MusicHub","l":"albums()"},{"p":"musichub.business","c":"AudioElement","l":"artist"},{"p":"musichub.business","c":"AudioBook","l":"AudioBook(Element)","u":"%3Cinit%3E(org.w3c.dom.Element)"},{"p":"musichub.business","c":"AudioBook","l":"AudioBook(String, String, int, String, String, String)","u":"%3Cinit%3E(java.lang.String,java.lang.String,int,java.lang.String,java.lang.String,java.lang.String)"},{"p":"musichub.business","c":"AudioBook","l":"AudioBook(String, String, int, String, String, String, String)","u":"%3Cinit%3E(java.lang.String,java.lang.String,int,java.lang.String,java.lang.String,java.lang.String,java.lang.String)"},{"p":"musichub.business","c":"AudioElement","l":"AudioElement(Element)","u":"%3Cinit%3E(org.w3c.dom.Element)"},{"p":"musichub.business","c":"AudioElement","l":"AudioElement(String, String, int, String)","u":"%3Cinit%3E(java.lang.String,java.lang.String,int,java.lang.String)"},{"p":"musichub.business","c":"AudioElement","l":"AudioElement(String, String, int, String, String)","u":"%3Cinit%3E(java.lang.String,java.lang.String,int,java.lang.String,java.lang.String)"},{"p":"musichub.business","c":"Genre","l":"CLASSIC"},{"p":"musichub.business","c":"AudioElement","l":"content"},{"p":"musichub.util","c":"XMLHandler","l":"createXMLDocument()"},{"p":"musichub.business","c":"Album","l":"createXMLElement(Document, Element)","u":"createXMLElement(org.w3c.dom.Document,org.w3c.dom.Element)"},{"p":"musichub.business","c":"AudioBook","l":"createXMLElement(Document, Element)","u":"createXMLElement(org.w3c.dom.Document,org.w3c.dom.Element)"},{"p":"musichub.business","c":"AudioElement","l":"createXMLElement(Document, Element)","u":"createXMLElement(org.w3c.dom.Document,org.w3c.dom.Element)"},{"p":"musichub.business","c":"PlayList","l":"createXMLElement(Document, Element)","u":"createXMLElement(org.w3c.dom.Document,org.w3c.dom.Element)"},{"p":"musichub.business","c":"Song","l":"createXMLElement(Document, Element)","u":"createXMLElement(org.w3c.dom.Document,org.w3c.dom.Element)"},{"p":"musichub.util","c":"XMLHandler","l":"createXMLFile(Document, String)","u":"createXMLFile(org.w3c.dom.Document,java.lang.String)"},{"p":"musichub.business","c":"MusicHub","l":"deletePlayList(String)","u":"deletePlayList(java.lang.String)"},{"p":"musichub.business","c":"MusicHub","l":"DIR"},{"p":"musichub.business","c":"Category","l":"DOCUMENTARY"},{"p":"musichub.business","c":"MusicHub","l":"ELEMENTS_FILE_PATH"},{"p":"musichub.business","c":"MusicHub","l":"elements()"},{"p":"musichub.business","c":"Language","l":"ENGLISH"},{"p":"musichub.business","c":"Language","l":"FRENCH"},{"p":"musichub.business","c":"Language","l":"GERMAN"},{"p":"musichub.business","c":"MusicHub","l":"getAlbumSongs(String)","u":"getAlbumSongs(java.lang.String)"},{"p":"musichub.business","c":"MusicHub","l":"getAlbumSongsSortedByGenre(String)","u":"getAlbumSongsSortedByGenre(java.lang.String)"},{"p":"musichub.business","c":"MusicHub","l":"getAlbumsTitlesSortedByDate()"},{"p":"musichub.business","c":"AudioElement","l":"getArtist()"},{"p":"musichub.business","c":"MusicHub","l":"getAudiobooksTitlesSortedByAuthor()"},{"p":"musichub.business","c":"AudioBook","l":"getCategory()"},{"p":"musichub.business","c":"Category","l":"getCategory()"},{"p":"musichub.business","c":"Album","l":"getDate()"},{"p":"musichub.business","c":"PlayList","l":"getElements()"},{"p":"musichub.business","c":"Genre","l":"getGenre()"},{"p":"musichub.business","c":"Song","l":"getGenre()"},{"p":"musichub.business","c":"AudioBook","l":"getLanguage()"},{"p":"musichub.business","c":"Language","l":"getLanguage()"},{"p":"musichub.business","c":"Album","l":"getSongs()"},{"p":"musichub.business","c":"Album","l":"getSongsRandomly()"},{"p":"musichub.business","c":"Album","l":"getTitle()"},{"p":"musichub.business","c":"AudioElement","l":"getTitle()"},{"p":"musichub.business","c":"PlayList","l":"getTitle()"},{"p":"musichub.business","c":"AudioElement","l":"getUUID()"},{"p":"musichub.business","c":"Genre","l":"HIPHOP"},{"p":"musichub.business","c":"Language","l":"ITALIAN"},{"p":"musichub.business","c":"Genre","l":"JAZZ"},{"p":"musichub.business","c":"AudioElement","l":"lengthInSeconds"},{"p":"musichub.main","c":"Main","l":"Main()","u":"%3Cinit%3E()"},{"p":"musichub.main","c":"Main","l":"main(String[])","u":"main(java.lang.String[])"},{"p":"musichub.business","c":"MusicHub","l":"MusicHub()","u":"%3Cinit%3E()"},{"p":"musichub.business","c":"NoAlbumFoundException","l":"NoAlbumFoundException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"musichub.business","c":"NoElementFoundException","l":"NoElementFoundException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"musichub.business","c":"NoPlayListFoundException","l":"NoPlayListFoundException(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"musichub.business","c":"Category","l":"NOVEL"},{"p":"musichub.util","c":"XMLHandler","l":"parseXMLFile(String)","u":"parseXMLFile(java.lang.String)"},{"p":"musichub.business","c":"PlayList","l":"PlayList(Element)","u":"%3Cinit%3E(org.w3c.dom.Element)"},{"p":"musichub.business","c":"PlayList","l":"PlayList(String)","u":"%3Cinit%3E(java.lang.String)"},{"p":"musichub.business","c":"PlayList","l":"PlayList(String, String, ArrayList)","u":"%3Cinit%3E(java.lang.String,java.lang.String,java.util.ArrayList)"},{"p":"musichub.business","c":"MusicHub","l":"PLAYLISTS_FILE_PATH"},{"p":"musichub.business","c":"MusicHub","l":"playlists()"},{"p":"musichub.business","c":"Genre","l":"POP"},{"p":"musichub.business","c":"Genre","l":"RAP"},{"p":"musichub.business","c":"Genre","l":"ROCK"},{"p":"musichub.business","c":"MusicHub","l":"saveAlbums()"},{"p":"musichub.business","c":"MusicHub","l":"saveElements()"},{"p":"musichub.business","c":"MusicHub","l":"savePlayLists()"},{"p":"musichub.business","c":"AudioBook","l":"setCategory(String)","u":"setCategory(java.lang.String)"},{"p":"musichub.business","c":"Song","l":"setGenre(String)","u":"setGenre(java.lang.String)"},{"p":"musichub.business","c":"AudioBook","l":"setLanguage(String)","u":"setLanguage(java.lang.String)"},{"p":"musichub.business","c":"Song","l":"Song(Element)","u":"%3Cinit%3E(org.w3c.dom.Element)"},{"p":"musichub.business","c":"Song","l":"Song(String, String, int, String, String)","u":"%3Cinit%3E(java.lang.String,java.lang.String,int,java.lang.String,java.lang.String)"},{"p":"musichub.business","c":"Song","l":"Song(String, String, int, String, String, String)","u":"%3Cinit%3E(java.lang.String,java.lang.String,int,java.lang.String,java.lang.String,java.lang.String)"},{"p":"musichub.business","c":"Language","l":"SPANISH"},{"p":"musichub.business","c":"Category","l":"SPEECH"},{"p":"musichub.business","c":"Category","l":"THEATER"},{"p":"musichub.business","c":"AudioElement","l":"title"},{"p":"musichub.business","c":"AudioBook","l":"toString()"},{"p":"musichub.business","c":"AudioElement","l":"toString()"},{"p":"musichub.business","c":"Song","l":"toString()"},{"p":"musichub.business","c":"AudioElement","l":"uuid"},{"p":"musichub.business","c":"Category","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"musichub.business","c":"Genre","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"musichub.business","c":"Language","l":"valueOf(String)","u":"valueOf(java.lang.String)"},{"p":"musichub.business","c":"Category","l":"values()"},{"p":"musichub.business","c":"Genre","l":"values()"},{"p":"musichub.business","c":"Language","l":"values()"},{"p":"musichub.util","c":"XMLHandler","l":"XMLHandler()","u":"%3Cinit%3E()"},{"p":"musichub.business","c":"Category","l":"YOUTH"}];updateSearchResults(); \ No newline at end of file diff --git a/target/site/apidocs/module-search-index.js b/target/site/apidocs/module-search-index.js new file mode 100644 index 0000000..0d59754 --- /dev/null +++ b/target/site/apidocs/module-search-index.js @@ -0,0 +1 @@ +moduleSearchIndex = [];updateSearchResults(); \ No newline at end of file diff --git a/target/site/apidocs/musichub/business/Album.html b/target/site/apidocs/musichub/business/Album.html new file mode 100644 index 0000000..4c8007c --- /dev/null +++ b/target/site/apidocs/musichub/business/Album.html @@ -0,0 +1,250 @@ + + + + + +Album (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Album

+
+
java.lang.Object +
musichub.business.Album
+
+
+
+
public class Album +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    + +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      addSong

      +
      public void addSong(UUID song)
      +
      +
    • +
    • +
      +

      getSongs

      +
      public List<UUID> getSongs()
      +
      +
    • +
    • +
      +

      getSongsRandomly

      +
      public ArrayList<UUID> getSongsRandomly()
      +
      +
    • +
    • +
      +

      getTitle

      +
      public String getTitle()
      +
      +
    • +
    • +
      +

      getDate

      +
      public Date getDate()
      +
      +
    • +
    • +
      +

      createXMLElement

      +
      public void createXMLElement(Document document, + Element parentElement)
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/AudioBook.html b/target/site/apidocs/musichub/business/AudioBook.html new file mode 100644 index 0000000..cb3aae7 --- /dev/null +++ b/target/site/apidocs/musichub/business/AudioBook.html @@ -0,0 +1,273 @@ + + + + + +AudioBook (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class AudioBook

+
+
java.lang.Object +
musichub.business.AudioElement +
musichub.business.AudioBook
+
+
+
+
+
public class AudioBook +extends AudioElement
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      AudioBook

      +
      public AudioBook(String title, + String artist, + int lengthInSeconds, + String uid, + String content, + String language, + String category)
      +
      +
    • +
    • +
      +

      AudioBook

      +
      public AudioBook(String title, + String artist, + int lengthInSeconds, + String content, + String language, + String category)
      +
      +
    • +
    • +
      +

      AudioBook

      +
      public AudioBook(Element xmlElement)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      getLanguage

      +
      public Language getLanguage()
      +
      +
    • +
    • +
      +

      setLanguage

      +
      public void setLanguage(String language)
      +
      +
    • +
    • +
      +

      getCategory

      +
      public Category getCategory()
      +
      +
    • +
    • +
      +

      setCategory

      +
      public void setCategory(String category)
      +
      +
    • +
    • +
      +

      toString

      +
      public String toString()
      +
      +
      Overrides:
      +
      toString in class AudioElement
      +
      +
      +
    • +
    • +
      +

      createXMLElement

      +
      public void createXMLElement(Document document, + Element parentElement)
      +
      +
      Overrides:
      +
      createXMLElement in class AudioElement
      +
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/AudioElement.html b/target/site/apidocs/musichub/business/AudioElement.html new file mode 100644 index 0000000..3679f49 --- /dev/null +++ b/target/site/apidocs/musichub/business/AudioElement.html @@ -0,0 +1,307 @@ + + + + + +AudioElement (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class AudioElement

+
+
java.lang.Object +
musichub.business.AudioElement
+
+
+
+
Direct Known Subclasses:
+
AudioBook, Song
+
+
+
public abstract class AudioElement +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Field Details

    +
      +
    • +
      +

      title

      +
      protected String title
      +
      +
    • +
    • +
      +

      artist

      +
      protected String artist
      +
      +
    • +
    • +
      +

      lengthInSeconds

      +
      protected int lengthInSeconds
      +
      +
    • +
    • +
      +

      uuid

      +
      protected UUID uuid
      +
      +
    • +
    • +
      +

      content

      +
      protected String content
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      AudioElement

      +
      public AudioElement(String title, + String artist, + int lengthInSeconds, + String id, + String content)
      +
      +
    • +
    • +
      +

      AudioElement

      +
      public AudioElement(String title, + String artist, + int lengthInSeconds, + String content)
      +
      +
    • +
    • +
      +

      AudioElement

      +
      public AudioElement(Element xmlElement)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      getUUID

      +
      public UUID getUUID()
      +
      +
    • +
    • +
      +

      getArtist

      +
      public String getArtist()
      +
      +
    • +
    • +
      +

      getTitle

      +
      public String getTitle()
      +
      +
    • +
    • +
      +

      toString

      +
      public String toString()
      +
      +
      Overrides:
      +
      toString in class Object
      +
      +
      +
    • +
    • +
      +

      createXMLElement

      +
      public void createXMLElement(Document document, + Element parentElement)
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/Category.html b/target/site/apidocs/musichub/business/Category.html new file mode 100644 index 0000000..7a26b6d --- /dev/null +++ b/target/site/apidocs/musichub/business/Category.html @@ -0,0 +1,258 @@ + + + + + +Category (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Enum Class Category

+
+
java.lang.Object +
java.lang.Enum<Category> +
musichub.business.Category
+
+
+
+
+
All Implemented Interfaces:
+
Serializable, Comparable<Category>, Constable
+
+
+
public enum Category +extends Enum<Category>
+
+
+ +
+
+
    + +
  • +
    +

    Enum Constant Details

    +
      +
    • +
      +

      YOUTH

      +
      public static final Category YOUTH
      +
      +
    • +
    • +
      +

      NOVEL

      +
      public static final Category NOVEL
      +
      +
    • +
    • +
      +

      THEATER

      +
      public static final Category THEATER
      +
      +
    • +
    • +
      +

      DOCUMENTARY

      +
      public static final Category DOCUMENTARY
      +
      +
    • +
    • +
      +

      SPEECH

      +
      public static final Category SPEECH
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      values

      +
      public static Category[] values()
      +
      Returns an array containing the constants of this enum class, in +the order they are declared.
      +
      +
      Returns:
      +
      an array containing the constants of this enum class, in the order they are declared
      +
      +
      +
    • +
    • +
      +

      valueOf

      +
      public static Category valueOf(String name)
      +
      Returns the enum constant of this class with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this class. (Extraneous whitespace characters are +not permitted.)
      +
      +
      Parameters:
      +
      name - the name of the enum constant to be returned.
      +
      Returns:
      +
      the enum constant with the specified name
      +
      Throws:
      +
      IllegalArgumentException - if this enum class has no constant with the specified name
      +
      NullPointerException - if the argument is null
      +
      +
      +
    • +
    • +
      +

      getCategory

      +
      public String getCategory()
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/Genre.html b/target/site/apidocs/musichub/business/Genre.html new file mode 100644 index 0000000..eac735c --- /dev/null +++ b/target/site/apidocs/musichub/business/Genre.html @@ -0,0 +1,266 @@ + + + + + +Genre (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Enum Class Genre

+
+
java.lang.Object +
java.lang.Enum<Genre> +
musichub.business.Genre
+
+
+
+
+
All Implemented Interfaces:
+
Serializable, Comparable<Genre>, Constable
+
+
+
public enum Genre +extends Enum<Genre>
+
+
+ +
+
+
    + +
  • +
    +

    Enum Constant Details

    +
      +
    • +
      +

      JAZZ

      +
      public static final Genre JAZZ
      +
      +
    • +
    • +
      +

      CLASSIC

      +
      public static final Genre CLASSIC
      +
      +
    • +
    • +
      +

      HIPHOP

      +
      public static final Genre HIPHOP
      +
      +
    • +
    • +
      +

      ROCK

      +
      public static final Genre ROCK
      +
      +
    • +
    • +
      +

      POP

      +
      public static final Genre POP
      +
      +
    • +
    • +
      +

      RAP

      +
      public static final Genre RAP
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      values

      +
      public static Genre[] values()
      +
      Returns an array containing the constants of this enum class, in +the order they are declared.
      +
      +
      Returns:
      +
      an array containing the constants of this enum class, in the order they are declared
      +
      +
      +
    • +
    • +
      +

      valueOf

      +
      public static Genre valueOf(String name)
      +
      Returns the enum constant of this class with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this class. (Extraneous whitespace characters are +not permitted.)
      +
      +
      Parameters:
      +
      name - the name of the enum constant to be returned.
      +
      Returns:
      +
      the enum constant with the specified name
      +
      Throws:
      +
      IllegalArgumentException - if this enum class has no constant with the specified name
      +
      NullPointerException - if the argument is null
      +
      +
      +
    • +
    • +
      +

      getGenre

      +
      public String getGenre()
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/Language.html b/target/site/apidocs/musichub/business/Language.html new file mode 100644 index 0000000..e220e63 --- /dev/null +++ b/target/site/apidocs/musichub/business/Language.html @@ -0,0 +1,258 @@ + + + + + +Language (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Enum Class Language

+
+
java.lang.Object +
java.lang.Enum<Language> +
musichub.business.Language
+
+
+
+
+
All Implemented Interfaces:
+
Serializable, Comparable<Language>, Constable
+
+
+
public enum Language +extends Enum<Language>
+
+
+ +
+
+
    + +
  • +
    +

    Enum Constant Details

    +
      +
    • +
      +

      FRENCH

      +
      public static final Language FRENCH
      +
      +
    • +
    • +
      +

      ENGLISH

      +
      public static final Language ENGLISH
      +
      +
    • +
    • +
      +

      ITALIAN

      +
      public static final Language ITALIAN
      +
      +
    • +
    • +
      +

      SPANISH

      +
      public static final Language SPANISH
      +
      +
    • +
    • +
      +

      GERMAN

      +
      public static final Language GERMAN
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      values

      +
      public static Language[] values()
      +
      Returns an array containing the constants of this enum class, in +the order they are declared.
      +
      +
      Returns:
      +
      an array containing the constants of this enum class, in the order they are declared
      +
      +
      +
    • +
    • +
      +

      valueOf

      +
      public static Language valueOf(String name)
      +
      Returns the enum constant of this class with the specified name. +The string must match exactly an identifier used to declare an +enum constant in this class. (Extraneous whitespace characters are +not permitted.)
      +
      +
      Parameters:
      +
      name - the name of the enum constant to be returned.
      +
      Returns:
      +
      the enum constant with the specified name
      +
      Throws:
      +
      IllegalArgumentException - if this enum class has no constant with the specified name
      +
      NullPointerException - if the argument is null
      +
      +
      +
    • +
    • +
      +

      getLanguage

      +
      public String getLanguage()
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/MusicHub.html b/target/site/apidocs/musichub/business/MusicHub.html new file mode 100644 index 0000000..87380ec --- /dev/null +++ b/target/site/apidocs/musichub/business/MusicHub.html @@ -0,0 +1,390 @@ + + + + + +MusicHub (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class MusicHub

+
+
java.lang.Object +
musichub.business.MusicHub
+
+
+
+
public class MusicHub +extends Object
+
+
+ +
+
+ +
+ +
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/NoAlbumFoundException.html b/target/site/apidocs/musichub/business/NoAlbumFoundException.html new file mode 100644 index 0000000..f906ae8 --- /dev/null +++ b/target/site/apidocs/musichub/business/NoAlbumFoundException.html @@ -0,0 +1,150 @@ + + + + + +NoAlbumFoundException (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class NoAlbumFoundException

+
+
java.lang.Object +
java.lang.Throwable +
java.lang.Exception +
musichub.business.NoAlbumFoundException
+
+
+
+
+
+
All Implemented Interfaces:
+
Serializable
+
+
+
public class NoAlbumFoundException +extends Exception
+
+
See Also:
+
Serialized Form
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      NoAlbumFoundException

      +
      public NoAlbumFoundException(String msg)
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/NoElementFoundException.html b/target/site/apidocs/musichub/business/NoElementFoundException.html new file mode 100644 index 0000000..a15f7a4 --- /dev/null +++ b/target/site/apidocs/musichub/business/NoElementFoundException.html @@ -0,0 +1,150 @@ + + + + + +NoElementFoundException (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class NoElementFoundException

+
+
java.lang.Object +
java.lang.Throwable +
java.lang.Exception +
musichub.business.NoElementFoundException
+
+
+
+
+
+
All Implemented Interfaces:
+
Serializable
+
+
+
public class NoElementFoundException +extends Exception
+
+
See Also:
+
Serialized Form
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      NoElementFoundException

      +
      public NoElementFoundException(String msg)
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/NoPlayListFoundException.html b/target/site/apidocs/musichub/business/NoPlayListFoundException.html new file mode 100644 index 0000000..65dfbeb --- /dev/null +++ b/target/site/apidocs/musichub/business/NoPlayListFoundException.html @@ -0,0 +1,150 @@ + + + + + +NoPlayListFoundException (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class NoPlayListFoundException

+
+
java.lang.Object +
java.lang.Throwable +
java.lang.Exception +
musichub.business.NoPlayListFoundException
+
+
+
+
+
+
All Implemented Interfaces:
+
Serializable
+
+
+
public class NoPlayListFoundException +extends Exception
+
+
See Also:
+
Serialized Form
+
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      NoPlayListFoundException

      +
      public NoPlayListFoundException(String msg)
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/PlayList.html b/target/site/apidocs/musichub/business/PlayList.html new file mode 100644 index 0000000..5688387 --- /dev/null +++ b/target/site/apidocs/musichub/business/PlayList.html @@ -0,0 +1,215 @@ + + + + + +PlayList (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class PlayList

+
+
java.lang.Object +
musichub.business.PlayList
+
+
+
+
public class PlayList +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      PlayList

      +
      public PlayList(String title, + String id, + ArrayList<UUID> elementUUIDs)
      +
      +
    • +
    • +
      +

      PlayList

      +
      public PlayList(String title)
      +
      +
    • +
    • +
      +

      PlayList

      +
      public PlayList(Element xmlElement)
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      addElement

      +
      public void addElement(UUID element)
      +
      +
    • +
    • +
      +

      getElements

      +
      public ArrayList<UUID> getElements()
      +
      +
    • +
    • +
      +

      getTitle

      +
      public String getTitle()
      +
      +
    • +
    • +
      +

      createXMLElement

      +
      public void createXMLElement(Document document, + Element parentElement)
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/Song.html b/target/site/apidocs/musichub/business/Song.html new file mode 100644 index 0000000..cfbc99a --- /dev/null +++ b/target/site/apidocs/musichub/business/Song.html @@ -0,0 +1,251 @@ + + + + + +Song (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+ +

Class Song

+
+ +
+
+
public class Song +extends AudioElement
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    + +
    +
  • + +
  • +
    +

    Method Details

    + +
    +
  • +
+
+ +
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/class-use/Album.html b/target/site/apidocs/musichub/business/class-use/Album.html new file mode 100644 index 0000000..98538f1 --- /dev/null +++ b/target/site/apidocs/musichub/business/class-use/Album.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class musichub.business.Album (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
musichub.business.Album

+
+
Packages that use Album
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/class-use/AudioBook.html b/target/site/apidocs/musichub/business/class-use/AudioBook.html new file mode 100644 index 0000000..bd1fe37 --- /dev/null +++ b/target/site/apidocs/musichub/business/class-use/AudioBook.html @@ -0,0 +1,65 @@ + + + + + +Uses of Class musichub.business.AudioBook (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
musichub.business.AudioBook

+
+No usage of musichub.business.AudioBook
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/class-use/AudioElement.html b/target/site/apidocs/musichub/business/class-use/AudioElement.html new file mode 100644 index 0000000..805e3cb --- /dev/null +++ b/target/site/apidocs/musichub/business/class-use/AudioElement.html @@ -0,0 +1,114 @@ + + + + + +Uses of Class musichub.business.AudioElement (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
musichub.business.AudioElement

+
+
Packages that use AudioElement
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/class-use/Category.html b/target/site/apidocs/musichub/business/class-use/Category.html new file mode 100644 index 0000000..cb51f60 --- /dev/null +++ b/target/site/apidocs/musichub/business/class-use/Category.html @@ -0,0 +1,101 @@ + + + + + +Uses of Enum Class musichub.business.Category (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Enum Class
musichub.business.Category

+
+
Packages that use Category
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/class-use/Genre.html b/target/site/apidocs/musichub/business/class-use/Genre.html new file mode 100644 index 0000000..224ace7 --- /dev/null +++ b/target/site/apidocs/musichub/business/class-use/Genre.html @@ -0,0 +1,98 @@ + + + + + +Uses of Enum Class musichub.business.Genre (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Enum Class
musichub.business.Genre

+
+
Packages that use Genre
+
+
Package
+
Description
+ +
 
+
+
+
    +
  • +
    +

    Uses of Genre in musichub.business

    +
    Methods in musichub.business that return Genre
    +
    +
    Modifier and Type
    +
    Method
    +
    Description
    +
    static Genre
    +
    Genre.valueOf​(String name)
    +
    +
    Returns the enum constant of this class with the specified name.
    +
    +
    static Genre[]
    +
    Genre.values()
    +
    +
    Returns an array containing the constants of this enum class, in +the order they are declared.
    +
    +
    +
    +
  • +
+
+
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/class-use/Language.html b/target/site/apidocs/musichub/business/class-use/Language.html new file mode 100644 index 0000000..c02b71d --- /dev/null +++ b/target/site/apidocs/musichub/business/class-use/Language.html @@ -0,0 +1,101 @@ + + + + + +Uses of Enum Class musichub.business.Language (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Enum Class
musichub.business.Language

+
+
Packages that use Language
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/class-use/MusicHub.html b/target/site/apidocs/musichub/business/class-use/MusicHub.html new file mode 100644 index 0000000..0c5288d --- /dev/null +++ b/target/site/apidocs/musichub/business/class-use/MusicHub.html @@ -0,0 +1,65 @@ + + + + + +Uses of Class musichub.business.MusicHub (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
musichub.business.MusicHub

+
+No usage of musichub.business.MusicHub
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/class-use/NoAlbumFoundException.html b/target/site/apidocs/musichub/business/class-use/NoAlbumFoundException.html new file mode 100644 index 0000000..69c1a6c --- /dev/null +++ b/target/site/apidocs/musichub/business/class-use/NoAlbumFoundException.html @@ -0,0 +1,97 @@ + + + + + +Uses of Class musichub.business.NoAlbumFoundException (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
musichub.business.NoAlbumFoundException

+
+
Packages that use NoAlbumFoundException
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/class-use/NoElementFoundException.html b/target/site/apidocs/musichub/business/class-use/NoElementFoundException.html new file mode 100644 index 0000000..47178b8 --- /dev/null +++ b/target/site/apidocs/musichub/business/class-use/NoElementFoundException.html @@ -0,0 +1,95 @@ + + + + + +Uses of Class musichub.business.NoElementFoundException (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
musichub.business.NoElementFoundException

+
+
Packages that use NoElementFoundException
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/class-use/NoPlayListFoundException.html b/target/site/apidocs/musichub/business/class-use/NoPlayListFoundException.html new file mode 100644 index 0000000..0a7cd6f --- /dev/null +++ b/target/site/apidocs/musichub/business/class-use/NoPlayListFoundException.html @@ -0,0 +1,94 @@ + + + + + +Uses of Class musichub.business.NoPlayListFoundException (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
musichub.business.NoPlayListFoundException

+
+
Packages that use NoPlayListFoundException
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/class-use/PlayList.html b/target/site/apidocs/musichub/business/class-use/PlayList.html new file mode 100644 index 0000000..39e18c2 --- /dev/null +++ b/target/site/apidocs/musichub/business/class-use/PlayList.html @@ -0,0 +1,99 @@ + + + + + +Uses of Class musichub.business.PlayList (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
musichub.business.PlayList

+
+
Packages that use PlayList
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/class-use/Song.html b/target/site/apidocs/musichub/business/class-use/Song.html new file mode 100644 index 0000000..1303885 --- /dev/null +++ b/target/site/apidocs/musichub/business/class-use/Song.html @@ -0,0 +1,90 @@ + + + + + +Uses of Class musichub.business.Song (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
musichub.business.Song

+
+
Packages that use Song
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/package-summary.html b/target/site/apidocs/musichub/business/package-summary.html new file mode 100644 index 0000000..79ed6a4 --- /dev/null +++ b/target/site/apidocs/musichub/business/package-summary.html @@ -0,0 +1,116 @@ + + + + + +musichub.business (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Package musichub.business

+
+
+
package musichub.business
+
+ +
+
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/package-tree.html b/target/site/apidocs/musichub/business/package-tree.html new file mode 100644 index 0000000..1a6bff9 --- /dev/null +++ b/target/site/apidocs/musichub/business/package-tree.html @@ -0,0 +1,114 @@ + + + + + +musichub.business Class Hierarchy (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package musichub.business

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+
+

Enum Class Hierarchy

+ +
+
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/business/package-use.html b/target/site/apidocs/musichub/business/package-use.html new file mode 100644 index 0000000..a793731 --- /dev/null +++ b/target/site/apidocs/musichub/business/package-use.html @@ -0,0 +1,105 @@ + + + + + +Uses of Package musichub.business (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
musichub.business

+
+
Packages that use musichub.business
+
+
Package
+
Description
+ +
 
+
+
+ +
+
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/main/Main.html b/target/site/apidocs/musichub/main/Main.html new file mode 100644 index 0000000..3156088 --- /dev/null +++ b/target/site/apidocs/musichub/main/Main.html @@ -0,0 +1,166 @@ + + + + + +Main (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package musichub.main
+

Class Main

+
+
java.lang.Object +
musichub.main.Main
+
+
+
+
public class Main +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      Main

      +
      public Main()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      main

      +
      public static void main(String[] args)
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/main/class-use/Main.html b/target/site/apidocs/musichub/main/class-use/Main.html new file mode 100644 index 0000000..2c0e0ad --- /dev/null +++ b/target/site/apidocs/musichub/main/class-use/Main.html @@ -0,0 +1,65 @@ + + + + + +Uses of Class musichub.main.Main (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
musichub.main.Main

+
+No usage of musichub.main.Main
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/main/package-summary.html b/target/site/apidocs/musichub/main/package-summary.html new file mode 100644 index 0000000..316cd6d --- /dev/null +++ b/target/site/apidocs/musichub/main/package-summary.html @@ -0,0 +1,80 @@ + + + + + +musichub.main (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Package musichub.main

+
+
+
package musichub.main
+
+
    +
  • +
    Class Summary
    +
    +
    Class
    +
    Description
    + +
     
    +
    +
  • +
+
+
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/main/package-tree.html b/target/site/apidocs/musichub/main/package-tree.html new file mode 100644 index 0000000..57cd805 --- /dev/null +++ b/target/site/apidocs/musichub/main/package-tree.html @@ -0,0 +1,79 @@ + + + + + +musichub.main Class Hierarchy (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package musichub.main

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/main/package-use.html b/target/site/apidocs/musichub/main/package-use.html new file mode 100644 index 0000000..d98a9cf --- /dev/null +++ b/target/site/apidocs/musichub/main/package-use.html @@ -0,0 +1,65 @@ + + + + + +Uses of Package musichub.main (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
musichub.main

+
+No usage of musichub.main
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/util/XMLHandler.html b/target/site/apidocs/musichub/util/XMLHandler.html new file mode 100644 index 0000000..fae13b3 --- /dev/null +++ b/target/site/apidocs/musichub/util/XMLHandler.html @@ -0,0 +1,186 @@ + + + + + +XMLHandler (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+ +
+
Package musichub.util
+

Class XMLHandler

+
+
java.lang.Object +
musichub.util.XMLHandler
+
+
+
+
public class XMLHandler +extends Object
+
+
+ +
+
+
    + +
  • +
    +

    Constructor Details

    +
      +
    • +
      +

      XMLHandler

      +
      public XMLHandler()
      +
      +
    • +
    +
    +
  • + +
  • +
    +

    Method Details

    +
      +
    • +
      +

      createXMLFile

      +
      public void createXMLFile(Document document, + String filePath)
      +
      +
    • +
    • +
      +

      createXMLDocument

      +
      public Document createXMLDocument()
      +
      +
    • +
    • +
      +

      parseXMLFile

      +
      public NodeList parseXMLFile(String filePath)
      +
      +
    • +
    +
    +
  • +
+
+ +
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/util/class-use/XMLHandler.html b/target/site/apidocs/musichub/util/class-use/XMLHandler.html new file mode 100644 index 0000000..86a8a19 --- /dev/null +++ b/target/site/apidocs/musichub/util/class-use/XMLHandler.html @@ -0,0 +1,65 @@ + + + + + +Uses of Class musichub.util.XMLHandler (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Class
musichub.util.XMLHandler

+
+No usage of musichub.util.XMLHandler
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/util/package-summary.html b/target/site/apidocs/musichub/util/package-summary.html new file mode 100644 index 0000000..ba36654 --- /dev/null +++ b/target/site/apidocs/musichub/util/package-summary.html @@ -0,0 +1,80 @@ + + + + + +musichub.util (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Package musichub.util

+
+
+
package musichub.util
+
+
    +
  • +
    Class Summary
    +
    +
    Class
    +
    Description
    + +
     
    +
    +
  • +
+
+
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/util/package-tree.html b/target/site/apidocs/musichub/util/package-tree.html new file mode 100644 index 0000000..f2ad19b --- /dev/null +++ b/target/site/apidocs/musichub/util/package-tree.html @@ -0,0 +1,79 @@ + + + + + +musichub.util Class Hierarchy (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For Package musichub.util

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/musichub/util/package-use.html b/target/site/apidocs/musichub/util/package-use.html new file mode 100644 index 0000000..7a3d44d --- /dev/null +++ b/target/site/apidocs/musichub/util/package-use.html @@ -0,0 +1,65 @@ + + + + + +Uses of Package musichub.util (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Uses of Package
musichub.util

+
+No usage of musichub.util
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/overview-summary.html b/target/site/apidocs/overview-summary.html new file mode 100644 index 0000000..33c47d8 --- /dev/null +++ b/target/site/apidocs/overview-summary.html @@ -0,0 +1,27 @@ + + + + + +spoteezer 0.1.0 API + + + + + + + + + + + +
+ +

index.html

+
+ + diff --git a/target/site/apidocs/overview-tree.html b/target/site/apidocs/overview-tree.html new file mode 100644 index 0000000..dbb2e21 --- /dev/null +++ b/target/site/apidocs/overview-tree.html @@ -0,0 +1,118 @@ + + + + + +Class Hierarchy (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
+ +
+
+
+

Hierarchy For All Packages

+Package Hierarchies: + +
+
+

Class Hierarchy

+ +
+
+

Enum Class Hierarchy

+ +
+
+
+
+ +
+
+
+ + diff --git a/target/site/apidocs/package-search-index.js b/target/site/apidocs/package-search-index.js new file mode 100644 index 0000000..3098d0e --- /dev/null +++ b/target/site/apidocs/package-search-index.js @@ -0,0 +1 @@ +packageSearchIndex = [{"l":"All Packages","u":"allpackages-index.html"},{"l":"musichub.business"},{"l":"musichub.main"},{"l":"musichub.util"}];updateSearchResults(); \ No newline at end of file diff --git a/target/site/apidocs/resources/glass.png b/target/site/apidocs/resources/glass.png new file mode 100644 index 0000000..a7f591f Binary files /dev/null and b/target/site/apidocs/resources/glass.png differ diff --git a/target/site/apidocs/resources/x.png b/target/site/apidocs/resources/x.png new file mode 100644 index 0000000..30548a7 Binary files /dev/null and b/target/site/apidocs/resources/x.png differ diff --git a/target/site/apidocs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png b/target/site/apidocs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png new file mode 100644 index 0000000..34abd18 Binary files /dev/null and b/target/site/apidocs/script-dir/images/ui-bg_glass_55_fbf9ee_1x400.png differ diff --git a/target/site/apidocs/script-dir/images/ui-bg_glass_65_dadada_1x400.png b/target/site/apidocs/script-dir/images/ui-bg_glass_65_dadada_1x400.png new file mode 100644 index 0000000..f058a93 Binary files /dev/null and b/target/site/apidocs/script-dir/images/ui-bg_glass_65_dadada_1x400.png differ diff --git a/target/site/apidocs/script-dir/images/ui-bg_glass_75_dadada_1x400.png b/target/site/apidocs/script-dir/images/ui-bg_glass_75_dadada_1x400.png new file mode 100644 index 0000000..2ce04c1 Binary files /dev/null and b/target/site/apidocs/script-dir/images/ui-bg_glass_75_dadada_1x400.png differ diff --git a/target/site/apidocs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png b/target/site/apidocs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png new file mode 100644 index 0000000..a90afb8 Binary files /dev/null and b/target/site/apidocs/script-dir/images/ui-bg_glass_75_e6e6e6_1x400.png differ diff --git a/target/site/apidocs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png b/target/site/apidocs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png new file mode 100644 index 0000000..dbe091f Binary files /dev/null and b/target/site/apidocs/script-dir/images/ui-bg_glass_95_fef1ec_1x400.png differ diff --git a/target/site/apidocs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png b/target/site/apidocs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png new file mode 100644 index 0000000..5dc3593 Binary files /dev/null and b/target/site/apidocs/script-dir/images/ui-bg_highlight-soft_75_cccccc_1x100.png differ diff --git a/target/site/apidocs/script-dir/images/ui-icons_222222_256x240.png b/target/site/apidocs/script-dir/images/ui-icons_222222_256x240.png new file mode 100644 index 0000000..e723e17 Binary files /dev/null and b/target/site/apidocs/script-dir/images/ui-icons_222222_256x240.png differ diff --git a/target/site/apidocs/script-dir/images/ui-icons_2e83ff_256x240.png b/target/site/apidocs/script-dir/images/ui-icons_2e83ff_256x240.png new file mode 100644 index 0000000..1f5f497 Binary files /dev/null and b/target/site/apidocs/script-dir/images/ui-icons_2e83ff_256x240.png differ diff --git a/target/site/apidocs/script-dir/images/ui-icons_454545_256x240.png b/target/site/apidocs/script-dir/images/ui-icons_454545_256x240.png new file mode 100644 index 0000000..618f5b0 Binary files /dev/null and b/target/site/apidocs/script-dir/images/ui-icons_454545_256x240.png differ diff --git a/target/site/apidocs/script-dir/images/ui-icons_888888_256x240.png b/target/site/apidocs/script-dir/images/ui-icons_888888_256x240.png new file mode 100644 index 0000000..ee5e33f Binary files /dev/null and b/target/site/apidocs/script-dir/images/ui-icons_888888_256x240.png differ diff --git a/target/site/apidocs/script-dir/images/ui-icons_cd0a0a_256x240.png b/target/site/apidocs/script-dir/images/ui-icons_cd0a0a_256x240.png new file mode 100644 index 0000000..7e8ebc1 Binary files /dev/null and b/target/site/apidocs/script-dir/images/ui-icons_cd0a0a_256x240.png differ diff --git a/target/site/apidocs/script-dir/jquery-3.5.1.min.js b/target/site/apidocs/script-dir/jquery-3.5.1.min.js new file mode 100644 index 0000000..b061403 --- /dev/null +++ b/target/site/apidocs/script-dir/jquery-3.5.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.5.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(C,e){"use strict";var t=[],r=Object.getPrototypeOf,s=t.slice,g=t.flat?function(e){return t.flat.call(e)}:function(e){return t.concat.apply([],e)},u=t.push,i=t.indexOf,n={},o=n.toString,v=n.hasOwnProperty,a=v.toString,l=a.call(Object),y={},m=function(e){return"function"==typeof e&&"number"!=typeof e.nodeType},x=function(e){return null!=e&&e===e.window},E=C.document,c={type:!0,src:!0,nonce:!0,noModule:!0};function b(e,t,n){var r,i,o=(n=n||E).createElement("script");if(o.text=e,t)for(r in c)(i=t[r]||t.getAttribute&&t.getAttribute(r))&&o.setAttribute(r,i);n.head.appendChild(o).parentNode.removeChild(o)}function w(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?n[o.call(e)]||"object":typeof e}var f="3.5.1",S=function(e,t){return new S.fn.init(e,t)};function p(e){var t=!!e&&"length"in e&&e.length,n=w(e);return!m(e)&&!x(e)&&("array"===n||0===t||"number"==typeof t&&0+~]|"+M+")"+M+"*"),U=new RegExp(M+"|>"),X=new RegExp(F),V=new RegExp("^"+I+"$"),G={ID:new RegExp("^#("+I+")"),CLASS:new RegExp("^\\.("+I+")"),TAG:new RegExp("^("+I+"|[*])"),ATTR:new RegExp("^"+W),PSEUDO:new RegExp("^"+F),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+R+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},Y=/HTML$/i,Q=/^(?:input|select|textarea|button)$/i,J=/^h\d$/i,K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,ee=/[+~]/,te=new RegExp("\\\\[\\da-fA-F]{1,6}"+M+"?|\\\\([^\\r\\n\\f])","g"),ne=function(e,t){var n="0x"+e.slice(1)-65536;return t||(n<0?String.fromCharCode(n+65536):String.fromCharCode(n>>10|55296,1023&n|56320))},re=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ie=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},oe=function(){T()},ae=be(function(e){return!0===e.disabled&&"fieldset"===e.nodeName.toLowerCase()},{dir:"parentNode",next:"legend"});try{H.apply(t=O.call(p.childNodes),p.childNodes),t[p.childNodes.length].nodeType}catch(e){H={apply:t.length?function(e,t){L.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function se(t,e,n,r){var i,o,a,s,u,l,c,f=e&&e.ownerDocument,p=e?e.nodeType:9;if(n=n||[],"string"!=typeof t||!t||1!==p&&9!==p&&11!==p)return n;if(!r&&(T(e),e=e||C,E)){if(11!==p&&(u=Z.exec(t)))if(i=u[1]){if(9===p){if(!(a=e.getElementById(i)))return n;if(a.id===i)return n.push(a),n}else if(f&&(a=f.getElementById(i))&&y(e,a)&&a.id===i)return n.push(a),n}else{if(u[2])return H.apply(n,e.getElementsByTagName(t)),n;if((i=u[3])&&d.getElementsByClassName&&e.getElementsByClassName)return H.apply(n,e.getElementsByClassName(i)),n}if(d.qsa&&!N[t+" "]&&(!v||!v.test(t))&&(1!==p||"object"!==e.nodeName.toLowerCase())){if(c=t,f=e,1===p&&(U.test(t)||z.test(t))){(f=ee.test(t)&&ye(e.parentNode)||e)===e&&d.scope||((s=e.getAttribute("id"))?s=s.replace(re,ie):e.setAttribute("id",s=S)),o=(l=h(t)).length;while(o--)l[o]=(s?"#"+s:":scope")+" "+xe(l[o]);c=l.join(",")}try{return H.apply(n,f.querySelectorAll(c)),n}catch(e){N(t,!0)}finally{s===S&&e.removeAttribute("id")}}}return g(t.replace($,"$1"),e,n,r)}function ue(){var r=[];return function e(t,n){return r.push(t+" ")>b.cacheLength&&delete e[r.shift()],e[t+" "]=n}}function le(e){return e[S]=!0,e}function ce(e){var t=C.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function fe(e,t){var n=e.split("|"),r=n.length;while(r--)b.attrHandle[n[r]]=t}function pe(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function de(t){return function(e){return"input"===e.nodeName.toLowerCase()&&e.type===t}}function he(n){return function(e){var t=e.nodeName.toLowerCase();return("input"===t||"button"===t)&&e.type===n}}function ge(t){return function(e){return"form"in e?e.parentNode&&!1===e.disabled?"label"in e?"label"in e.parentNode?e.parentNode.disabled===t:e.disabled===t:e.isDisabled===t||e.isDisabled!==!t&&ae(e)===t:e.disabled===t:"label"in e&&e.disabled===t}}function ve(a){return le(function(o){return o=+o,le(function(e,t){var n,r=a([],e.length,o),i=r.length;while(i--)e[n=r[i]]&&(e[n]=!(t[n]=e[n]))})})}function ye(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}for(e in d=se.support={},i=se.isXML=function(e){var t=e.namespaceURI,n=(e.ownerDocument||e).documentElement;return!Y.test(t||n&&n.nodeName||"HTML")},T=se.setDocument=function(e){var t,n,r=e?e.ownerDocument||e:p;return r!=C&&9===r.nodeType&&r.documentElement&&(a=(C=r).documentElement,E=!i(C),p!=C&&(n=C.defaultView)&&n.top!==n&&(n.addEventListener?n.addEventListener("unload",oe,!1):n.attachEvent&&n.attachEvent("onunload",oe)),d.scope=ce(function(e){return a.appendChild(e).appendChild(C.createElement("div")),"undefined"!=typeof e.querySelectorAll&&!e.querySelectorAll(":scope fieldset div").length}),d.attributes=ce(function(e){return e.className="i",!e.getAttribute("className")}),d.getElementsByTagName=ce(function(e){return e.appendChild(C.createComment("")),!e.getElementsByTagName("*").length}),d.getElementsByClassName=K.test(C.getElementsByClassName),d.getById=ce(function(e){return a.appendChild(e).id=S,!C.getElementsByName||!C.getElementsByName(S).length}),d.getById?(b.filter.ID=function(e){var t=e.replace(te,ne);return function(e){return e.getAttribute("id")===t}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n=t.getElementById(e);return n?[n]:[]}}):(b.filter.ID=function(e){var n=e.replace(te,ne);return function(e){var t="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return t&&t.value===n}},b.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&E){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),b.find.TAG=d.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):d.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},b.find.CLASS=d.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&E)return t.getElementsByClassName(e)},s=[],v=[],(d.qsa=K.test(C.querySelectorAll))&&(ce(function(e){var t;a.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&v.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||v.push("\\["+M+"*(?:value|"+R+")"),e.querySelectorAll("[id~="+S+"-]").length||v.push("~="),(t=C.createElement("input")).setAttribute("name",""),e.appendChild(t),e.querySelectorAll("[name='']").length||v.push("\\["+M+"*name"+M+"*="+M+"*(?:''|\"\")"),e.querySelectorAll(":checked").length||v.push(":checked"),e.querySelectorAll("a#"+S+"+*").length||v.push(".#.+[+~]"),e.querySelectorAll("\\\f"),v.push("[\\r\\n\\f]")}),ce(function(e){e.innerHTML="";var t=C.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&v.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&v.push(":enabled",":disabled"),a.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&v.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),v.push(",.*:")})),(d.matchesSelector=K.test(c=a.matches||a.webkitMatchesSelector||a.mozMatchesSelector||a.oMatchesSelector||a.msMatchesSelector))&&ce(function(e){d.disconnectedMatch=c.call(e,"*"),c.call(e,"[s!='']:x"),s.push("!=",F)}),v=v.length&&new RegExp(v.join("|")),s=s.length&&new RegExp(s.join("|")),t=K.test(a.compareDocumentPosition),y=t||K.test(a.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return l=!0,0;var n=!e.compareDocumentPosition-!t.compareDocumentPosition;return n||(1&(n=(e.ownerDocument||e)==(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!d.sortDetached&&t.compareDocumentPosition(e)===n?e==C||e.ownerDocument==p&&y(p,e)?-1:t==C||t.ownerDocument==p&&y(p,t)?1:u?P(u,e)-P(u,t):0:4&n?-1:1)}:function(e,t){if(e===t)return l=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e==C?-1:t==C?1:i?-1:o?1:u?P(u,e)-P(u,t):0;if(i===o)return pe(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?pe(a[r],s[r]):a[r]==p?-1:s[r]==p?1:0}),C},se.matches=function(e,t){return se(e,null,null,t)},se.matchesSelector=function(e,t){if(T(e),d.matchesSelector&&E&&!N[t+" "]&&(!s||!s.test(t))&&(!v||!v.test(t)))try{var n=c.call(e,t);if(n||d.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(e){N(t,!0)}return 0":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(te,ne),e[3]=(e[3]||e[4]||e[5]||"").replace(te,ne),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||se.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&se.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return G.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=h(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(te,ne).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=m[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&m(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(n,r,i){return function(e){var t=se.attr(e,n);return null==t?"!="===r:!r||(t+="","="===r?t===i:"!="===r?t!==i:"^="===r?i&&0===t.indexOf(i):"*="===r?i&&-1:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function D(e,n,r){return m(n)?S.grep(e,function(e,t){return!!n.call(e,t,e)!==r}):n.nodeType?S.grep(e,function(e){return e===n!==r}):"string"!=typeof n?S.grep(e,function(e){return-1)[^>]*|#([\w-]+))$/;(S.fn.init=function(e,t,n){var r,i;if(!e)return this;if(n=n||j,"string"==typeof e){if(!(r="<"===e[0]&&">"===e[e.length-1]&&3<=e.length?[null,e,null]:q.exec(e))||!r[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(r[1]){if(t=t instanceof S?t[0]:t,S.merge(this,S.parseHTML(r[1],t&&t.nodeType?t.ownerDocument||t:E,!0)),N.test(r[1])&&S.isPlainObject(t))for(r in t)m(this[r])?this[r](t[r]):this.attr(r,t[r]);return this}return(i=E.getElementById(r[2]))&&(this[0]=i,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):m(e)?void 0!==n.ready?n.ready(e):e(S):S.makeArray(e,this)}).prototype=S.fn,j=S(E);var L=/^(?:parents|prev(?:Until|All))/,H={children:!0,contents:!0,next:!0,prev:!0};function O(e,t){while((e=e[t])&&1!==e.nodeType);return e}S.fn.extend({has:function(e){var t=S(e,this),n=t.length;return this.filter(function(){for(var e=0;e\x20\t\r\n\f]*)/i,he=/^$|^module$|\/(?:java|ecma)script/i;ce=E.createDocumentFragment().appendChild(E.createElement("div")),(fe=E.createElement("input")).setAttribute("type","radio"),fe.setAttribute("checked","checked"),fe.setAttribute("name","t"),ce.appendChild(fe),y.checkClone=ce.cloneNode(!0).cloneNode(!0).lastChild.checked,ce.innerHTML="",y.noCloneChecked=!!ce.cloneNode(!0).lastChild.defaultValue,ce.innerHTML="",y.option=!!ce.lastChild;var ge={thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};function ve(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&A(e,t)?S.merge([e],n):n}function ye(e,t){for(var n=0,r=e.length;n",""]);var me=/<|&#?\w+;/;function xe(e,t,n,r,i){for(var o,a,s,u,l,c,f=t.createDocumentFragment(),p=[],d=0,h=e.length;d\s*$/g;function qe(e,t){return A(e,"table")&&A(11!==t.nodeType?t:t.firstChild,"tr")&&S(e).children("tbody")[0]||e}function Le(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function He(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Oe(e,t){var n,r,i,o,a,s;if(1===t.nodeType){if(Y.hasData(e)&&(s=Y.get(e).events))for(i in Y.remove(t,"handle events"),s)for(n=0,r=s[i].length;n").attr(n.scriptAttrs||{}).prop({charset:n.scriptCharset,src:n.url}).on("load error",i=function(e){r.remove(),i=null,e&&t("error"===e.type?404:200,e.type)}),E.head.appendChild(r[0])},abort:function(){i&&i()}}});var Ut,Xt=[],Vt=/(=)\?(?=&|$)|\?\?/;S.ajaxSetup({jsonp:"callback",jsonpCallback:function(){var e=Xt.pop()||S.expando+"_"+Ct.guid++;return this[e]=!0,e}}),S.ajaxPrefilter("json jsonp",function(e,t,n){var r,i,o,a=!1!==e.jsonp&&(Vt.test(e.url)?"url":"string"==typeof e.data&&0===(e.contentType||"").indexOf("application/x-www-form-urlencoded")&&Vt.test(e.data)&&"data");if(a||"jsonp"===e.dataTypes[0])return r=e.jsonpCallback=m(e.jsonpCallback)?e.jsonpCallback():e.jsonpCallback,a?e[a]=e[a].replace(Vt,"$1"+r):!1!==e.jsonp&&(e.url+=(Et.test(e.url)?"&":"?")+e.jsonp+"="+r),e.converters["script json"]=function(){return o||S.error(r+" was not called"),o[0]},e.dataTypes[0]="json",i=C[r],C[r]=function(){o=arguments},n.always(function(){void 0===i?S(C).removeProp(r):C[r]=i,e[r]&&(e.jsonpCallback=t.jsonpCallback,Xt.push(r)),o&&m(i)&&i(o[0]),o=i=void 0}),"script"}),y.createHTMLDocument=((Ut=E.implementation.createHTMLDocument("").body).innerHTML="
",2===Ut.childNodes.length),S.parseHTML=function(e,t,n){return"string"!=typeof e?[]:("boolean"==typeof t&&(n=t,t=!1),t||(y.createHTMLDocument?((r=(t=E.implementation.createHTMLDocument("")).createElement("base")).href=E.location.href,t.head.appendChild(r)):t=E),o=!n&&[],(i=N.exec(e))?[t.createElement(i[1])]:(i=xe([e],t,o),o&&o.length&&S(o).remove(),S.merge([],i.childNodes)));var r,i,o},S.fn.load=function(e,t,n){var r,i,o,a=this,s=e.indexOf(" ");return-1").append(S.parseHTML(e)).find(r):e)}).always(n&&function(e,t){a.each(function(){n.apply(this,o||[e.responseText,t,e])})}),this},S.expr.pseudos.animated=function(t){return S.grep(S.timers,function(e){return t===e.elem}).length},S.offset={setOffset:function(e,t,n){var r,i,o,a,s,u,l=S.css(e,"position"),c=S(e),f={};"static"===l&&(e.style.position="relative"),s=c.offset(),o=S.css(e,"top"),u=S.css(e,"left"),("absolute"===l||"fixed"===l)&&-1<(o+u).indexOf("auto")?(a=(r=c.position()).top,i=r.left):(a=parseFloat(o)||0,i=parseFloat(u)||0),m(t)&&(t=t.call(e,n,S.extend({},s))),null!=t.top&&(f.top=t.top-s.top+a),null!=t.left&&(f.left=t.left-s.left+i),"using"in t?t.using.call(e,f):("number"==typeof f.top&&(f.top+="px"),"number"==typeof f.left&&(f.left+="px"),c.css(f))}},S.fn.extend({offset:function(t){if(arguments.length)return void 0===t?this:this.each(function(e){S.offset.setOffset(this,t,e)});var e,n,r=this[0];return r?r.getClientRects().length?(e=r.getBoundingClientRect(),n=r.ownerDocument.defaultView,{top:e.top+n.pageYOffset,left:e.left+n.pageXOffset}):{top:0,left:0}:void 0},position:function(){if(this[0]){var e,t,n,r=this[0],i={top:0,left:0};if("fixed"===S.css(r,"position"))t=r.getBoundingClientRect();else{t=this.offset(),n=r.ownerDocument,e=r.offsetParent||n.documentElement;while(e&&(e===n.body||e===n.documentElement)&&"static"===S.css(e,"position"))e=e.parentNode;e&&e!==r&&1===e.nodeType&&((i=S(e).offset()).top+=S.css(e,"borderTopWidth",!0),i.left+=S.css(e,"borderLeftWidth",!0))}return{top:t.top-i.top-S.css(r,"marginTop",!0),left:t.left-i.left-S.css(r,"marginLeft",!0)}}},offsetParent:function(){return this.map(function(){var e=this.offsetParent;while(e&&"static"===S.css(e,"position"))e=e.offsetParent;return e||re})}}),S.each({scrollLeft:"pageXOffset",scrollTop:"pageYOffset"},function(t,i){var o="pageYOffset"===i;S.fn[t]=function(e){return $(this,function(e,t,n){var r;if(x(e)?r=e:9===e.nodeType&&(r=e.defaultView),void 0===n)return r?r[i]:e[t];r?r.scrollTo(o?r.pageXOffset:n,o?n:r.pageYOffset):e[t]=n},t,e,arguments.length)}}),S.each(["top","left"],function(e,n){S.cssHooks[n]=$e(y.pixelPosition,function(e,t){if(t)return t=Be(e,n),Me.test(t)?S(e).position()[n]+"px":t})}),S.each({Height:"height",Width:"width"},function(a,s){S.each({padding:"inner"+a,content:s,"":"outer"+a},function(r,o){S.fn[o]=function(e,t){var n=arguments.length&&(r||"boolean"!=typeof e),i=r||(!0===e||!0===t?"margin":"border");return $(this,function(e,t,n){var r;return x(e)?0===o.indexOf("outer")?e["inner"+a]:e.document.documentElement["client"+a]:9===e.nodeType?(r=e.documentElement,Math.max(e.body["scroll"+a],r["scroll"+a],e.body["offset"+a],r["offset"+a],r["client"+a])):void 0===n?S.css(e,t,i):S.style(e,t,n,i)},s,n?e:void 0,n)}})}),S.each(["ajaxStart","ajaxStop","ajaxComplete","ajaxError","ajaxSuccess","ajaxSend"],function(e,t){S.fn[t]=function(e){return this.on(t,e)}}),S.fn.extend({bind:function(e,t,n){return this.on(e,null,t,n)},unbind:function(e,t){return this.off(e,null,t)},delegate:function(e,t,n,r){return this.on(t,e,n,r)},undelegate:function(e,t,n){return 1===arguments.length?this.off(e,"**"):this.off(t,e||"**",n)},hover:function(e,t){return this.mouseenter(e).mouseleave(t||e)}}),S.each("blur focus focusin focusout resize scroll click dblclick mousedown mouseup mousemove mouseover mouseout mouseenter mouseleave change select submit keydown keypress keyup contextmenu".split(" "),function(e,n){S.fn[n]=function(e,t){return 0a;a++)for(s in o[a])n=o[a][s],o[a].hasOwnProperty(s)&&void 0!==n&&(e[s]=t.isPlainObject(n)?t.isPlainObject(e[s])?t.widget.extend({},e[s],n):t.widget.extend({},n):n);return e},t.widget.bridge=function(e,s){var n=s.prototype.widgetFullName||e;t.fn[e]=function(o){var a="string"==typeof o,r=i.call(arguments,1),l=this;return a?this.length||"instance"!==o?this.each(function(){var i,s=t.data(this,n);return"instance"===o?(l=s,!1):s?t.isFunction(s[o])&&"_"!==o.charAt(0)?(i=s[o].apply(s,r),i!==s&&void 0!==i?(l=i&&i.jquery?l.pushStack(i.get()):i,!1):void 0):t.error("no such method '"+o+"' for "+e+" widget instance"):t.error("cannot call methods on "+e+" prior to initialization; "+"attempted to call method '"+o+"'")}):l=void 0:(r.length&&(o=t.widget.extend.apply(null,[o].concat(r))),this.each(function(){var e=t.data(this,n);e?(e.option(o||{}),e._init&&e._init()):t.data(this,n,new s(o,this))})),l}},t.Widget=function(){},t.Widget._childConstructors=[],t.Widget.prototype={widgetName:"widget",widgetEventPrefix:"",defaultElement:"
",options:{classes:{},disabled:!1,create:null},_createWidget:function(i,s){s=t(s||this.defaultElement||this)[0],this.element=t(s),this.uuid=e++,this.eventNamespace="."+this.widgetName+this.uuid,this.bindings=t(),this.hoverable=t(),this.focusable=t(),this.classesElementLookup={},s!==this&&(t.data(s,this.widgetFullName,this),this._on(!0,this.element,{remove:function(t){t.target===s&&this.destroy()}}),this.document=t(s.style?s.ownerDocument:s.document||s),this.window=t(this.document[0].defaultView||this.document[0].parentWindow)),this.options=t.widget.extend({},this.options,this._getCreateOptions(),i),this._create(),this.options.disabled&&this._setOptionDisabled(this.options.disabled),this._trigger("create",null,this._getCreateEventData()),this._init()},_getCreateOptions:function(){return{}},_getCreateEventData:t.noop,_create:t.noop,_init:t.noop,destroy:function(){var e=this;this._destroy(),t.each(this.classesElementLookup,function(t,i){e._removeClass(i,t)}),this.element.off(this.eventNamespace).removeData(this.widgetFullName),this.widget().off(this.eventNamespace).removeAttr("aria-disabled"),this.bindings.off(this.eventNamespace)},_destroy:t.noop,widget:function(){return this.element},option:function(e,i){var s,n,o,a=e;if(0===arguments.length)return t.widget.extend({},this.options);if("string"==typeof e)if(a={},s=e.split("."),e=s.shift(),s.length){for(n=a[e]=t.widget.extend({},this.options[e]),o=0;s.length-1>o;o++)n[s[o]]=n[s[o]]||{},n=n[s[o]];if(e=s.pop(),1===arguments.length)return void 0===n[e]?null:n[e];n[e]=i}else{if(1===arguments.length)return void 0===this.options[e]?null:this.options[e];a[e]=i}return this._setOptions(a),this},_setOptions:function(t){var e;for(e in t)this._setOption(e,t[e]);return this},_setOption:function(t,e){return"classes"===t&&this._setOptionClasses(e),this.options[t]=e,"disabled"===t&&this._setOptionDisabled(e),this},_setOptionClasses:function(e){var i,s,n;for(i in e)n=this.classesElementLookup[i],e[i]!==this.options.classes[i]&&n&&n.length&&(s=t(n.get()),this._removeClass(n,i),s.addClass(this._classes({element:s,keys:i,classes:e,add:!0})))},_setOptionDisabled:function(t){this._toggleClass(this.widget(),this.widgetFullName+"-disabled",null,!!t),t&&(this._removeClass(this.hoverable,null,"ui-state-hover"),this._removeClass(this.focusable,null,"ui-state-focus"))},enable:function(){return this._setOptions({disabled:!1})},disable:function(){return this._setOptions({disabled:!0})},_classes:function(e){function i(i,o){var a,r;for(r=0;i.length>r;r++)a=n.classesElementLookup[i[r]]||t(),a=e.add?t(t.unique(a.get().concat(e.element.get()))):t(a.not(e.element).get()),n.classesElementLookup[i[r]]=a,s.push(i[r]),o&&e.classes[i[r]]&&s.push(e.classes[i[r]])}var s=[],n=this;return e=t.extend({element:this.element,classes:this.options.classes||{}},e),this._on(e.element,{remove:"_untrackClassesElement"}),e.keys&&i(e.keys.match(/\S+/g)||[],!0),e.extra&&i(e.extra.match(/\S+/g)||[]),s.join(" ")},_untrackClassesElement:function(e){var i=this;t.each(i.classesElementLookup,function(s,n){-1!==t.inArray(e.target,n)&&(i.classesElementLookup[s]=t(n.not(e.target).get()))})},_removeClass:function(t,e,i){return this._toggleClass(t,e,i,!1)},_addClass:function(t,e,i){return this._toggleClass(t,e,i,!0)},_toggleClass:function(t,e,i,s){s="boolean"==typeof s?s:i;var n="string"==typeof t||null===t,o={extra:n?e:i,keys:n?t:e,element:n?this.element:t,add:s};return o.element.toggleClass(this._classes(o),s),this},_on:function(e,i,s){var n,o=this;"boolean"!=typeof e&&(s=i,i=e,e=!1),s?(i=n=t(i),this.bindings=this.bindings.add(i)):(s=i,i=this.element,n=this.widget()),t.each(s,function(s,a){function r(){return e||o.options.disabled!==!0&&!t(this).hasClass("ui-state-disabled")?("string"==typeof a?o[a]:a).apply(o,arguments):void 0}"string"!=typeof a&&(r.guid=a.guid=a.guid||r.guid||t.guid++);var l=s.match(/^([\w:-]*)\s*(.*)$/),h=l[1]+o.eventNamespace,c=l[2];c?n.on(h,c,r):i.on(h,r)})},_off:function(e,i){i=(i||"").split(" ").join(this.eventNamespace+" ")+this.eventNamespace,e.off(i).off(i),this.bindings=t(this.bindings.not(e).get()),this.focusable=t(this.focusable.not(e).get()),this.hoverable=t(this.hoverable.not(e).get())},_delay:function(t,e){function i(){return("string"==typeof t?s[t]:t).apply(s,arguments)}var s=this;return setTimeout(i,e||0)},_hoverable:function(e){this.hoverable=this.hoverable.add(e),this._on(e,{mouseenter:function(e){this._addClass(t(e.currentTarget),null,"ui-state-hover")},mouseleave:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-hover")}})},_focusable:function(e){this.focusable=this.focusable.add(e),this._on(e,{focusin:function(e){this._addClass(t(e.currentTarget),null,"ui-state-focus")},focusout:function(e){this._removeClass(t(e.currentTarget),null,"ui-state-focus")}})},_trigger:function(e,i,s){var n,o,a=this.options[e];if(s=s||{},i=t.Event(i),i.type=(e===this.widgetEventPrefix?e:this.widgetEventPrefix+e).toLowerCase(),i.target=this.element[0],o=i.originalEvent)for(n in o)n in i||(i[n]=o[n]);return this.element.trigger(i,s),!(t.isFunction(a)&&a.apply(this.element[0],[i].concat(s))===!1||i.isDefaultPrevented())}},t.each({show:"fadeIn",hide:"fadeOut"},function(e,i){t.Widget.prototype["_"+e]=function(s,n,o){"string"==typeof n&&(n={effect:n});var a,r=n?n===!0||"number"==typeof n?i:n.effect||i:e;n=n||{},"number"==typeof n&&(n={duration:n}),a=!t.isEmptyObject(n),n.complete=o,n.delay&&s.delay(n.delay),a&&t.effects&&t.effects.effect[r]?s[e](n):r!==e&&s[r]?s[r](n.duration,n.easing,o):s.queue(function(i){t(this)[e](),o&&o.call(s[0]),i()})}}),t.widget,function(){function e(t,e,i){return[parseFloat(t[0])*(u.test(t[0])?e/100:1),parseFloat(t[1])*(u.test(t[1])?i/100:1)]}function i(e,i){return parseInt(t.css(e,i),10)||0}function s(e){var i=e[0];return 9===i.nodeType?{width:e.width(),height:e.height(),offset:{top:0,left:0}}:t.isWindow(i)?{width:e.width(),height:e.height(),offset:{top:e.scrollTop(),left:e.scrollLeft()}}:i.preventDefault?{width:0,height:0,offset:{top:i.pageY,left:i.pageX}}:{width:e.outerWidth(),height:e.outerHeight(),offset:e.offset()}}var n,o=Math.max,a=Math.abs,r=/left|center|right/,l=/top|center|bottom/,h=/[\+\-]\d+(\.[\d]+)?%?/,c=/^\w+/,u=/%$/,d=t.fn.position;t.position={scrollbarWidth:function(){if(void 0!==n)return n;var e,i,s=t("
"),o=s.children()[0];return t("body").append(s),e=o.offsetWidth,s.css("overflow","scroll"),i=o.offsetWidth,e===i&&(i=s[0].clientWidth),s.remove(),n=e-i},getScrollInfo:function(e){var i=e.isWindow||e.isDocument?"":e.element.css("overflow-x"),s=e.isWindow||e.isDocument?"":e.element.css("overflow-y"),n="scroll"===i||"auto"===i&&e.widthi?"left":e>0?"right":"center",vertical:0>r?"top":s>0?"bottom":"middle"};h>p&&p>a(e+i)&&(u.horizontal="center"),c>f&&f>a(s+r)&&(u.vertical="middle"),u.important=o(a(e),a(i))>o(a(s),a(r))?"horizontal":"vertical",n.using.call(this,t,u)}),l.offset(t.extend(D,{using:r}))})},t.ui.position={fit:{left:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollLeft:s.offset.left,a=s.width,r=t.left-e.collisionPosition.marginLeft,l=n-r,h=r+e.collisionWidth-a-n;e.collisionWidth>a?l>0&&0>=h?(i=t.left+l+e.collisionWidth-a-n,t.left+=l-i):t.left=h>0&&0>=l?n:l>h?n+a-e.collisionWidth:n:l>0?t.left+=l:h>0?t.left-=h:t.left=o(t.left-r,t.left)},top:function(t,e){var i,s=e.within,n=s.isWindow?s.scrollTop:s.offset.top,a=e.within.height,r=t.top-e.collisionPosition.marginTop,l=n-r,h=r+e.collisionHeight-a-n;e.collisionHeight>a?l>0&&0>=h?(i=t.top+l+e.collisionHeight-a-n,t.top+=l-i):t.top=h>0&&0>=l?n:l>h?n+a-e.collisionHeight:n:l>0?t.top+=l:h>0?t.top-=h:t.top=o(t.top-r,t.top)}},flip:{left:function(t,e){var i,s,n=e.within,o=n.offset.left+n.scrollLeft,r=n.width,l=n.isWindow?n.scrollLeft:n.offset.left,h=t.left-e.collisionPosition.marginLeft,c=h-l,u=h+e.collisionWidth-r-l,d="left"===e.my[0]?-e.elemWidth:"right"===e.my[0]?e.elemWidth:0,p="left"===e.at[0]?e.targetWidth:"right"===e.at[0]?-e.targetWidth:0,f=-2*e.offset[0];0>c?(i=t.left+d+p+f+e.collisionWidth-r-o,(0>i||a(c)>i)&&(t.left+=d+p+f)):u>0&&(s=t.left-e.collisionPosition.marginLeft+d+p+f-l,(s>0||u>a(s))&&(t.left+=d+p+f))},top:function(t,e){var i,s,n=e.within,o=n.offset.top+n.scrollTop,r=n.height,l=n.isWindow?n.scrollTop:n.offset.top,h=t.top-e.collisionPosition.marginTop,c=h-l,u=h+e.collisionHeight-r-l,d="top"===e.my[1],p=d?-e.elemHeight:"bottom"===e.my[1]?e.elemHeight:0,f="top"===e.at[1]?e.targetHeight:"bottom"===e.at[1]?-e.targetHeight:0,g=-2*e.offset[1];0>c?(s=t.top+p+f+g+e.collisionHeight-r-o,(0>s||a(c)>s)&&(t.top+=p+f+g)):u>0&&(i=t.top-e.collisionPosition.marginTop+p+f+g-l,(i>0||u>a(i))&&(t.top+=p+f+g))}},flipfit:{left:function(){t.ui.position.flip.left.apply(this,arguments),t.ui.position.fit.left.apply(this,arguments)},top:function(){t.ui.position.flip.top.apply(this,arguments),t.ui.position.fit.top.apply(this,arguments)}}}}(),t.ui.position,t.ui.keyCode={BACKSPACE:8,COMMA:188,DELETE:46,DOWN:40,END:35,ENTER:13,ESCAPE:27,HOME:36,LEFT:37,PAGE_DOWN:34,PAGE_UP:33,PERIOD:190,RIGHT:39,SPACE:32,TAB:9,UP:38},t.fn.extend({uniqueId:function(){var t=0;return function(){return this.each(function(){this.id||(this.id="ui-id-"+ ++t)})}}(),removeUniqueId:function(){return this.each(function(){/^ui-id-\d+$/.test(this.id)&&t(this).removeAttr("id")})}}),t.ui.safeActiveElement=function(t){var e;try{e=t.activeElement}catch(i){e=t.body}return e||(e=t.body),e.nodeName||(e=t.body),e},t.widget("ui.menu",{version:"1.12.1",defaultElement:"
    ",delay:300,options:{icons:{submenu:"ui-icon-caret-1-e"},items:"> *",menus:"ul",position:{my:"left top",at:"right top"},role:"menu",blur:null,focus:null,select:null},_create:function(){this.activeMenu=this.element,this.mouseHandled=!1,this.element.uniqueId().attr({role:this.options.role,tabIndex:0}),this._addClass("ui-menu","ui-widget ui-widget-content"),this._on({"mousedown .ui-menu-item":function(t){t.preventDefault()},"click .ui-menu-item":function(e){var i=t(e.target),s=t(t.ui.safeActiveElement(this.document[0]));!this.mouseHandled&&i.not(".ui-state-disabled").length&&(this.select(e),e.isPropagationStopped()||(this.mouseHandled=!0),i.has(".ui-menu").length?this.expand(e):!this.element.is(":focus")&&s.closest(".ui-menu").length&&(this.element.trigger("focus",[!0]),this.active&&1===this.active.parents(".ui-menu").length&&clearTimeout(this.timer)))},"mouseenter .ui-menu-item":function(e){if(!this.previousFilter){var i=t(e.target).closest(".ui-menu-item"),s=t(e.currentTarget);i[0]===s[0]&&(this._removeClass(s.siblings().children(".ui-state-active"),null,"ui-state-active"),this.focus(e,s))}},mouseleave:"collapseAll","mouseleave .ui-menu":"collapseAll",focus:function(t,e){var i=this.active||this.element.find(this.options.items).eq(0);e||this.focus(t,i)},blur:function(e){this._delay(function(){var i=!t.contains(this.element[0],t.ui.safeActiveElement(this.document[0]));i&&this.collapseAll(e)})},keydown:"_keydown"}),this.refresh(),this._on(this.document,{click:function(t){this._closeOnDocumentClick(t)&&this.collapseAll(t),this.mouseHandled=!1}})},_destroy:function(){var e=this.element.find(".ui-menu-item").removeAttr("role aria-disabled"),i=e.children(".ui-menu-item-wrapper").removeUniqueId().removeAttr("tabIndex role aria-haspopup");this.element.removeAttr("aria-activedescendant").find(".ui-menu").addBack().removeAttr("role aria-labelledby aria-expanded aria-hidden aria-disabled tabIndex").removeUniqueId().show(),i.children().each(function(){var e=t(this);e.data("ui-menu-submenu-caret")&&e.remove()})},_keydown:function(e){var i,s,n,o,a=!0;switch(e.keyCode){case t.ui.keyCode.PAGE_UP:this.previousPage(e);break;case t.ui.keyCode.PAGE_DOWN:this.nextPage(e);break;case t.ui.keyCode.HOME:this._move("first","first",e);break;case t.ui.keyCode.END:this._move("last","last",e);break;case t.ui.keyCode.UP:this.previous(e);break;case t.ui.keyCode.DOWN:this.next(e);break;case t.ui.keyCode.LEFT:this.collapse(e);break;case t.ui.keyCode.RIGHT:this.active&&!this.active.is(".ui-state-disabled")&&this.expand(e);break;case t.ui.keyCode.ENTER:case t.ui.keyCode.SPACE:this._activate(e);break;case t.ui.keyCode.ESCAPE:this.collapse(e);break;default:a=!1,s=this.previousFilter||"",o=!1,n=e.keyCode>=96&&105>=e.keyCode?""+(e.keyCode-96):String.fromCharCode(e.keyCode),clearTimeout(this.filterTimer),n===s?o=!0:n=s+n,i=this._filterMenuItems(n),i=o&&-1!==i.index(this.active.next())?this.active.nextAll(".ui-menu-item"):i,i.length||(n=String.fromCharCode(e.keyCode),i=this._filterMenuItems(n)),i.length?(this.focus(e,i),this.previousFilter=n,this.filterTimer=this._delay(function(){delete this.previousFilter},1e3)):delete this.previousFilter}a&&e.preventDefault()},_activate:function(t){this.active&&!this.active.is(".ui-state-disabled")&&(this.active.children("[aria-haspopup='true']").length?this.expand(t):this.select(t))},refresh:function(){var e,i,s,n,o,a=this,r=this.options.icons.submenu,l=this.element.find(this.options.menus);this._toggleClass("ui-menu-icons",null,!!this.element.find(".ui-icon").length),s=l.filter(":not(.ui-menu)").hide().attr({role:this.options.role,"aria-hidden":"true","aria-expanded":"false"}).each(function(){var e=t(this),i=e.prev(),s=t("").data("ui-menu-submenu-caret",!0);a._addClass(s,"ui-menu-icon","ui-icon "+r),i.attr("aria-haspopup","true").prepend(s),e.attr("aria-labelledby",i.attr("id"))}),this._addClass(s,"ui-menu","ui-widget ui-widget-content ui-front"),e=l.add(this.element),i=e.find(this.options.items),i.not(".ui-menu-item").each(function(){var e=t(this);a._isDivider(e)&&a._addClass(e,"ui-menu-divider","ui-widget-content")}),n=i.not(".ui-menu-item, .ui-menu-divider"),o=n.children().not(".ui-menu").uniqueId().attr({tabIndex:-1,role:this._itemRole()}),this._addClass(n,"ui-menu-item")._addClass(o,"ui-menu-item-wrapper"),i.filter(".ui-state-disabled").attr("aria-disabled","true"),this.active&&!t.contains(this.element[0],this.active[0])&&this.blur()},_itemRole:function(){return{menu:"menuitem",listbox:"option"}[this.options.role]},_setOption:function(t,e){if("icons"===t){var i=this.element.find(".ui-menu-icon");this._removeClass(i,null,this.options.icons.submenu)._addClass(i,null,e.submenu)}this._super(t,e)},_setOptionDisabled:function(t){this._super(t),this.element.attr("aria-disabled",t+""),this._toggleClass(null,"ui-state-disabled",!!t)},focus:function(t,e){var i,s,n;this.blur(t,t&&"focus"===t.type),this._scrollIntoView(e),this.active=e.first(),s=this.active.children(".ui-menu-item-wrapper"),this._addClass(s,null,"ui-state-active"),this.options.role&&this.element.attr("aria-activedescendant",s.attr("id")),n=this.active.parent().closest(".ui-menu-item").children(".ui-menu-item-wrapper"),this._addClass(n,null,"ui-state-active"),t&&"keydown"===t.type?this._close():this.timer=this._delay(function(){this._close()},this.delay),i=e.children(".ui-menu"),i.length&&t&&/^mouse/.test(t.type)&&this._startOpening(i),this.activeMenu=e.parent(),this._trigger("focus",t,{item:e})},_scrollIntoView:function(e){var i,s,n,o,a,r;this._hasScroll()&&(i=parseFloat(t.css(this.activeMenu[0],"borderTopWidth"))||0,s=parseFloat(t.css(this.activeMenu[0],"paddingTop"))||0,n=e.offset().top-this.activeMenu.offset().top-i-s,o=this.activeMenu.scrollTop(),a=this.activeMenu.height(),r=e.outerHeight(),0>n?this.activeMenu.scrollTop(o+n):n+r>a&&this.activeMenu.scrollTop(o+n-a+r))},blur:function(t,e){e||clearTimeout(this.timer),this.active&&(this._removeClass(this.active.children(".ui-menu-item-wrapper"),null,"ui-state-active"),this._trigger("blur",t,{item:this.active}),this.active=null)},_startOpening:function(t){clearTimeout(this.timer),"true"===t.attr("aria-hidden")&&(this.timer=this._delay(function(){this._close(),this._open(t)},this.delay))},_open:function(e){var i=t.extend({of:this.active},this.options.position);clearTimeout(this.timer),this.element.find(".ui-menu").not(e.parents(".ui-menu")).hide().attr("aria-hidden","true"),e.show().removeAttr("aria-hidden").attr("aria-expanded","true").position(i)},collapseAll:function(e,i){clearTimeout(this.timer),this.timer=this._delay(function(){var s=i?this.element:t(e&&e.target).closest(this.element.find(".ui-menu"));s.length||(s=this.element),this._close(s),this.blur(e),this._removeClass(s.find(".ui-state-active"),null,"ui-state-active"),this.activeMenu=s},this.delay)},_close:function(t){t||(t=this.active?this.active.parent():this.element),t.find(".ui-menu").hide().attr("aria-hidden","true").attr("aria-expanded","false")},_closeOnDocumentClick:function(e){return!t(e.target).closest(".ui-menu").length},_isDivider:function(t){return!/[^\-\u2014\u2013\s]/.test(t.text())},collapse:function(t){var e=this.active&&this.active.parent().closest(".ui-menu-item",this.element);e&&e.length&&(this._close(),this.focus(t,e))},expand:function(t){var e=this.active&&this.active.children(".ui-menu ").find(this.options.items).first();e&&e.length&&(this._open(e.parent()),this._delay(function(){this.focus(t,e)}))},next:function(t){this._move("next","first",t)},previous:function(t){this._move("prev","last",t)},isFirstItem:function(){return this.active&&!this.active.prevAll(".ui-menu-item").length},isLastItem:function(){return this.active&&!this.active.nextAll(".ui-menu-item").length},_move:function(t,e,i){var s;this.active&&(s="first"===t||"last"===t?this.active["first"===t?"prevAll":"nextAll"](".ui-menu-item").eq(-1):this.active[t+"All"](".ui-menu-item").eq(0)),s&&s.length&&this.active||(s=this.activeMenu.find(this.options.items)[e]()),this.focus(i,s)},nextPage:function(e){var i,s,n;return this.active?(this.isLastItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.nextAll(".ui-menu-item").each(function(){return i=t(this),0>i.offset().top-s-n}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items)[this.active?"last":"first"]())),void 0):(this.next(e),void 0)},previousPage:function(e){var i,s,n;return this.active?(this.isFirstItem()||(this._hasScroll()?(s=this.active.offset().top,n=this.element.height(),this.active.prevAll(".ui-menu-item").each(function(){return i=t(this),i.offset().top-s+n>0}),this.focus(e,i)):this.focus(e,this.activeMenu.find(this.options.items).first())),void 0):(this.next(e),void 0)},_hasScroll:function(){return this.element.outerHeight()",options:{appendTo:null,autoFocus:!1,delay:300,minLength:1,position:{my:"left top",at:"left bottom",collision:"none"},source:null,change:null,close:null,focus:null,open:null,response:null,search:null,select:null},requestIndex:0,pending:0,_create:function(){var e,i,s,n=this.element[0].nodeName.toLowerCase(),o="textarea"===n,a="input"===n;this.isMultiLine=o||!a&&this._isContentEditable(this.element),this.valueMethod=this.element[o||a?"val":"text"],this.isNewMenu=!0,this._addClass("ui-autocomplete-input"),this.element.attr("autocomplete","off"),this._on(this.element,{keydown:function(n){if(this.element.prop("readOnly"))return e=!0,s=!0,i=!0,void 0;e=!1,s=!1,i=!1;var o=t.ui.keyCode;switch(n.keyCode){case o.PAGE_UP:e=!0,this._move("previousPage",n);break;case o.PAGE_DOWN:e=!0,this._move("nextPage",n);break;case o.UP:e=!0,this._keyEvent("previous",n);break;case o.DOWN:e=!0,this._keyEvent("next",n);break;case o.ENTER:this.menu.active&&(e=!0,n.preventDefault(),this.menu.select(n));break;case o.TAB:this.menu.active&&this.menu.select(n);break;case o.ESCAPE:this.menu.element.is(":visible")&&(this.isMultiLine||this._value(this.term),this.close(n),n.preventDefault());break;default:i=!0,this._searchTimeout(n)}},keypress:function(s){if(e)return e=!1,(!this.isMultiLine||this.menu.element.is(":visible"))&&s.preventDefault(),void 0;if(!i){var n=t.ui.keyCode;switch(s.keyCode){case n.PAGE_UP:this._move("previousPage",s);break;case n.PAGE_DOWN:this._move("nextPage",s);break;case n.UP:this._keyEvent("previous",s);break;case n.DOWN:this._keyEvent("next",s)}}},input:function(t){return s?(s=!1,t.preventDefault(),void 0):(this._searchTimeout(t),void 0)},focus:function(){this.selectedItem=null,this.previous=this._value()},blur:function(t){return this.cancelBlur?(delete this.cancelBlur,void 0):(clearTimeout(this.searching),this.close(t),this._change(t),void 0)}}),this._initSource(),this.menu=t("
      ").appendTo(this._appendTo()).menu({role:null}).hide().menu("instance"),this._addClass(this.menu.element,"ui-autocomplete","ui-front"),this._on(this.menu.element,{mousedown:function(e){e.preventDefault(),this.cancelBlur=!0,this._delay(function(){delete this.cancelBlur,this.element[0]!==t.ui.safeActiveElement(this.document[0])&&this.element.trigger("focus")})},menufocus:function(e,i){var s,n;return this.isNewMenu&&(this.isNewMenu=!1,e.originalEvent&&/^mouse/.test(e.originalEvent.type))?(this.menu.blur(),this.document.one("mousemove",function(){t(e.target).trigger(e.originalEvent)}),void 0):(n=i.item.data("ui-autocomplete-item"),!1!==this._trigger("focus",e,{item:n})&&e.originalEvent&&/^key/.test(e.originalEvent.type)&&this._value(n.value),s=i.item.attr("aria-label")||n.value,s&&t.trim(s).length&&(this.liveRegion.children().hide(),t("
      ").text(s).appendTo(this.liveRegion)),void 0)},menuselect:function(e,i){var s=i.item.data("ui-autocomplete-item"),n=this.previous;this.element[0]!==t.ui.safeActiveElement(this.document[0])&&(this.element.trigger("focus"),this.previous=n,this._delay(function(){this.previous=n,this.selectedItem=s})),!1!==this._trigger("select",e,{item:s})&&this._value(s.value),this.term=this._value(),this.close(e),this.selectedItem=s}}),this.liveRegion=t("
      ",{role:"status","aria-live":"assertive","aria-relevant":"additions"}).appendTo(this.document[0].body),this._addClass(this.liveRegion,null,"ui-helper-hidden-accessible"),this._on(this.window,{beforeunload:function(){this.element.removeAttr("autocomplete")}})},_destroy:function(){clearTimeout(this.searching),this.element.removeAttr("autocomplete"),this.menu.element.remove(),this.liveRegion.remove()},_setOption:function(t,e){this._super(t,e),"source"===t&&this._initSource(),"appendTo"===t&&this.menu.element.appendTo(this._appendTo()),"disabled"===t&&e&&this.xhr&&this.xhr.abort()},_isEventTargetInWidget:function(e){var i=this.menu.element[0];return e.target===this.element[0]||e.target===i||t.contains(i,e.target)},_closeOnClickOutside:function(t){this._isEventTargetInWidget(t)||this.close()},_appendTo:function(){var e=this.options.appendTo;return e&&(e=e.jquery||e.nodeType?t(e):this.document.find(e).eq(0)),e&&e[0]||(e=this.element.closest(".ui-front, dialog")),e.length||(e=this.document[0].body),e},_initSource:function(){var e,i,s=this;t.isArray(this.options.source)?(e=this.options.source,this.source=function(i,s){s(t.ui.autocomplete.filter(e,i.term))}):"string"==typeof this.options.source?(i=this.options.source,this.source=function(e,n){s.xhr&&s.xhr.abort(),s.xhr=t.ajax({url:i,data:e,dataType:"json",success:function(t){n(t)},error:function(){n([])}})}):this.source=this.options.source},_searchTimeout:function(t){clearTimeout(this.searching),this.searching=this._delay(function(){var e=this.term===this._value(),i=this.menu.element.is(":visible"),s=t.altKey||t.ctrlKey||t.metaKey||t.shiftKey;(!e||e&&!i&&!s)&&(this.selectedItem=null,this.search(null,t))},this.options.delay)},search:function(t,e){return t=null!=t?t:this._value(),this.term=this._value(),t.length").append(t("
      ").text(i.label)).appendTo(e)},_move:function(t,e){return this.menu.element.is(":visible")?this.menu.isFirstItem()&&/^previous/.test(t)||this.menu.isLastItem()&&/^next/.test(t)?(this.isMultiLine||this._value(this.term),this.menu.blur(),void 0):(this.menu[t](e),void 0):(this.search(null,e),void 0)},widget:function(){return this.menu.element},_value:function(){return this.valueMethod.apply(this.element,arguments)},_keyEvent:function(t,e){(!this.isMultiLine||this.menu.element.is(":visible"))&&(this._move(t,e),e.preventDefault())},_isContentEditable:function(t){if(!t.length)return!1;var e=t.prop("contentEditable");return"inherit"===e?this._isContentEditable(t.parent()):"true"===e}}),t.extend(t.ui.autocomplete,{escapeRegex:function(t){return t.replace(/[\-\[\]{}()*+?.,\\\^$|#\s]/g,"\\$&")},filter:function(e,i){var s=RegExp(t.ui.autocomplete.escapeRegex(i),"i");return t.grep(e,function(t){return s.test(t.label||t.value||t)})}}),t.widget("ui.autocomplete",t.ui.autocomplete,{options:{messages:{noResults:"No search results.",results:function(t){return t+(t>1?" results are":" result is")+" available, use up and down arrow keys to navigate."}}},__response:function(e){var i;this._superApply(arguments),this.options.disabled||this.cancelSearch||(i=e&&e.length?this.options.messages.results(e.length):this.options.messages.noResults,this.liveRegion.children().hide(),t("
      ").text(i).appendTo(this.liveRegion))}}),t.ui.autocomplete}); \ No newline at end of file diff --git a/target/site/apidocs/script-dir/jquery-ui.structure.min.css b/target/site/apidocs/script-dir/jquery-ui.structure.min.css new file mode 100644 index 0000000..e880892 --- /dev/null +++ b/target/site/apidocs/script-dir/jquery-ui.structure.min.css @@ -0,0 +1,5 @@ +/*! jQuery UI - v1.12.1 - 2018-12-06 +* http://jqueryui.com +* Copyright jQuery Foundation and other contributors; Licensed MIT */ + +.ui-helper-hidden{display:none}.ui-helper-hidden-accessible{border:0;clip:rect(0 0 0 0);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px}.ui-helper-reset{margin:0;padding:0;border:0;outline:0;line-height:1.3;text-decoration:none;font-size:100%;list-style:none}.ui-helper-clearfix:before,.ui-helper-clearfix:after{content:"";display:table;border-collapse:collapse}.ui-helper-clearfix:after{clear:both}.ui-helper-zfix{width:100%;height:100%;top:0;left:0;position:absolute;opacity:0;filter:Alpha(Opacity=0)}.ui-front{z-index:100}.ui-state-disabled{cursor:default!important;pointer-events:none}.ui-icon{display:inline-block;vertical-align:middle;margin-top:-.25em;position:relative;text-indent:-99999px;overflow:hidden;background-repeat:no-repeat}.ui-widget-icon-block{left:50%;margin-left:-8px;display:block}.ui-widget-overlay{position:fixed;top:0;left:0;width:100%;height:100%}.ui-autocomplete{position:absolute;top:0;left:0;cursor:default}.ui-menu{list-style:none;padding:0;margin:0;display:block;outline:0}.ui-menu .ui-menu{position:absolute}.ui-menu .ui-menu-item{margin:0;cursor:pointer;list-style-image:url("data:image/gif;base64,R0lGODlhAQABAIAAAAAAAP///yH5BAEAAAAALAAAAAABAAEAAAIBRAA7")}.ui-menu .ui-menu-item-wrapper{position:relative;padding:3px 1em 3px .4em}.ui-menu .ui-menu-divider{margin:5px 0;height:0;font-size:0;line-height:0;border-width:1px 0 0 0}.ui-menu .ui-state-focus,.ui-menu .ui-state-active{margin:-1px}.ui-menu-icons{position:relative}.ui-menu-icons .ui-menu-item-wrapper{padding-left:2em}.ui-menu .ui-icon{position:absolute;top:0;bottom:0;left:.2em;margin:auto 0}.ui-menu .ui-menu-icon{left:auto;right:0} \ No newline at end of file diff --git a/target/site/apidocs/script.js b/target/site/apidocs/script.js new file mode 100644 index 0000000..864989c --- /dev/null +++ b/target/site/apidocs/script.js @@ -0,0 +1,132 @@ +/* + * Copyright (c) 2013, 2020, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +var moduleSearchIndex; +var packageSearchIndex; +var typeSearchIndex; +var memberSearchIndex; +var tagSearchIndex; +function loadScripts(doc, tag) { + createElem(doc, tag, 'search.js'); + + createElem(doc, tag, 'module-search-index.js'); + createElem(doc, tag, 'package-search-index.js'); + createElem(doc, tag, 'type-search-index.js'); + createElem(doc, tag, 'member-search-index.js'); + createElem(doc, tag, 'tag-search-index.js'); +} + +function createElem(doc, tag, path) { + var script = doc.createElement(tag); + var scriptElement = doc.getElementsByTagName(tag)[0]; + script.src = pathtoroot + path; + scriptElement.parentNode.insertBefore(script, scriptElement); +} + +function show(tableId, selected, columns) { + if (tableId !== selected) { + document.querySelectorAll('div.' + tableId + ':not(.' + selected + ')') + .forEach(function(elem) { + elem.style.display = 'none'; + }); + } + document.querySelectorAll('div.' + selected) + .forEach(function(elem, index) { + elem.style.display = ''; + var isEvenRow = index % (columns * 2) < columns; + elem.classList.remove(isEvenRow ? oddRowColor : evenRowColor); + elem.classList.add(isEvenRow ? evenRowColor : oddRowColor); + }); + updateTabs(tableId, selected); +} + +function updateTabs(tableId, selected) { + document.querySelector('div#' + tableId +' .summary-table') + .setAttribute('aria-labelledby', selected); + document.querySelectorAll('button[id^="' + tableId + '"]') + .forEach(function(tab, index) { + if (selected === tab.id || (tableId === selected && index === 0)) { + tab.className = activeTableTab; + tab.setAttribute('aria-selected', true); + tab.setAttribute('tabindex',0); + } else { + tab.className = tableTab; + tab.setAttribute('aria-selected', false); + tab.setAttribute('tabindex',-1); + } + }); +} + +function switchTab(e) { + var selected = document.querySelector('[aria-selected=true]'); + if (selected) { + if ((e.keyCode === 37 || e.keyCode === 38) && selected.previousSibling) { + // left or up arrow key pressed: move focus to previous tab + selected.previousSibling.click(); + selected.previousSibling.focus(); + e.preventDefault(); + } else if ((e.keyCode === 39 || e.keyCode === 40) && selected.nextSibling) { + // right or down arrow key pressed: move focus to next tab + selected.nextSibling.click(); + selected.nextSibling.focus(); + e.preventDefault(); + } + } +} + +var updateSearchResults = function() {}; + +function indexFilesLoaded() { + return moduleSearchIndex + && packageSearchIndex + && typeSearchIndex + && memberSearchIndex + && tagSearchIndex; +} + +// Workaround for scroll position not being included in browser history (8249133) +document.addEventListener("DOMContentLoaded", function(e) { + var contentDiv = document.querySelector("div.flex-content"); + window.addEventListener("popstate", function(e) { + if (e.state !== null) { + contentDiv.scrollTop = e.state; + } + }); + window.addEventListener("hashchange", function(e) { + history.replaceState(contentDiv.scrollTop, document.title); + }); + contentDiv.addEventListener("scroll", function(e) { + var timeoutID; + if (!timeoutID) { + timeoutID = setTimeout(function() { + history.replaceState(contentDiv.scrollTop, document.title); + timeoutID = null; + }, 100); + } + }); + if (!location.hash) { + history.replaceState(contentDiv.scrollTop, document.title); + } +}); diff --git a/target/site/apidocs/search.js b/target/site/apidocs/search.js new file mode 100644 index 0000000..2c2ced0 --- /dev/null +++ b/target/site/apidocs/search.js @@ -0,0 +1,354 @@ +/* + * Copyright (c) 2015, 2020, Oracle and/or its affiliates. All rights reserved. + * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER. + * + * This code is free software; you can redistribute it and/or modify it + * under the terms of the GNU General Public License version 2 only, as + * published by the Free Software Foundation. Oracle designates this + * particular file as subject to the "Classpath" exception as provided + * by Oracle in the LICENSE file that accompanied this code. + * + * This code is distributed in the hope that it will be useful, but WITHOUT + * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + * FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + * version 2 for more details (a copy is included in the LICENSE file that + * accompanied this code). + * + * You should have received a copy of the GNU General Public License version + * 2 along with this work; if not, write to the Free Software Foundation, + * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA. + * + * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA + * or visit www.oracle.com if you need additional information or have any + * questions. + */ + +var noResult = {l: "No results found"}; +var loading = {l: "Loading search index..."}; +var catModules = "Modules"; +var catPackages = "Packages"; +var catTypes = "Classes and Interfaces"; +var catMembers = "Members"; +var catSearchTags = "Search Tags"; +var highlight = "$&"; +var searchPattern = ""; +var fallbackPattern = ""; +var RANKING_THRESHOLD = 2; +var NO_MATCH = 0xffff; +var MIN_RESULTS = 3; +var MAX_RESULTS = 500; +var UNNAMED = ""; +function escapeHtml(str) { + return str.replace(//g, ">"); +} +function getHighlightedText(item, matcher, fallbackMatcher) { + var escapedItem = escapeHtml(item); + var highlighted = escapedItem.replace(matcher, highlight); + if (highlighted === escapedItem) { + highlighted = escapedItem.replace(fallbackMatcher, highlight) + } + return highlighted; +} +function getURLPrefix(ui) { + var urlPrefix=""; + var slash = "/"; + if (ui.item.category === catModules) { + return ui.item.l + slash; + } else if (ui.item.category === catPackages && ui.item.m) { + return ui.item.m + slash; + } else if (ui.item.category === catTypes || ui.item.category === catMembers) { + if (ui.item.m) { + urlPrefix = ui.item.m + slash; + } else { + $.each(packageSearchIndex, function(index, item) { + if (item.m && ui.item.p === item.l) { + urlPrefix = item.m + slash; + } + }); + } + } + return urlPrefix; +} +function createSearchPattern(term) { + var pattern = ""; + var isWordToken = false; + term.replace(/,\s*/g, ", ").trim().split(/\s+/).forEach(function(w, index) { + if (index > 0) { + // whitespace between identifiers is significant + pattern += (isWordToken && /^\w/.test(w)) ? "\\s+" : "\\s*"; + } + var tokens = w.split(/(?=[A-Z,.()<>[\/])/); + for (var i = 0; i < tokens.length; i++) { + var s = tokens[i]; + if (s === "") { + continue; + } + pattern += $.ui.autocomplete.escapeRegex(s); + isWordToken = /\w$/.test(s); + if (isWordToken) { + pattern += "([a-z0-9_$<>\\[\\]]*?)"; + } + } + }); + return pattern; +} +function createMatcher(pattern, flags) { + var isCamelCase = /[A-Z]/.test(pattern); + return new RegExp(pattern, flags + (isCamelCase ? "" : "i")); +} +var watermark = 'Search'; +$(function() { + var search = $("#search"); + var reset = $("#reset"); + search.val(''); + search.prop("disabled", false); + reset.prop("disabled", false); + search.val(watermark).addClass('watermark'); + search.blur(function() { + if ($(this).val().length === 0) { + $(this).val(watermark).addClass('watermark'); + } + }); + search.on('click keydown paste', function() { + if ($(this).val() === watermark) { + $(this).val('').removeClass('watermark'); + } + }); + reset.click(function() { + search.val('').focus(); + }); + search.focus()[0].setSelectionRange(0, 0); +}); +$.widget("custom.catcomplete", $.ui.autocomplete, { + _create: function() { + this._super(); + this.widget().menu("option", "items", "> :not(.ui-autocomplete-category)"); + }, + _renderMenu: function(ul, items) { + var rMenu = this; + var currentCategory = ""; + rMenu.menu.bindings = $(); + $.each(items, function(index, item) { + var li; + if (item.category && item.category !== currentCategory) { + ul.append("
    • " + item.category + "
    • "); + currentCategory = item.category; + } + li = rMenu._renderItemData(ul, item); + if (item.category) { + li.attr("aria-label", item.category + " : " + item.l); + li.attr("class", "result-item"); + } else { + li.attr("aria-label", item.l); + li.attr("class", "result-item"); + } + }); + }, + _renderItem: function(ul, item) { + var label = ""; + var matcher = createMatcher(escapeHtml(searchPattern), "g"); + var fallbackMatcher = new RegExp(fallbackPattern, "gi") + if (item.category === catModules) { + label = getHighlightedText(item.l, matcher, fallbackMatcher); + } else if (item.category === catPackages) { + label = getHighlightedText(item.l, matcher, fallbackMatcher); + } else if (item.category === catTypes) { + label = (item.p && item.p !== UNNAMED) + ? getHighlightedText(item.p + "." + item.l, matcher, fallbackMatcher) + : getHighlightedText(item.l, matcher, fallbackMatcher); + } else if (item.category === catMembers) { + label = (item.p && item.p !== UNNAMED) + ? getHighlightedText(item.p + "." + item.c + "." + item.l, matcher, fallbackMatcher) + : getHighlightedText(item.c + "." + item.l, matcher, fallbackMatcher); + } else if (item.category === catSearchTags) { + label = getHighlightedText(item.l, matcher, fallbackMatcher); + } else { + label = item.l; + } + var li = $("
    • ").appendTo(ul); + var div = $("
      ").appendTo(li); + if (item.category === catSearchTags && item.h) { + if (item.d) { + div.html(label + " (" + item.h + ")
      " + + item.d + "
      "); + } else { + div.html(label + " (" + item.h + ")"); + } + } else { + if (item.m) { + div.html(item.m + "/" + label); + } else { + div.html(label); + } + } + return li; + } +}); +function rankMatch(match, category) { + if (!match) { + return NO_MATCH; + } + var index = match.index; + var input = match.input; + var leftBoundaryMatch = 2; + var periferalMatch = 0; + // make sure match is anchored on a left word boundary + if (index === 0 || /\W/.test(input[index - 1]) || "_" === input[index]) { + leftBoundaryMatch = 0; + } else if ("_" === input[index - 1] || (input[index] === input[index].toUpperCase() && !/^[A-Z0-9_$]+$/.test(input))) { + leftBoundaryMatch = 1; + } + var matchEnd = index + match[0].length; + var leftParen = input.indexOf("("); + var endOfName = leftParen > -1 ? leftParen : input.length; + // exclude peripheral matches + if (category !== catModules && category !== catSearchTags) { + var delim = category === catPackages ? "/" : "."; + if (leftParen > -1 && leftParen < index) { + periferalMatch += 2; + } else if (input.lastIndexOf(delim, endOfName) >= matchEnd) { + periferalMatch += 2; + } + } + var delta = match[0].length === endOfName ? 0 : 1; // rank full match higher than partial match + for (var i = 1; i < match.length; i++) { + // lower ranking if parts of the name are missing + if (match[i]) + delta += match[i].length; + } + if (category === catTypes) { + // lower ranking if a type name contains unmatched camel-case parts + if (/[A-Z]/.test(input.substring(matchEnd))) + delta += 5; + if (/[A-Z]/.test(input.substring(0, index))) + delta += 5; + } + return leftBoundaryMatch + periferalMatch + (delta / 200); + +} +function doSearch(request, response) { + var result = []; + searchPattern = createSearchPattern(request.term); + fallbackPattern = createSearchPattern(request.term.toLowerCase()); + if (searchPattern === "") { + return this.close(); + } + var camelCaseMatcher = createMatcher(searchPattern, ""); + var fallbackMatcher = new RegExp(fallbackPattern, "i"); + + function searchIndexWithMatcher(indexArray, matcher, category, nameFunc) { + if (indexArray) { + var newResults = []; + $.each(indexArray, function (i, item) { + item.category = category; + var ranking = rankMatch(matcher.exec(nameFunc(item)), category); + if (ranking < RANKING_THRESHOLD) { + newResults.push({ranking: ranking, item: item}); + } + return newResults.length <= MAX_RESULTS; + }); + return newResults.sort(function(e1, e2) { + return e1.ranking - e2.ranking; + }).map(function(e) { + return e.item; + }); + } + return []; + } + function searchIndex(indexArray, category, nameFunc) { + var primaryResults = searchIndexWithMatcher(indexArray, camelCaseMatcher, category, nameFunc); + result = result.concat(primaryResults); + if (primaryResults.length <= MIN_RESULTS && camelCaseMatcher.flags.indexOf("i") === -1) { + var secondaryResults = searchIndexWithMatcher(indexArray, fallbackMatcher, category, nameFunc); + result = result.concat(secondaryResults.filter(function (item) { + return primaryResults.indexOf(item) === -1; + })); + } + } + + searchIndex(moduleSearchIndex, catModules, function(item) { return item.l; }); + searchIndex(packageSearchIndex, catPackages, function(item) { + return (item.m && request.term.indexOf("/") > -1) + ? (item.m + "/" + item.l) : item.l; + }); + searchIndex(typeSearchIndex, catTypes, function(item) { + return request.term.indexOf(".") > -1 ? item.p + "." + item.l : item.l; + }); + searchIndex(memberSearchIndex, catMembers, function(item) { + return request.term.indexOf(".") > -1 + ? item.p + "." + item.c + "." + item.l : item.l; + }); + searchIndex(tagSearchIndex, catSearchTags, function(item) { return item.l; }); + + if (!indexFilesLoaded()) { + updateSearchResults = function() { + doSearch(request, response); + } + result.unshift(loading); + } else { + updateSearchResults = function() {}; + } + response(result); +} +$(function() { + $("#search").catcomplete({ + minLength: 1, + delay: 300, + source: doSearch, + response: function(event, ui) { + if (!ui.content.length) { + ui.content.push(noResult); + } else { + $("#search").empty(); + } + }, + autoFocus: true, + focus: function(event, ui) { + return false; + }, + position: { + collision: "flip" + }, + select: function(event, ui) { + if (ui.item.category) { + var url = getURLPrefix(ui); + if (ui.item.category === catModules) { + url += "module-summary.html"; + } else if (ui.item.category === catPackages) { + if (ui.item.u) { + url = ui.item.u; + } else { + url += ui.item.l.replace(/\./g, '/') + "/package-summary.html"; + } + } else if (ui.item.category === catTypes) { + if (ui.item.u) { + url = ui.item.u; + } else if (ui.item.p === UNNAMED) { + url += ui.item.l + ".html"; + } else { + url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.l + ".html"; + } + } else if (ui.item.category === catMembers) { + if (ui.item.p === UNNAMED) { + url += ui.item.c + ".html" + "#"; + } else { + url += ui.item.p.replace(/\./g, '/') + "/" + ui.item.c + ".html" + "#"; + } + if (ui.item.u) { + url += ui.item.u; + } else { + url += ui.item.l; + } + } else if (ui.item.category === catSearchTags) { + url += ui.item.u; + } + if (top !== window) { + parent.classFrame.location = pathtoroot + url; + } else { + window.location.href = pathtoroot + url; + } + $("#search").focus(); + } + } + }); +}); diff --git a/target/site/apidocs/serialized-form.html b/target/site/apidocs/serialized-form.html new file mode 100644 index 0000000..a693241 --- /dev/null +++ b/target/site/apidocs/serialized-form.html @@ -0,0 +1,89 @@ + + + + + +Serialized Form (spoteezer 0.1.0 API) + + + + + + + + + + + + + + + +
      + +
      +
      +
      +

      Serialized Form

      +
      + +
      +
      +
      + +
      +
      +
      + + diff --git a/target/site/apidocs/stylesheet.css b/target/site/apidocs/stylesheet.css new file mode 100644 index 0000000..932e56c --- /dev/null +++ b/target/site/apidocs/stylesheet.css @@ -0,0 +1,827 @@ +/* + * Javadoc style sheet + */ + +@import url('resources/fonts/dejavu.css'); + +/* + * Styles for individual HTML elements. + * + * These are styles that are specific to individual HTML elements. Changing them affects the style of a particular + * HTML element throughout the page. + */ + +body { + background-color:#ffffff; + color:#353833; + font-family:'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:14px; + margin:0; + padding:0; + height:100%; + width:100%; +} +iframe { + margin:0; + padding:0; + height:100%; + width:100%; + overflow-y:scroll; + border:none; +} +a:link, a:visited { + text-decoration:none; + color:#4A6782; +} +a[href]:hover, a[href]:focus { + text-decoration:none; + color:#bb7a2a; +} +a[name] { + color:#353833; +} +pre { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; +} +h1 { + font-size:20px; +} +h2 { + font-size:18px; +} +h3 { + font-size:16px; +} +h4 { + font-size:13px; +} +h5 { + font-size:12px; +} +h6 { + font-size:11px; +} +ul { + list-style-type:disc; +} +code, tt { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; + margin-top:8px; + line-height:1.4em; +} +dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + padding-top:4px; +} +.summary-table dt code { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + vertical-align:top; + padding-top:4px; +} +sup { + font-size:8px; +} +button { + font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size: 14px; +} +/* + * Styles for HTML generated by javadoc. + * + * These are style classes that are used by the standard doclet to generate HTML documentation. + */ + +/* + * Styles for document title and copyright. + */ +.clear { + clear:both; + height:0; + overflow:hidden; +} +.about-language { + float:right; + padding:0 21px 8px 8px; + font-size:11px; + margin-top:-9px; + height:2.9em; +} +.legal-copy { + margin-left:.5em; +} +.tab { + background-color:#0066FF; + color:#ffffff; + padding:8px; + width:5em; + font-weight:bold; +} +/* + * Styles for navigation bar. + */ +@media screen { + .flex-box { + position:fixed; + display:flex; + flex-direction:column; + height: 100%; + width: 100%; + } + .flex-header { + flex: 0 0 auto; + } + .flex-content { + flex: 1 1 auto; + overflow-y: auto; + } +} +.top-nav { + background-color:#4D7A97; + color:#FFFFFF; + float:left; + padding:0; + width:100%; + clear:right; + min-height:2.8em; + padding-top:10px; + overflow:hidden; + font-size:12px; +} +.sub-nav { + background-color:#dee3e9; + float:left; + width:100%; + overflow:hidden; + font-size:12px; +} +.sub-nav div { + clear:left; + float:left; + padding:0 0 5px 6px; + text-transform:uppercase; +} +.sub-nav .nav-list { + padding-top:5px; +} +ul.nav-list { + display:block; + margin:0 25px 0 0; + padding:0; +} +ul.sub-nav-list { + float:left; + margin:0 25px 0 0; + padding:0; +} +ul.nav-list li { + list-style:none; + float:left; + padding: 5px 6px; + text-transform:uppercase; +} +.sub-nav .nav-list-search { + float:right; + margin:0 0 0 0; + padding:5px 6px; + clear:none; +} +.nav-list-search label { + position:relative; + right:-16px; +} +ul.sub-nav-list li { + list-style:none; + float:left; + padding-top:10px; +} +.top-nav a:link, .top-nav a:active, .top-nav a:visited { + color:#FFFFFF; + text-decoration:none; + text-transform:uppercase; +} +.top-nav a:hover { + text-decoration:none; + color:#bb7a2a; + text-transform:uppercase; +} +.nav-bar-cell1-rev { + background-color:#F8981D; + color:#253441; + margin: auto 5px; +} +.skip-nav { + position:absolute; + top:auto; + left:-9999px; + overflow:hidden; +} +/* + * Hide navigation links and search box in print layout + */ +@media print { + ul.nav-list, div.sub-nav { + display:none; + } +} +/* + * Styles for page header and footer. + */ +.title { + color:#2c4557; + margin:10px 0; +} +.sub-title { + margin:5px 0 0 0; +} +.header ul { + margin:0 0 15px 0; + padding:0; +} +.header ul li, .footer ul li { + list-style:none; + font-size:13px; +} +/* + * Styles for headings. + */ +body.class-declaration-page .summary h2, +body.class-declaration-page .details h2, +body.class-use-page h2, +body.module-declaration-page .block-list h2 { + font-style: italic; + padding:0; + margin:15px 0; +} +body.class-declaration-page .summary h3, +body.class-declaration-page .details h3, +body.class-declaration-page .summary .inherited-list h2 { + background-color:#dee3e9; + border:1px solid #d0d9e0; + margin:0 0 6px -8px; + padding:7px 5px; +} +/* + * Styles for page layout containers. + */ +main { + clear:both; + padding:10px 20px; + position:relative; +} +dl.notes > dt { + font-family: 'DejaVu Sans', Arial, Helvetica, sans-serif; + font-size:12px; + font-weight:bold; + margin:10px 0 0 0; + color:#4E4E4E; +} +dl.notes > dd { + margin:5px 0 10px 0; + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} +dl.name-value > dt { + margin-left:1px; + font-size:1.1em; + display:inline; + font-weight:bold; +} +dl.name-value > dd { + margin:0 0 0 1px; + font-size:1.1em; + display:inline; +} +/* + * Styles for lists. + */ +li.circle { + list-style:circle; +} +ul.horizontal li { + display:inline; + font-size:0.9em; +} +div.inheritance { + margin:0; + padding:0; +} +div.inheritance div.inheritance { + margin-left:2em; +} +ul.block-list, +ul.details-list, +ul.member-list, +ul.summary-list { + margin:10px 0 10px 0; + padding:0; +} +ul.block-list > li, +ul.details-list > li, +ul.member-list > li, +ul.summary-list > li { + list-style:none; + margin-bottom:15px; + line-height:1.4; +} +.summary-table dl, .summary-table dl dt, .summary-table dl dd { + margin-top:0; + margin-bottom:1px; +} +/* + * Styles for tables. + */ +.summary-table { + width:100%; + border-spacing:0; + border-left:1px solid #EEE; + border-right:1px solid #EEE; + border-bottom:1px solid #EEE; +} +.summary-table { + padding:0; +} +.caption { + position:relative; + text-align:left; + background-repeat:no-repeat; + color:#253441; + font-weight:bold; + clear:none; + overflow:hidden; + padding:0px; + padding-top:10px; + padding-left:1px; + margin:0px; + white-space:pre; +} +.caption a:link, .caption a:visited { + color:#1f389c; +} +.caption a:hover, +.caption a:active { + color:#FFFFFF; +} +.caption span { + white-space:nowrap; + padding-top:5px; + padding-left:12px; + padding-right:12px; + padding-bottom:7px; + display:inline-block; + float:left; + background-color:#F8981D; + border: none; + height:16px; +} + +div.table-tabs > button { + border: none; + cursor: pointer; + padding: 5px 12px 7px 12px; + font-weight: bold; + margin-right: 3px; +} +div.table-tabs > button.active-table-tab { + background: #F8981D; + color: #253441; +} +div.table-tabs > button.table-tab { + background: #4D7A97; + color: #FFFFFF; +} +.two-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); +} +.three-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(15%, max-content) minmax(15%, auto); +} +.four-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(10%, max-content) minmax(10%, max-content) minmax(10%, auto); +} +@media screen and (max-width: 600px) { + .two-column-summary { + display: grid; + grid-template-columns: 1fr; + } +} +@media screen and (max-width: 800px) { + .three-column-summary { + display: grid; + grid-template-columns: minmax(10%, max-content) minmax(25%, auto); + } + .three-column-summary .col-last { + grid-column-end: span 2; + } +} +@media screen and (max-width: 1000px) { + .four-column-summary { + display: grid; + grid-template-columns: minmax(15%, max-content) minmax(15%, auto); + } +} +.summary-table > div { + text-align:left; + padding: 8px 3px 3px 7px; +} +.col-first, .col-second, .col-last, .col-constructor-name, .col-deprecated-item-name { + vertical-align:top; + padding-right:0; + padding-top:8px; + padding-bottom:3px; +} +.table-header { + background:#dee3e9; + font-weight: bold; +} +.col-first, .col-first { + font-size:13px; +} +.col-second, .col-second, .col-last, .col-constructor-name, .col-deprecated-item-name, .col-last { + font-size:13px; +} +.col-first, .col-second, .col-constructor-name { + vertical-align:top; + overflow: auto; +} +.col-last { + white-space:normal; +} +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-first a:link, .col-first a:visited, +.col-second a:link, .col-second a:visited, +.col-constructor-name a:link, .col-constructor-name a:visited, +.col-deprecated-item-name a:link, .col-deprecated-item-name a:visited, +.constant-values-container a:link, .constant-values-container a:visited, +.all-classes-container a:link, .all-classes-container a:visited, +.all-packages-container a:link, .all-packages-container a:visited { + font-weight:bold; +} +.table-sub-heading-color { + background-color:#EEEEFF; +} +.even-row-color, .even-row-color .table-header { + background-color:#FFFFFF; +} +.odd-row-color, .odd-row-color .table-header { + background-color:#EEEEEF; +} +/* + * Styles for contents. + */ +.deprecated-content { + margin:0; + padding:10px 0; +} +div.block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; +} +.col-last div { + padding-top:0; +} +.col-last a { + padding-bottom:3px; +} +.module-signature, +.package-signature, +.type-signature, +.member-signature { + font-family:'DejaVu Sans Mono', monospace; + font-size:14px; + margin:14px 0; + white-space: pre-wrap; +} +.module-signature, +.package-signature, +.type-signature { + margin-top: 0; +} +.member-signature .type-parameters-long, +.member-signature .parameters, +.member-signature .exceptions { + display: inline-block; + vertical-align: top; + white-space: pre; +} +.member-signature .type-parameters { + white-space: normal; +} +/* + * Styles for formatting effect. + */ +.source-line-no { + color:green; + padding:0 30px 0 0; +} +h1.hidden { + visibility:hidden; + overflow:hidden; + font-size:10px; +} +.block { + display:block; + margin:0 10px 5px 0; + color:#474747; +} +.deprecated-label, .descfrm-type-label, .implementation-label, .member-name-label, .member-name-link, +.module-label-in-package, .module-label-in-type, .override-specify-label, .package-label-in-type, +.package-hierarchy-label, .type-name-label, .type-name-link, .search-tag-link { + font-weight:bold; +} +.deprecation-comment, .help-footnote, .interface-name { + font-style:italic; +} +.deprecation-block { + font-size:14px; + font-family:'DejaVu Serif', Georgia, "Times New Roman", Times, serif; + border-style:solid; + border-width:thin; + border-radius:10px; + padding:10px; + margin-bottom:10px; + margin-right:10px; + display:inline-block; +} +div.block div.deprecation-comment, div.block div.block span.emphasized-phrase, +div.block div.block span.interface-name { + font-style:normal; +} +/* + * Styles specific to HTML5 elements. + */ +main, nav, header, footer, section { + display:block; +} +/* + * Styles for javadoc search. + */ +.ui-autocomplete-category { + font-weight:bold; + font-size:15px; + padding:7px 0 7px 3px; + background-color:#4D7A97; + color:#FFFFFF; +} +.result-item { + font-size:13px; +} +.ui-autocomplete { + max-height:85%; + max-width:65%; + overflow-y:scroll; + overflow-x:scroll; + white-space:nowrap; + box-shadow: 0 3px 6px rgba(0,0,0,0.16), 0 3px 6px rgba(0,0,0,0.23); +} +ul.ui-autocomplete { + position:fixed; + z-index:999999; +} +ul.ui-autocomplete li { + float:left; + clear:both; + width:100%; +} +.result-highlight { + font-weight:bold; +} +#search { + background-image:url('resources/glass.png'); + background-size:13px; + background-repeat:no-repeat; + background-position:2px 3px; + padding-left:20px; + position:relative; + right:-18px; + width:400px; +} +#reset { + background-color: rgb(255,255,255); + background-image:url('resources/x.png'); + background-position:center; + background-repeat:no-repeat; + background-size:12px; + border:0 none; + width:16px; + height:16px; + position:relative; + left:-4px; + top:-4px; + font-size:0px; +} +.watermark { + color:#545454; +} +.search-tag-desc-result { + font-style:italic; + font-size:11px; +} +.search-tag-holder-result { + font-style:italic; + font-size:12px; +} +.search-tag-result:target { + background-color:yellow; +} +.module-graph span { + display:none; + position:absolute; +} +.module-graph:hover span { + display:block; + margin: -100px 0 0 100px; + z-index: 1; +} +.inherited-list { + margin: 10px 0 10px 0; +} +section.description { + line-height: 1.4; +} +.summary section[class$="-summary"], .details section[class$="-details"], +.class-uses .detail, .serialized-class-details { + padding: 0px 20px 5px 10px; + border: 1px solid #ededed; + background-color: #f8f8f8; +} +.inherited-list, section[class$="-details"] .detail { + padding:0 0 5px 8px; + background-color:#ffffff; + border:none; +} +.vertical-separator { + padding: 0 5px; +} +ul.help-section-list { + margin: 0; +} +/* + * Indicator icon for external links. + */ +main a[href*="://"]::after { + content:""; + display:inline-block; + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); + background-size:100% 100%; + width:7px; + height:7px; + margin-left:2px; + margin-bottom:4px; +} +main a[href*="://"]:hover::after, +main a[href*="://"]:focus::after { + background-image:url('data:image/svg+xml; utf8, \ + \ + \ + '); +} + +/* + * Styles for user-provided tables. + * + * borderless: + * No borders, vertical margins, styled caption. + * This style is provided for use with existing doc comments. + * In general, borderless tables should not be used for layout purposes. + * + * plain: + * Plain borders around table and cells, vertical margins, styled caption. + * Best for small tables or for complex tables for tables with cells that span + * rows and columns, when the "striped" style does not work well. + * + * striped: + * Borders around the table and vertical borders between cells, striped rows, + * vertical margins, styled caption. + * Best for tables that have a header row, and a body containing a series of simple rows. + */ + +table.borderless, +table.plain, +table.striped { + margin-top: 10px; + margin-bottom: 10px; +} +table.borderless > caption, +table.plain > caption, +table.striped > caption { + font-weight: bold; + font-size: smaller; +} +table.borderless th, table.borderless td, +table.plain th, table.plain td, +table.striped th, table.striped td { + padding: 2px 5px; +} +table.borderless, +table.borderless > thead > tr > th, table.borderless > tbody > tr > th, table.borderless > tr > th, +table.borderless > thead > tr > td, table.borderless > tbody > tr > td, table.borderless > tr > td { + border: none; +} +table.borderless > thead > tr, table.borderless > tbody > tr, table.borderless > tr { + background-color: transparent; +} +table.plain { + border-collapse: collapse; + border: 1px solid black; +} +table.plain > thead > tr, table.plain > tbody tr, table.plain > tr { + background-color: transparent; +} +table.plain > thead > tr > th, table.plain > tbody > tr > th, table.plain > tr > th, +table.plain > thead > tr > td, table.plain > tbody > tr > td, table.plain > tr > td { + border: 1px solid black; +} +table.striped { + border-collapse: collapse; + border: 1px solid black; +} +table.striped > thead { + background-color: #E3E3E3; +} +table.striped > thead > tr > th, table.striped > thead > tr > td { + border: 1px solid black; +} +table.striped > tbody > tr:nth-child(even) { + background-color: #EEE +} +table.striped > tbody > tr:nth-child(odd) { + background-color: #FFF +} +table.striped > tbody > tr > th, table.striped > tbody > tr > td { + border-left: 1px solid black; + border-right: 1px solid black; +} +table.striped > tbody > tr > th { + font-weight: normal; +} +/** + * Tweak font sizes and paddings for small screens. + */ +@media screen and (max-width: 1050px) { + #search { + width: 300px; + } +} +@media screen and (max-width: 800px) { + #search { + width: 200px; + } + .top-nav, + .bottom-nav { + font-size: 11px; + padding-top: 6px; + } + .sub-nav { + font-size: 11px; + } + .about-language { + padding-right: 16px; + } + ul.nav-list li, + .sub-nav .nav-list-search { + padding: 6px; + } + ul.sub-nav-list li { + padding-top: 5px; + } + main { + padding: 10px; + } + .summary section[class$="-summary"], .details section[class$="-details"], + .class-uses .detail, .serialized-class-details { + padding: 0 8px 5px 8px; + } + body { + -webkit-text-size-adjust: none; + } +} +@media screen and (max-width: 500px) { + #search { + width: 150px; + } + .top-nav, + .bottom-nav { + font-size: 10px; + } + .sub-nav { + font-size: 10px; + } + .about-language { + font-size: 10px; + padding-right: 12px; + } +} diff --git a/target/site/apidocs/tag-search-index.js b/target/site/apidocs/tag-search-index.js new file mode 100644 index 0000000..f38b3cb --- /dev/null +++ b/target/site/apidocs/tag-search-index.js @@ -0,0 +1 @@ +tagSearchIndex = [{"l":"Serialized Form","h":"","u":"serialized-form.html"}];updateSearchResults(); \ No newline at end of file diff --git a/target/site/apidocs/type-search-index.js b/target/site/apidocs/type-search-index.js new file mode 100644 index 0000000..2401962 --- /dev/null +++ b/target/site/apidocs/type-search-index.js @@ -0,0 +1 @@ +typeSearchIndex = [{"p":"musichub.business","l":"Album"},{"l":"All Classes","u":"allclasses-index.html"},{"p":"musichub.business","l":"AudioBook"},{"p":"musichub.business","l":"AudioElement"},{"p":"musichub.business","l":"Category"},{"p":"musichub.business","l":"Genre"},{"p":"musichub.business","l":"Language"},{"p":"musichub.main","l":"Main"},{"p":"musichub.business","l":"MusicHub"},{"p":"musichub.business","l":"NoAlbumFoundException"},{"p":"musichub.business","l":"NoElementFoundException"},{"p":"musichub.business","l":"NoPlayListFoundException"},{"p":"musichub.business","l":"PlayList"},{"p":"musichub.business","l":"Song"},{"p":"musichub.util","l":"XMLHandler"}];updateSearchResults(); \ No newline at end of file diff --git a/target/spoteezer-0.1.0.jar b/target/spoteezer-0.1.0.jar index 99be000..2c80e1b 100644 Binary files a/target/spoteezer-0.1.0.jar and b/target/spoteezer-0.1.0.jar differ -- cgit v1.2.3