CPSC 330

From MWCSWiki

Jump to: navigation, search


Contents

UNDER COSTRUCTION, PLEASE SEE THIS POST IN RESERVE COPY


CLICK HERE


Final Exam Info

  • During the final exam each student will present the portion of the project for which he had responsibility. Each will give a 5-10 minute talk and demonstration regarding their work.

Additionally, each student will turn in materials as specified on Project Description and evaluation


Group Project

A screen capture of the media player, JTrax.

Downloads


Task List

  • March 23, 2009
    • GUI (What we want this to look like.)
    • Desktop application (for now)
      • Possibly use .jsps to display on the web.
    • Methods to Integrate Pieces
    • Identify needed libraries
    • Document ALL code
    • Identify all file types we want to support.
    • Write Narratives explaining how this will be used.
      • Due Monday March 30th: 2 page paper on how this application will be used.
  • April 17, 2009
    • Group Tasks
    • Daniel
      • <s>Finish playlist functionality</s>
        • <s>Complete serizialization for playlist</s>
        • <s>Meaningful exception catches</s>
        • <s>Ability to open entire folder</s>
    • Matt Martin
      • <s>pause</s>
      • volume
      • <s>options</s>
      • <s>search</s>
      • <s>make slider control track position</s>
      • <s>open multiple playlists at once, create/save/open playlist libraries</s>
      • <s>repeat option, continuous play</s>
      • <s>improve info display</s>
      • <s>improve skip functions</s>


Goal

Media player allows for

  • individual collections
  • share collections
  • comment on collections


Links


Libraries


Assignments

Monday, March 16, 2009

Matt Martin will come up with attributes of


Brian Hall will come up with attributes of


Matt Goodreau will come up with attributes of


Monday, March 23, 2009


Features

Daniel's Ideas

  • rate collections
  • create, modify, and delete playlists
  • PARTY SHUFFLEZ!!1 (randomly selects 10 media files from collection)
  • top played media list
  • recently added media list
  • always on top option
  • mini view/full view option
  • visualizer?
  • multiple views for libraries (list, album cover, etc.)


Matt Martin's Ideas

  • MultimediaFactory class that creates the appropriate multimedia object based on the file extension passed to it
    • Factory pattern
    • Strategy pattern
      • Multimedia > Audio, Image, Video, etc.
  • collective online log of subscribers' multimedia playing history
    • like a combination of Twitter's public timeline and Last.fm's scrobbling
    • Observer pattern
  • mixed-type playlists (music, videos, and pictures in one list)


Matt Goodreau's Ideas

  • Allow users to downrank or up rank comments to remove unuseful/hateful comments and to emphasize helpful/good comments
  • Design with modalization in mind, like face books add-ons, not only will his allow easier time adding new things, allows for use to create our indivial tasks in this


Brian's Ideas


Design

MediaPlayer

Screen capture of the media player demo's GUI
GUI

The GUI is composed of a series of JPanels containing a JTable used to display the playlist, an ImageIcon attached to a JLabel used to display pictures, JButtons for adding, deleting, and displaying information of multimedia items, and a control panel with buttons for playing, pausing, stopping, and skipping audio and video items in the selected playlist.


Multimedia UML diagram

Multimedia

Multimedia will be an abstract class which encapsulates the data of an object that can be played and/or displayed by the media player. It will contain fields for standard metadata of media files like name, album, artist, length, genre, play count, and rating. It also contains a file object so the media player can keep track of it. Multimedia will implement Serializable so it can be saved as part of a playlist, and Comparable so it can be compared to other Multimedia objects when its playlist is sorted. It will contain accessor and mutator methods for its instance variables, as well as a getType method which returns the file name's extension. The getLength and getDimensions methods will be abstract since they will vary between subclasses. It will also have a comment method which will add a comment object to an ArrayList of comments by other users. Multimedia objects will not be constructed directly by the player, but rather with a MultimediaFactory.

Audio

Audio will be a subclass of Multimedia. It will be an abstraction of an audio file played by the media player. It has an Image field called artwork which can be used to store a song's album cover. It will have an accessor and a mutator for the artwork so it can be displayed and changed dynamically by the user. Audio will override the getLength to specify how to retrive the file's length and to indicate that audio cannot have dimensions.

  • Link to Brian's Audio Class here
    • You must go to JavaZoom and down load JLayer 1.0.0
    • Make a new library in NetBeans and add the JavaZoom folder.
Video

Video will be a Multimedia type representing a video file used by the player. It overrides getLength used to get the video file's length as opposed to an audio file's length. It also overrides the getDimensions method to return the video's width and height.

  • Link to Brian's Video Class here
  • VideoTest Class here
Video Updated/VideoPlayer
  • Link to Brian's updated video and MediaPlayer source files here
    • Matt's VideoPlayer based on Brian's code here
Picture

Picture will a Multimedia object which can be displayed in the player. It has an Image instance variable which can be accessed by its getImage method as an ImageIcon, so the player can access it directly and display it in a JLabel. Like the other forms of multimedia, it overrides getLength (to indicate that it doesn't have a length) and getDimensions (to return the picture's width and height).

  • Link to Brian's ShowImage Class here
  • Link to Test Program of ShowImage here


MultimediaFactory

MultimediaFactory will use the factory pattern to create Multimedia objects. It will determine the appropriate type to construct based on the file passed to it when the user selects one when prompted by the media player. A Multimedia object is returned by the createMultimedia method which will use a series of if statements which analyze the file's extension to determine the corresponding Multimedia type.


Playlist UML diagram

Playlist

Playlists will be Serializable objects which consist of ArrayLists of Multimedia objects. Its instance variables will include a member indicating the playlist's owner, a rating, and an ArrayList of comments from other users. There will be methods allowing the user to add and remove Multimedia objects. In addition, it will have accessors and mutators that will be used by the media player and its database.


Comment

Comment objects will be displayed with the most recent appearing first. Best case scenario, comments may be displayed 5 comments at a time (default), all at once, or with a user specified number (perhaps 10, 25, and 50), although this may be altered due to time restrictions. Comments will be stored in either an array or a database depending on chosen implementation.

Comments will need to include date and time instance fields, with accessor methods to retrieve these data members.

If the group would like to support commenting on comments themselves, perhaps including a pointer to the comment being commented on would allow us to include that functionality.


Rating

  • Personal Rating (number of stars 1-5)
  • Average Rating
  • Clemon comes up with data structure or way of allowing each member to provide at most one rating per object.


Member

  • Name
  • Sign-up date
  • Email
  • Birth date
  • List of personal media
  • List of favorites
  • Friend lists
  • Parental Controls
  • Type of subscription - gold, silver, free (secondary)
  • Viewing Permissions
Personal tools