Skip to content

Specification & Analysis

Michael Le edited this page Oct 30, 2017 · 4 revisions

Project Layout

The project is divided into Maven modules for each major component. For the first milestone, the major component is backend.

User

A typical user will be a TV maniac :-) User is identified by username. Every user has his password persisted in form of hash. His profile consists of age, gender and e-mail address.

Administrator is a specific type of user. We decided to implement administrator users using a flag isAdmin. Another considered options:

  • Implementing user roles - too much effort for low profit
  • Inheritance (Admin as a subtype of User) - not flexible and problematic database representation

Every user can subscribe to his favorite channels or transmissions.

Channel

Channel has its name, language and type (sport, music, documentary, movie, commerce, children).

Transmission

Transmission is a general representation of movies/shows/events etc. Each transmission is described by name, optional longer text description, type, length, age availability and language.

Age availability is a restriction on age of a viewer. We decided to implement this using enum. Ages in enum: 12/15/18/unrestricted. Type of transmission can be movie, tv series, TV show, sports event or documentary. Language can be stored as some standard code (eg. ISO 639-1).

Each transmission can have more occurrences. For example, a movie usually has a single occurrence (except for reruns) but series can have more occurrences (parts). In fact, occurrence is a channel scheduling unit and holds information about start date/time of the transmission a channel (on which the transmission occurres). Each occurrence can be optionally named (to distinguish different parts of a single transmission) and flagged as rerun.

Voting

User can give a feedback to a transmission. Each user can give a single feedback per transmission in form of star rating and short text review.

Clone this wiki locally