COMP2741/8714: Application Development
Assignment 2: GUI Implementation and Testing YouTube Trender
Submission Date Midnight, Wednesday, Week 14
You do NOT need a YouTube/Google account to complete and achieve a high mark for this assignment. You will only be required to read YouTube video data from a file.
You can do this assignment in pairs. You must let me know whom you are pairing with so that you can access a single code repository and so that you can be assessed, because only one submission is required.
The assignment is worth 25% of the overall topic mark. The 25% is broken down into three phases as discussed below.
The assignment is to build upon the command line application of Assignment 1 which was to read YouTube video data and process the data contained within them. This assignment will develop a graphical user interface to allow users to interact with YouTubeVideo data model and its functionality. As a reminder:
YouTube is a global video-sharing website headquartered in San Bruno, California, United States. The site allows users to upload, view, rate, share, and comment on videos. Available content includes video clips, TV clips, music videos, movie trailers, and other content such as video blogging, short original videos, and educational videos. User can also add a title and description to the videos and by examining the contents of and detecting which words appear frequently across titles and descriptions we can detect “trending topics.” See below for more information on YouTube and the YouTube Data API that generate the list of videos used in this assignment:
Wikipedia on Youtube: https://en.wikipedia.org/wiki/YouTube
YouTube Data API: https://developers.google.com/youtube/v3/getting-started YouTube Data API for listing videos: https://developers.google.com/youtube/v3/ docs/videos/list
It is your job to develop GUI that can detect the YouTube Trending Topics and provide unit tests.?
Assignment Phases Overview
The assignment is broken down into three phases:
1. JUnit Test and display YouTubeVideo, Parser, and Exception classes [20%]
2. JUnit Test and display Sorting of YouTubeVideo objects by different features [20%]
3. JUnit Test and display the indexing of YouTubeVideo, aka “Trending Topics” [20%]
Each phase will have marks allocated as follows:
• 40% JUnit Testing
• 60% Graphical User Interface Development
You must also submit a document that describes what you have done and any extra features that you have built for your application. This document, a PDF file, will be submitted via
• Application Description Document [15%]
Extension work (see below) [10%]
At the end of each phase, you should commit it to repository with the comment “Phase X” where X is the phase number 1, 2, or 3.
• Correct use of the repository [15%]
You will need to submit to the assignment submission box on FLO the revision number of your final commit for the assignment and the Application Description Document. See further below for more details.
Your code submission will be the contents of your repository.
Graphical User Interface Development
Below are example GUI development that you should aim for (at a minimum) for each phase of the assignment. You are supplied with a basic GUI from the repository code, but it is not connected to the underlying YouTube data model. It is your job to connect the data model to the user interface and then develop the user interface further through the different phases.
Figure 1: Example of Phase 1 GUI.
Figure 2: Example of Phase 2 GUI with YouTubeVideo sorting.
Figure 3: Example of Phase 3 GUI with YouTubeVideo indexing.
Create JUnit tests to verify that your code functions correctly for any input that you deem to be necessary for thorough and comprehensive testing. There is a starting Junit test for the YouTubeVideoParser class, but you need to finish it off and create unit tests for the other model classes (including video, parsing, exception, sorting and indexing). You may have already created some of these for Assignment 1, in which case you can use those plus any more that are required. You are provided with data files and the expected output that can be used in your unit tests. The tests will test the classes that you have been provided that represent the Videos and other pieces of data (e.g. words in the index, comparators, lists) and the functionality associated with them (sorting, find most used word, getting the title of a Video).
You are provided with a set of JSON files as part of the skeleton code in the “data” directory.
The testing outlined in this document is given as a guide.
You have been supplied with several JSON files as part of the skeleton code that contain different examples of the type of data contained in YouTube JSON files. Table 1 describes each file and Table 1: YouTube JSON Files
File name Description No. Videos
youtubedata.json A single video items in video query (mock data) 1
youtubedata_15_50.json 50 video items from a query from category 15 50
youtubedata_loremipsum.json 10 mock video items with useful descriptions and titles 10
youtudedata_indextest.json A single video item for testing indexing 1
youtubedata_singleitem.json A single video item not in a list 1
youtubedata_malformed.json A single video items in video query (mock data), but with an error 1
the number of records contained within them
The file “youtubedata_malformed.json” has one video item in a list but contains an error. This file is useful for test the detection of errors in your parser. For example, it may throw an exception indicating a problem with the provided .json file.
The file “youtubedata_singleitem.json” contains that data for a single video but not in a list. This is suitable for testing a class that represent video item data. The data is a JSONObject (enclosed between ““ and “”).
The “youtudedata_indextest.json” contains a fake title and description for testing your indexing. There should be 1 “ONE”, 2 “TWO”’s, 3 “THREE”’s, four “FOUR”’s, and five “FIVE”’s.
Along with the .json files are corresponding “_info.txt” files available on FLO. These files contain information about the video contained in the .json file and can be used to provide info for your testing (e.g. the number of videos). That is, given the .json file you should expect your program to be able to provide the information contained in the “_info.txt” file.
The sorting and word counts in the “_info.txt” files closely follow the algorithm in the assignment1 specification.
• The word count includes repeats of the word in the text of one message
– e.g. text:”aaa aaa” ? count for “aaa” is 2
Application description document [up to 10%]
You should write a brief document to describe the features of your application. It is to be submitted through FLO as a PDF file. You can include text from this document and but it is not a copy of your Javadoc.
This document can be thought of as an informal user guide and can include screen shots of the code and its output. You can describe the demonstration and test code. If it is not submitted, then you will receive 0 marks for this component. It will be difficult to achieve a HD without this document.
A skeleton IntelliJ project is provided to get you started (you can use your own code if you wish, you will just have to update the repository with your code instead of checking out the skeleton). Either way, in order to get the project you need to checkout the project from a Subversion (SVN) repository that is hosted on the College servers. You will have your own directory on a shared repository. The repository location is:
Where the FAN is your university FAN without the brackets. To access the repository you need to enter you university FAN and password. You can browse the repository using an internet browser. However, it is expected that you will use IntelliJ to access the repository (as in Figure 4, Figure 6 and Figure 7) for checking out and performing updates and commits.
This is accessible both on and off campus and it is expected that you will commit often to the repository.
Figure 4 and Figure 5 are both viable for getting files from the repository, it just depends on where you begin. NOTE: see the video that accompanies the figures to see how this is done.
Figure 4: Accessing the subversion checkout menu option Figure 5: Accessing the repository via
in IntelliJ the New Project screen
Figure 6: The result of checking out from the repository
If you are working in a pair you will need to let Carl know so that access can be given to your partner’s repository. Please see additional documentation on FLO. You will only need to access one repository to complete the assignment (see additional documentation on FLO).
Figure 7: Checking out the subversion repository
Figure 8: Authenticating. Here the username is “blog9999”, but you would use your own University FAN.
You can then commit and update from the repository as you see fit (e.g. at the end of each phase). The markers will also have access to this repository for assessment purposes.
How To: Get a High Distinction
Completing all the tasks outlined in the phases will probably result in a mark in the range CR-DN. To achieve a HD, “The student would normally have attained an in-depth knowledge of and have consistently demonstrated a high level of proficiency...with original and creative thinking.” Thus, you need to complete the minimum and also extend beyond that. Areas where this can be achieved in this assignment are
• more comprehensive unit testing
• better graphical user interface design (showing the videos!).
• more extensive YouTubeVideo class design (e.g. incorporate other JSON elements)
• sorting by more features
• searching your YouTubeVideo list
• different ways to index the title/descriptions (e.g. phrases ( 1 word), stop word removal, sentiment)
• better cleaning of the words used in the index (e.g. make “twinkle” and “twinkle,” the same)
• temporal analysis of trending topics
These additional features must to be outlined in your Application Description Document so that they can be assessed. You need not do all the above examples to gain a HD, they are just different options.
Your assignment must still pass the required unit tests.
HOW TO submit the code and revision number
On your final commit to the repository you need to take note of what the revision number is. You can see this in the versioning window in IntelliJ or do a “Subversion ? Search History” and see what the final commit revision number is. Once you have that you can submit your assignment and enter the final revision number along with your PDF to the assignment submission box on FLO. The final revision number goes into the Online text entry, in Figure 9 the revision number is 1234
Figure 9: Example revision number submission on FLO