Media Library
Your company is bidding for a contract to develop a media library consisting of songs, albums andplaylists for anonlinemusic store. You are required to develop a prototype in the Java programming language that would help win the contract. Your solution should consist of the following classes:
Song (consisting of the following properties / attributes)
· - Title of the song
· - Artist of the song
· - Release year for the song
· - Catalog Number (a unique identifier for internal tracking purposes)
· - Duration of the song (in minutes and seconds)
· - Number of times the song has been played
Playlist(consisting of the following properties/attributes)
· - Name of theplaylist
· - The date theplaylistwas created (should be automatically generatedfrom theactual current date)
· - The date it was last updated (this would be the date a song was last added or removed – see next section)
· - Collection of songs on theplaylist
Playlistneed the following functionality:
· - The ability to add song toplaylist
· - The ability to remove song fromplaylist
· - The ability to display the contents of theplaylist
· - The ability to sort theplaylistby song title, artist, year, and numberof timesplayed
The user should be able to perform the following tasks in a menu-driven system:
1. Add song toplaylist
2. Remove song fromplaylist
3. Given the name of an artist, list all songs by the artist in alphabetical order by song title
4. List all songs by in descending order by number of downloads
5. Given the name of aplaylist, list all songs inplaylist
6. Given the title of a song, list theplaylist(s) it is in (a song can be in more than oneplaylistor in none at all)
7. Browse aplaylistsorted by title, artist, year, and number of times played
Your program should have input validation, error-checking and handling.
Remember that your company does not have this contract yet, but is bidding for it and competing with others, so your solution should be as robust and accurate as possible. The contract will be awarded based on program correctness, user friendliness and modularity.