1
0
Fork 0

JSON parsing now implemented. Let's try!

master
Ambrose Chua 2015-10-14 16:20:12 +08:00
parent bf8275a78b
commit 241b361c9a
12 changed files with 435 additions and 220 deletions

View File

@ -6,21 +6,18 @@
</artifacts-to-build>
</component>
<component name="ChangeListManager">
<list default="true" id="cdb932d9-7e58-4d94-93a9-e7b232ef17da" name="Default" comment="TrackList">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/io/makerforce/undefined/model/Artist.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/io/makerforce/undefined/view/CoverListController.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/io/makerforce/undefined/model/Item.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/io/makerforce/undefined/model/ItemList.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/io/makerforce/undefined/model/Library.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/io/makerforce/undefined/util/TestClasses.java" />
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/io/makerforce/undefined/view/coverlist.fxml" />
<change type="MOVED" beforePath="$PROJECT_DIR$/src/io/makerforce/undefined/model/Playlist.java" afterPath="$PROJECT_DIR$/src/io/makerforce/undefined/model/Album.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/io/makerforce/undefined/view/CoverItemController.java" afterPath="$PROJECT_DIR$/src/io/makerforce/undefined/view/CoverItemController.java" />
<list default="true" id="cdb932d9-7e58-4d94-93a9-e7b232ef17da" name="Default" comment="#how2[[[null (null, null), null (null, null), null (null, null), null (null, null)], [null (null, null), null (null, null), null (null, null), null (null, null)]], [[], []]]&#10;">
<change type="NEW" beforePath="" afterPath="$PROJECT_DIR$/src/io/makerforce/undefined/util/LibraryManager.java" />
<change type="MOVED" beforePath="$PROJECT_DIR$/src/io/makerforce/undefined/model/Util.java" afterPath="$PROJECT_DIR$/src/io/makerforce/undefined/util/Util.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/io/makerforce/undefined/model/Album.java" afterPath="$PROJECT_DIR$/src/io/makerforce/undefined/model/Album.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/io/makerforce/undefined/model/Artist.java" afterPath="$PROJECT_DIR$/src/io/makerforce/undefined/model/Artist.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/io/makerforce/undefined/view/CoverListController.java" afterPath="$PROJECT_DIR$/src/io/makerforce/undefined/view/CoverListController.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/io/makerforce/undefined/view/InterfaceController.java" afterPath="$PROJECT_DIR$/src/io/makerforce/undefined/view/InterfaceController.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/io/makerforce/undefined/model/ItemList.java" afterPath="$PROJECT_DIR$/src/io/makerforce/undefined/model/ItemList.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/io/makerforce/undefined/model/Library.java" afterPath="$PROJECT_DIR$/src/io/makerforce/undefined/model/Library.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/io/makerforce/undefined/util/TestClasses.java" afterPath="$PROJECT_DIR$/src/io/makerforce/undefined/util/TestClasses.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/io/makerforce/undefined/model/Track.java" afterPath="$PROJECT_DIR$/src/io/makerforce/undefined/model/Track.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/io/makerforce/undefined/view/TrackListController.java" afterPath="$PROJECT_DIR$/src/io/makerforce/undefined/view/TrackListController.java" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/io/makerforce/undefined/view/interface.fxml" afterPath="$PROJECT_DIR$/src/io/makerforce/undefined/view/interface.fxml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/io/makerforce/undefined/view/tracklist.fxml" afterPath="$PROJECT_DIR$/src/io/makerforce/undefined/view/tracklist.fxml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/src/io/makerforce/undefined/view/coverlist.fxml" afterPath="$PROJECT_DIR$/src/io/makerforce/undefined/view/coverlist.fxml" />
<change type="MODIFICATION" beforePath="$PROJECT_DIR$/.idea/workspace.xml" afterPath="$PROJECT_DIR$/.idea/workspace.xml" />
</list>
<ignored path="JavaFxApplication.iws" />
@ -81,32 +78,7 @@
<favorites_list name="JavaFxApplication" />
</component>
<component name="FileEditorManager">
<leaf>
<file leaf-file-name="Track.java" pinned="false" current-in-tab="false">
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/model/Track.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="37" column="4" selection-start-line="37" selection-start-column="4" selection-end-line="37" selection-end-column="4" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
<file leaf-file-name="TestClasses.java" pinned="false" current-in-tab="true">
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/util/TestClasses.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.8659794">
<caret line="30" column="0" selection-start-line="30" selection-start-column="0" selection-end-line="30" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
</file>
</leaf>
<leaf />
</component>
<component name="FileTemplateManagerImpl">
<option name="RECENT_TEMPLATES">
@ -158,23 +130,28 @@
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/view/coveritem.fxml" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/view/tracklist.fxml" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/view/interface.fxml" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/view/coverlist.fxml" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/model/ItemView.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/model/ItemCollection.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/view/TrackListController.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/view/CoverItemController.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/model/Item.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/model/Playlist.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/view/InterfaceController.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/view/CoverListController.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/model/ItemList.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/model/AlbumList.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/model/TrackList.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/model/Album.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/model/Artist.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/util/Util.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/view/JSONLibrary.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/model/Item.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/view/coverlist.fxml" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/view/CoverListController.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/util/JSONLibrary.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/model/ItemList.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/util/TestClasses.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/model/JSONLibrary.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/util/LibraryManager.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/model/Library.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/model/Track.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/util/TestClasses.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/model/Artist.java" />
<option value="$PROJECT_DIR$/src/io/makerforce/undefined/model/Album.java" />
</list>
</option>
</component>
@ -241,7 +218,9 @@
<sortByType />
</navigator>
<panes>
<pane id="Scope" />
<pane id="PackagesPane" />
<pane id="Scratches" />
<pane id="ProjectPane">
<subPane>
<PATH>
@ -360,8 +339,6 @@
</PATH>
</subPane>
</pane>
<pane id="Scope" />
<pane id="Scratches" />
</panes>
</component>
<component name="PropertiesComponent">
@ -730,7 +707,8 @@
<workItem from="1444622061126" duration="548000" />
<workItem from="1444622643506" duration="749000" />
<workItem from="1444628999813" duration="21183000" />
<workItem from="1444700132845" duration="7692000" />
<workItem from="1444700132845" duration="8032000" />
<workItem from="1444804563726" duration="6109000" />
</task>
<task id="LOCAL-00001" summary="Initial Commit">
<created>1444218455154</created>
@ -798,11 +776,23 @@
<option name="project" value="LOCAL" />
<updated>1444693502053</updated>
</task>
<option name="localTasksCounter" value="12" />
<task id="LOCAL-00012" summary="Random commit&#10;">
<created>1444803976240</created>
<option name="number" value="00012" />
<option name="project" value="LOCAL" />
<updated>1444803976240</updated>
</task>
<task id="LOCAL-00013" summary="#HowToDeprecateYourClassesYouWrote1SecondAgo">
<created>1444807971062</created>
<option name="number" value="00013" />
<option name="project" value="LOCAL" />
<updated>1444807971062</updated>
</task>
<option name="localTasksCounter" value="14" />
<servers />
</component>
<component name="TimeTrackingManager">
<option name="totallyTimeSpent" value="60260000" />
<option name="totallyTimeSpent" value="66709000" />
</component>
<component name="TodoView">
<todo-panel id="selected-file">
@ -819,16 +809,16 @@
<layout>
<window_info id="Palette" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="4" side_tool="false" content_ui="tabs" />
<window_info id="TODO" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32872504" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.23142858" sideWeight="0.5" order="13" side_tool="false" content_ui="tabs" />
<window_info id="Messages" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.23142858" sideWeight="0.5" order="13" side_tool="false" content_ui="tabs" />
<window_info id="Palette&#9;" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Event Log" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32931423" sideWeight="0.5" order="8" side_tool="false" content_ui="tabs" />
<window_info id="Application Servers" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="10" side_tool="false" content_ui="tabs" />
<window_info id="Maven Projects" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="6" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.20045215" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.26714286" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.32714286" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Version Control" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.2" sideWeight="0.5" order="9" side_tool="false" content_ui="tabs" />
<window_info id="Run" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.26714286" sideWeight="0.5" order="2" side_tool="false" content_ui="tabs" />
<window_info id="Terminal" active="false" anchor="bottom" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.25285715" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Designer" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="7" side_tool="false" content_ui="tabs" />
<window_info id="Project" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.20996979" sideWeight="0.6703755" order="0" side_tool="false" content_ui="combo" />
<window_info id="Project" active="true" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="true" weight="0.20996979" sideWeight="0.6703755" order="0" side_tool="false" content_ui="combo" />
<window_info id="Database" active="false" anchor="right" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
<window_info id="Structure" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.24982457" sideWeight="0.5" order="1" side_tool="false" content_ui="tabs" />
<window_info id="UI Designer" active="false" anchor="left" auto_hide="false" internal_type="DOCKED" type="DOCKED" visible="false" weight="0.33" sideWeight="0.5" order="3" side_tool="false" content_ui="tabs" />
@ -868,7 +858,9 @@
<MESSAGE value="Cleanup" />
<MESSAGE value="Merge remote-tracking branch 'origin/master'&#10;" />
<MESSAGE value="TrackList" />
<option name="LAST_COMMIT_MESSAGE" value="TrackList" />
<MESSAGE value="Random commit&#10;" />
<MESSAGE value="#HowToDeprecateYourClassesYouWrote1SecondAgo" />
<option name="LAST_COMMIT_MESSAGE" value="#HowToDeprecateYourClassesYouWrote1SecondAgo" />
<option name="OPTIMIZE_IMPORTS_BEFORE_PROJECT_COMMIT" value="true" />
<option name="REFORMAT_BEFORE_PROJECT_COMMIT" value="true" />
<option name="REARRANGE_BEFORE_PROJECT_COMMIT" value="true" />
@ -884,24 +876,6 @@
<option name="FILTER_TARGETS" value="false" />
</component>
<component name="editorHistoryManager">
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/model/ItemList.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="2" column="22" selection-start-line="2" selection-start-column="22" selection-end-line="2" selection-end-column="22" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/model/Track.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="3" column="0" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/view/InterfaceController.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
@ -1147,191 +1121,231 @@
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/README.md">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.25398406">
<caret line="17" column="0" selection-start-line="17" selection-start-column="0" selection-end-line="17" selection-end-column="0" />
</state>
</provider>
<provider editor-type-id="MultiMarkdownFxHtmlEditor">
<state />
</provider>
<provider editor-type-id="MultiMarkdownFxPreviewEditor">
<state />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/view/tracklist.fxml">
<provider editor-type-id="JavaFX-Scene-Builder">
<state />
</provider>
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-0.0">
<caret line="0" column="0" selection-start-line="0" selection-start-column="0" selection-end-line="0" selection-end-column="0" />
<folding />
</state>
</provider>
<provider editor-type-id="JavaFX-Scene-Builder">
<state />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/view/coveritem.fxml">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-5.172414">
<caret line="10" column="53" selection-start-line="10" selection-start-column="53" selection-end-line="10" selection-end-column="53" />
<folding>
<marker date="1444660515000" expanded="true" signature="753:1746" placeholder="..." />
<marker date="1444660515000" expanded="true" signature="1060:1690" placeholder="..." />
<marker date="1444660515000" expanded="true" signature="1150:1230" placeholder="..." />
</folding>
</state>
</provider>
<provider editor-type-id="JavaFX-Scene-Builder">
<state />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/view/interface.fxml">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-3.6206896">
<caret line="7" column="0" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
<folding />
</state>
</provider>
<provider editor-type-id="JavaFX-Scene-Builder">
<state />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/Main.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.46391752">
<caret line="16" column="13" selection-start-line="16" selection-start-column="13" selection-end-line="16" selection-end-column="13" />
<folding>
<element signature="imports" expanded="true" />
<element signature="imports" expanded="false" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/view/CoverItemController.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.7589286">
<caret line="42" column="19" selection-start-line="42" selection-start-column="19" selection-end-line="42" selection-end-column="19" />
<folding>
<element signature="e#1279#1280#0" expanded="true" />
<element signature="e#1329#1330#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/model/Util.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.13392857">
<caret line="6" column="36" selection-start-line="6" selection-start-column="36" selection-end-line="6" selection-end-column="36" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/view/coverlist.fxml">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.5263158">
<caret line="16" column="23" selection-start-line="16" selection-start-column="23" selection-end-line="16" selection-end-column="23" />
<folding />
</state>
</provider>
<provider editor-type-id="JavaFX-Scene-Builder">
<state />
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/view/CoverListController.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.4329897">
<caret line="14" column="20" selection-start-line="14" selection-start-column="20" selection-end-line="14" selection-end-column="20" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/view/InterfaceController.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.7113402">
<caret line="99" column="34" selection-start-line="99" selection-start-column="34" selection-end-line="99" selection-end-column="34" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/view/TrackListController.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.71340203">
<caret line="43" column="12" selection-start-line="43" selection-start-column="12" selection-end-line="43" selection-end-column="12" />
<folding>
<element signature="e#1332#1333#0" expanded="true" />
<element signature="e#1370#1371#0" expanded="true" />
<element signature="e#1406#1407#0" expanded="true" />
<element signature="e#1440#1441#0" expanded="true" />
<element signature="e#1236#1237#0" expanded="true" />
<element signature="e#1274#1275#0" expanded="true" />
<element signature="e#1310#1311#0" expanded="true" />
<element signature="e#1344#1345#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/util/Util.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="6" column="36" selection-start-line="6" selection-start-column="36" selection-end-line="6" selection-end-column="36" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/view/CoverListController.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="3" column="0" selection-start-line="3" selection-start-column="0" selection-end-line="3" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/view/interface.fxml">
<provider editor-type-id="JavaFX-Scene-Builder">
<state />
</provider>
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-0.51724136">
<caret line="7" column="0" selection-start-line="7" selection-start-column="0" selection-end-line="7" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/view/coverlist.fxml">
<provider editor-type-id="JavaFX-Scene-Builder">
<state />
</provider>
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-2.586207">
<caret line="5" column="8" selection-start-line="5" selection-start-column="8" selection-end-line="5" selection-end-column="8" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/view/CoverItemController.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.74545455">
<caret line="42" column="19" selection-start-line="42" selection-start-column="19" selection-end-line="42" selection-end-column="19" />
<folding>
<element signature="e#1279#1280#0" expanded="true" />
<element signature="e#1329#1330#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/view/coveritem.fxml">
<provider editor-type-id="JavaFX-Scene-Builder">
<state />
</provider>
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.38626608">
<caret line="12" column="30" selection-start-line="12" selection-start-column="30" selection-end-line="12" selection-end-column="30" />
<folding>
<marker date="1444660515000" expanded="true" signature="-1:-1" placeholder="..." />
<marker date="1444660515000" expanded="true" signature="-1:-1" placeholder="..." />
<marker date="1444660515000" expanded="true" signature="-1:-1" placeholder="..." />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/model/ItemList.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.5294118">
<caret line="20" column="0" selection-start-line="20" selection-start-column="0" selection-end-line="20" selection-end-column="0" />
<folding>
<element signature="e#578#579#0" expanded="true" />
<element signature="e#618#619#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/model/Item.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.24742268">
<caret line="8" column="0" selection-start-line="8" selection-start-column="0" selection-end-line="8" selection-end-column="0" />
<state vertical-scroll-proportion="0.29411766">
<caret line="10" column="31" selection-start-line="10" selection-start-column="31" selection-end-line="10" selection-end-column="31" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/model/JSONLibrary.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.31015038">
<caret line="11" column="0" selection-start-line="11" selection-start-column="0" selection-end-line="11" selection-end-column="0" />
<folding>
<element signature="e#162#163#0" expanded="true" />
<element signature="e#186#187#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/README.md">
<provider editor-type-id="MultiMarkdownFxHtmlEditor">
<state />
</provider>
<provider editor-type-id="MultiMarkdownFxPreviewEditor">
<state />
</provider>
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.5301455">
<caret line="17" column="0" selection-start-line="17" selection-start-column="0" selection-end-line="17" selection-end-column="0" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/util/TestClasses.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.43333334">
<caret line="22" column="29" selection-start-line="22" selection-start-column="29" selection-end-line="22" selection-end-column="29" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/model/Library.java">
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/model/Track.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.06185567">
<caret line="2" column="37" selection-start-line="2" selection-start-column="37" selection-end-line="2" selection-end-column="37" />
<folding />
<state vertical-scroll-proportion="0.29411766">
<caret line="24" column="0" selection-start-line="24" selection-start-column="0" selection-end-line="24" selection-end-column="0" />
<folding>
<element signature="imports" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/model/ItemList.java">
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/model/Album.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.10309278">
<caret line="10" column="27" selection-start-line="10" selection-start-column="27" selection-end-line="10" selection-end-column="27" />
<state vertical-scroll-proportion="0.38235295">
<caret line="13" column="12" selection-start-line="13" selection-start-column="12" selection-end-line="13" selection-end-column="12" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#209#210#0" expanded="true" />
<element signature="e#232#233#0" expanded="true" />
<element signature="e#296#297#0" expanded="true" />
<element signature="e#341#342#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/model/Artist.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.06185567">
<caret line="2" column="37" selection-start-line="2" selection-start-column="37" selection-end-line="2" selection-end-column="37" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/model/Album.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.06185567">
<caret line="2" column="13" selection-start-line="2" selection-start-column="13" selection-end-line="2" selection-end-column="13" />
<folding />
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/model/Track.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.0">
<caret line="37" column="4" selection-start-line="37" selection-start-column="4" selection-end-line="37" selection-end-column="4" />
<state vertical-scroll-proportion="0.4117647">
<caret line="14" column="4" selection-start-line="14" selection-start-column="4" selection-end-line="14" selection-end-column="4" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#211#212#0" expanded="true" />
<element signature="e#234#235#0" expanded="true" />
<element signature="e#284#285#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/util/TestClasses.java">
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/model/Library.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.8659794">
<caret line="30" column="0" selection-start-line="30" selection-start-column="0" selection-end-line="30" selection-end-column="0" />
<state vertical-scroll-proportion="0.2647059">
<caret line="9" column="15" selection-start-line="9" selection-start-column="15" selection-end-line="9" selection-end-column="15" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#214#215#0" expanded="true" />
<element signature="e#237#238#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/util/LibraryManager.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="-1.5882353">
<caret line="28" column="63" selection-start-line="28" selection-start-column="63" selection-end-line="28" selection-end-column="63" />
<folding>
<element signature="imports" expanded="true" />
<element signature="e#1820#1821#0" expanded="true" />
<element signature="e#1851#1852#0" expanded="true" />
<element signature="e#3710#3711#0" expanded="true" />
<element signature="e#3750#3751#0" expanded="true" />
<element signature="e#3786#3787#0" expanded="true" />
<element signature="e#3821#3822#0" expanded="true" />
</folding>
</state>
</provider>
</entry>
<entry file="file://$PROJECT_DIR$/src/io/makerforce/undefined/view/InterfaceController.java">
<provider selected="true" editor-type-id="text-editor">
<state vertical-scroll-proportion="0.33529413">
<caret line="85" column="76" selection-start-line="85" selection-start-column="76" selection-end-line="85" selection-end-column="76" />
<folding />
</state>
</provider>
</entry>
</component>
<component name="masterDetails">
<states>

View File

@ -1,5 +1,30 @@
package io.makerforce.undefined.model;
public class Album extends ItemList {
import javafx.collections.ObservableList;
import javafx.scene.image.Image;
import org.json.JSONObject;
public class Album extends ItemList<Track> {
public Album() {
super();
}
public Album(Image picture, String title, String artist) {
super(picture, title, artist);
}
public Album(JSONObject o, String albumName, String artistName) {
this(new Image(o.getString("picture")), albumName, artistName);
o.getJSONObject("tracks").keySet().forEach((key) -> {
Track a = new Track(o.getJSONObject("tracks").getJSONObject(key)); //, key, albumName, artistName);
super.getItems().add(a);
});
}
public ObservableList<Track> getTracks() {
return this.getItems();
}
}

View File

@ -1,6 +1,29 @@
package io.makerforce.undefined.model;
public class Artist extends ItemList {
import javafx.collections.ObservableList;
import javafx.scene.image.Image;
import org.json.JSONObject;
public class Artist extends ItemList<Album> {
public Artist() {
super();
}
public Artist(Image picture, String title) {
super(picture, title);
}
public Artist(JSONObject o, String artistName) {
this(new Image(o.getString("picture")), artistName);
o.getJSONObject("albums").keySet().forEach((key) -> {
Album a = new Album(o.getJSONObject("albums").getJSONObject(key), key, artistName);
super.getItems().add(a);
});
}
public ObservableList<Album> getAlbums() {
return this.getItems();
}
}

View File

@ -4,13 +4,13 @@ import javafx.collections.FXCollections;
import javafx.collections.ObservableList;
import javafx.scene.image.Image;
public class ItemList implements Item {
public class ItemList<T> implements Item {
private Image picture;
private String title;
private String subtitle;
private ObservableList<Item> items = FXCollections.observableArrayList();
private ObservableList<T> items = FXCollections.observableArrayList();
public ItemList(Image picture, String title, String subtitle) {
this.picture = picture;
@ -38,8 +38,12 @@ public class ItemList implements Item {
return subtitle;
}
public ObservableList<Item> getItems() {
public ObservableList<T> getItems() {
return items;
}
public String toString() {
return items.toString();
}
}

View File

@ -1,5 +1,24 @@
package io.makerforce.undefined.model;
public class Library extends ItemList {
import javafx.collections.ObservableList;
import org.json.JSONObject;
public class Library extends ItemList<Artist> {
public Library() {
super();
}
public Library(JSONObject o) {
this();
o.getJSONObject("artists").keySet().forEach((key) -> {
Artist a = new Artist(o.getJSONObject("artists").getJSONObject(key), key);
super.getItems().add(a);
});
}
public ObservableList<Artist> getArtists() {
return this.getItems();
}
}

View File

@ -21,9 +21,19 @@ public class Track implements Item {
private int totalTracks;
private String[] genre;
public Track(JSONObject track) throws MalformedURLException {
public Track() {
}
public Track(JSONObject track) {
this();
title = track.getString("title");
file = new URL(track.getString("file"));
try {
file = new URL(track.getString("file"));
} catch (MalformedURLException e) {
e.printStackTrace();
file = null;
}
picture = new Image(track.getString("picture"));
artist = track.getString("artist");
album = track.getString("album");
@ -33,10 +43,6 @@ public class Track implements Item {
genre = (String[]) StreamSupport.stream(Spliterators.spliteratorUnknownSize(track.getJSONArray("genre").iterator(), Spliterator.ORDERED), false).toArray();
}
public Track() {
}
public Image getPicture() {
return picture;
}
@ -77,5 +83,9 @@ public class Track implements Item {
return genre;
}
public String toString() {
return title + " (" + artist + ", " + album + ")";
}
}

View File

@ -0,0 +1,120 @@
package io.makerforce.undefined.util;
import io.makerforce.undefined.model.Library;
import javafx.beans.property.SimpleObjectProperty;
import org.json.JSONObject;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.net.HttpURLConnection;
import java.net.MalformedURLException;
import java.net.URL;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.ScheduledThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
public class LibraryManager extends SimpleObjectProperty<LibraryManager.LibraryManagerState> {
public static final LibraryManagerState EMPTY = new LibraryManagerState("empty");
public static final LibraryManagerState UPDATING = new LibraryManagerState("updating");
public static final LibraryManagerState ERROR = new LibraryManagerState("error");
public static final LibraryManagerState READY = new LibraryManagerState("ready");
private URL endPoint;
private Library l;
private ScheduledExecutorService scheduledExecutorService = null;
private boolean hasScheduled = false;
public LibraryManager() {
this.set(EMPTY);
try {
this.endPoint = new URL("http://ambrose.makerforce.io:8080/");
} catch (MalformedURLException e) {
e.printStackTrace(); // THIS SHOULD NEVER HAPPEN
}
}
public LibraryManager(URL endPoint) {
this.set(EMPTY);
this.endPoint = endPoint;
if (!endPoint.toString().endsWith("/")) {
try {
endPoint = new URL(endPoint.toString() + "/");
} catch (MalformedURLException e) {
e.printStackTrace(); // ALSO SHOULD NEVER HAPPEN
}
}
}
public URL getEndPoint() {
return endPoint;
}
public void update() {
new Thread(() -> {
try {
this.set(UPDATING);
HttpURLConnection con = (HttpURLConnection) endPoint.openConnection();
con.setRequestMethod("GET");
con.setRequestProperty("User-Agent", "Mozilla/5.0");
con.setRequestProperty("X-Undefined-Client", "JavaFX/0.0.2");
int responseCode = con.getResponseCode();
System.out.println("Response Code: " + responseCode);
BufferedReader in = new BufferedReader(
new InputStreamReader(con.getInputStream()));
String inputLine;
StringBuilder response = new StringBuilder();
while ((inputLine = in.readLine()) != null) {
response.append(inputLine);
}
in.close();
JSONObject obj = new JSONObject(response.toString());
l = new Library(obj);
this.set(READY);
} catch (IOException e) {
e.printStackTrace();
this.set(ERROR);
}
}).run();
}
public void schedule() {
if (scheduledExecutorService == null) {
scheduledExecutorService = new ScheduledThreadPoolExecutor(1);
scheduledExecutorService.scheduleAtFixedRate(() -> {
this.update();
}, 0, 60, TimeUnit.SECONDS);
} else {
throw new Error("Updates are already scheduled");
}
}
public void unSchedule() {
scheduledExecutorService.shutdownNow();
scheduledExecutorService = null;
}
public static final class LibraryManagerState {
private final String text;
public LibraryManagerState(String text) {
this.text = text;
}
public String toString() {
return text;
}
}
}

View File

@ -10,6 +10,7 @@ import java.net.MalformedURLException;
public class TestClasses {
public static void main(String[] args) throws MalformedURLException {
Library l = new Library();
Album a1 = new Album();
@ -27,6 +28,9 @@ public class TestClasses {
r2.getItems().addAll(a3, a4);
l.getItems().addAll(r1, r2);
System.out.println(l.toString()); // Should print [[[null (null, null), null (null, null), null (null, null), null (null, null)], [null (null, null), null (null, null), null (null, null), null (null, null)]], [[], []]]
}
}

View File

@ -1,4 +1,4 @@
package io.makerforce.undefined.model;
package io.makerforce.undefined.util;
import javafx.util.Duration;

View File

@ -1,7 +1,6 @@
package io.makerforce.undefined.view;
import io.makerforce.undefined.model.ItemList;
import javafx.fxml.FXML;
import javafx.fxml.FXMLLoader;
import javafx.scene.layout.FlowPane;
@ -9,13 +8,10 @@ import java.io.IOException;
public class CoverListController extends FlowPane {
@FXML
private FlowPane flowPane;
private ItemList itemList;
public CoverListController() {
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("tracklist.fxml"));
FXMLLoader fxmlLoader = new FXMLLoader(getClass().getResource("coverlist.fxml"));
fxmlLoader.setRoot(this);
fxmlLoader.setController(this);
try {

View File

@ -1,6 +1,6 @@
package io.makerforce.undefined.view;
import io.makerforce.undefined.model.Util;
import io.makerforce.undefined.util.Util;
import javafx.application.Platform;
import javafx.beans.property.BooleanProperty;
import javafx.beans.property.SimpleBooleanProperty;

View File

@ -3,7 +3,7 @@
<?import javafx.geometry.Insets?>
<?import javafx.scene.layout.FlowPane?>
<fx:root xmlns:fx="http://javafx.com/fxml/1" type="javafx.scene.layout.FlowPane" xmlns="http://javafx.com/javafx/8.0.40"
fx:id="flowPane" alignment="TOP_CENTER" columnHalignment="CENTER" hgap="7.0"
alignment="TOP_CENTER" columnHalignment="CENTER" hgap="7.0"
vgap="7.0">
<children>