-
Notifications
You must be signed in to change notification settings - Fork 0
phase1
The Software Laboratory project is comprised by the analysis, design and implementation of an information system to manage movies and associated ratings and reviews. Its development is divided into 4 phases, with incremental requirements published before the beginning of each phase.
-
A movie is characterized at least by a title and a release year. A movie may also have other attributes such as its genre, the set of cast and directors, and associated pictures. Multiple movies can have the same title. However, no two movies released in the same year may have the same title.
Movies can also belong to collections ('Oscar 2016 Winners') or series ('Star Wars'). -
A rating is a number from 1 to 5 assigned to a movie by an user.
-
A review is the evaluation of a movie by a movie critic. It is characterized by a review summary, the review complete text and a rating.
On the first phase, the interaction with the information system is done via commands for a console application. Each application execution performs one and only one command, presenting the command result on the standard output.
Each command is defined using the following generic structure
{method} {path} {parameters}
where
- the
method
defines the type of action to perform (e.g.GET
orPOST
). - the
path
defines the resource on which the command is executed (e.g./movies
or/movies/123
). - the
parameters
is a sequence ofname=value
pairs, separated by&
(e.g.name=LS&description=software+laboratory
).
For phase 1, the management application must support the following commands.
-
POST /movies
- creates a new movie, given the following parameters-
title
- movie name. -
releaseYear
- movie's release year.
This command returns the movie unique identifier.
-
-
GET /movies
- returns a list with all movies. -
GET /movies/{mid}
- returns the detailed information for the movie identified bymid
. -
POST /movies/{mid}/ratings
- submits a new rating for the movie identified bymid
, given the following parameters-
rating
- integer between 1 and 5.
-
-
GET /movies/{mid}/ratings
- returns the rating information for the movie identified bymid
. This rating information include:- The rating average
- The number of votes for each rating value
-
POST /movies/{mid}/reviews
- creates a new review for the movie identified bymid
, given the following parameters-
reviewerName
- the reviewer name -
reviewSummary
- the review summary -
review
- the complete review -
rating
- the review rating
This command returns the review unique identifier.
-
-
GET /movies/{mid}/reviews
- returns all the reviews for the movie identified bymid
. The information for each review must not include the full review text. -
GET /movies/{mid}/reviews/{rid}
- returns the full information for the reviewrid
of the movie identified bymid
. -
GET /tops/ratings/higher/average
- returns the detail for the movie with the higher average rating. -
GET /tops/{n}/ratings/higher/average
- returns a list with then
movies with higher average ratings, sorted decreasingly. -
GET /tops/ratings/lower/average
- returns the detail for the movie with the lower average rating. -
GET /tops/{n}/ratings/lower/average
- returns a list with then
movies with the lower average ratings, sorted decreasingly. -
GET /tops/reviews/higher/count
- returns the detail for the movie with most reviews. -
GET /tops/{n}/reviews/higher/count
- returns a list with then
movies with higher review count.
The following non-functional requirements will be highly valued.
- Readability.
- Testability, including on machines not belonging to the development team.
The project must be delivery until April 9 (end of week 5), via the creation of a 0.1.0 tag on the GitHub repository.