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.

User Actions

  • Create/manage personal account
  • Show TV schedule
  • Show all channels of a specific type
  • Show all transmissions of a specific type
  • Search channels/transmissions by name
  • Show details of a transmission
  • Subscribe to favorite channels (requires login)
  • Subscribe to favorite transmissions (requires login)
  • Give feedback for a transmission (requires login)

Administrator Actions

  • Create/manage channels
  • Create/manage transmissions and their schedule
  • (Nice to have) Show statistics

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.

If transmission has more occurrences, user should be able to display all upcoming occurrences in one place.

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.