cinephile documentation

32
Cinephile Documentation Release 1.0 Cinephile Team December 17, 2014

Upload: others

Post on 18-Mar-2022

2 views

Category:

Documents


0 download

TRANSCRIPT

Cinephile DocumentationRelease 1.0

Cinephile Team

December 17, 2014

Contents

1 User Guide 31.1 Regular Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31.2 Admin Pages . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 91.3 Group Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 16

2 Developer Guide 192.1 Database Design . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 192.2 Code . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 202.3 Group Members . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 25

i

ii

Cinephile Documentation, Release 1.0

Team Cinephile Team

Members

• Talha Çolakoglu

• Sinasi Eren Senel

• Selin Sezer

• M.Sadık Ugursoy

• A.Cihan Ak

One-click away platform which users can access the details about any movie they want.

Contents:

Contents 1

Cinephile Documentation, Release 1.0

2 Contents

CHAPTER 1

User Guide

The Cinephile Project

In the Cinephile Application, the system holds the data for the movies, festivals, actors and actresses and givethe users the information they want about them. Only admins can manipulate the data by adding or removingentities. There are 6 main navigation buttons on each page and also a login and a register button if the user is notyet registered. The registered user have the ability of making comments or voting the comments.

1.1 Regular Pages

These are the pages which every user can access. Since they are for public usage, they do not includeany update, insert or delete operations for the movies, festivals or people. They are used only forexploring and retrieving data from the database.

1.1.1 The Homepage

Homepage has a “Featured Movies” slider on the top which shows the highmost rated films. Below that, thereare “Movies”, “Festivals” and “Actors/Actresses” sliders. In each slider, there are corresponding titles with theircovers, for example in Movies slider there is a list of movies inside. When the user mouse over any of them, he cansee a small descripton and the name/title for the item. On the click action, it redirects the user to the correspondingitem (movie, actor, actress or festival).

Figure 1.1: The featured movies slider on the homepage

1.1.2 The Movies Page

On the movies page, all the movies are sorted according to their genres. The same slider technique is used for eachgenre. When the mouse is over on a movie, it shows it’s title, description and votes and on mouse click, it redirectsthe user to the corresponding movie’s page which is created dynamically. In order to comment on the movie, the

3

Cinephile Documentation, Release 1.0

Figure 1.2: The movies slider on the homepage. It shows the description when the mouse is over the item.

user should be registered. If the user is registered, the comment sections is available for the commentation. If not,there will be a “please log in or register” message.

The genres for the movies are: Drama, Mystery, Romance, Thriller, Adventure, Sci-Fi, Crime, Fantasy, Horror,Adult and Detective. The information for the each movie is about it’s duration, title, year, genre, director, cast,producer, festival and description. These informations are shown on a new page with the comments (if there isany).

1.1.3 The People Page

On this page, all person information are shown. All actors, actresses, directors, writers in other words, all peopleare sorted according to their jobs in this page. The same slider techique is used for each job in this page too. Themouse over and mouse click events are the same with the homepage and the movie page. The comment sectionfor people is included too (which requires logging in for commenting or voting comments).

In the corresponding person’s page (the pages created when the user clicks a person), the name, birth year, job,nationality and a small biography are shown. If there are any comments, they are shown below as well.

1.1.4 The Festivals Page

The festival page contains all the festivals in the database. The slider is the same with the homepage and moviepage just as in the people page. The mouse over event shows the corresponding title for the festival with a smalldescription including the date and place. On the mouse click, the user redirecting to a new page which shows allinformations about the festival. These informations are name, place, year, website, genres, movies and description.The comment section has the same rules with previous pages.

1.1.5 The Contacts Page

This page contains the conctact with their contact informations.

1.1.6 The FAQ Page

This page will include the frequently asked questions about the application when they exist.

4 Chapter 1. User Guide

Cinephile Documentation, Release 1.0

Figure 1.3: The details of a movie.

1.1. Regular Pages 5

Cinephile Documentation, Release 1.0

Figure 1.4: The details of a person.

1.1.7 The Register Page

Users can register from this page. Minimun requierd character for username is six characters. The e-mail alsoshould be longer than six characters and must be in a correct form. Minimum requierd character for name andsurmane is three characters and they all must be letters. Finally the password should be longer than six charactersas well and the password should match with confirm password. Once all the conditions are satisfied, the user canregister with “register” button. The registered users are stayed registered as long as they are not deleted by anadmin or the user himself.

1.1.8 The Register Page

Users can register from this page. Minimun requierd character for username is six characters. The e-mail alsoshould be longer than six characters and must be in a correct form. Minimum requierd character for name andsurmane is three characters and they all must be letters. Finally the password should be longer than six charactersas well and the password should match with confirm password. Once all the conditions are satisfied, the user canregister with “register” button. The registered users are stayed registered as long as they are not deleted by anadmin or the user himself.

1.1.9 The Login Page

The registered users can login through the login page. If the name and the password are correct, user logs in theapplication and free to comment for any movie, person or festival or vote for any previous comments.

Currently the users can vote for their own comments. The voting is allowed for one per comment.

6 Chapter 1. User Guide

Cinephile Documentation, Release 1.0

Figure 1.5: The details of a festival.

Figure 1.6: The contacts page.

1.1. Regular Pages 7

Cinephile Documentation, Release 1.0

Figure 1.7: The register page.

Figure 1.8: The register page.

Figure 1.9: The login page.

8 Chapter 1. User Guide

Cinephile Documentation, Release 1.0

1.1.10 The User Page

This page is available once the user logged in. In this page, user can update his password and name-surname andeven delete his account. The page shows the current status of the profile. The buttons are available for change thepassword, update and delete. The update for username and e-mail is not available.

Figure 1.10: User page which allows users to change their information.

1.2 Admin Pages

These pages are for advanced users. The admins can manipulate the database from these pages easily.They can add movie, person, festival, category and user. They also have the ability to remove them orupdate them.

1.2.1 The Admin Console

On the main page, if the logged in user is an admin, on the left hand side, there will be a small arrow sign. Whenit is clicked, the admin console pops up.

Figure 1.11: The admin console as a pop-up menu on the left.

1.2. Admin Pages 9

Cinephile Documentation, Release 1.0

From this console, admin can make various changes to the database. Each category has sub categories under itwhich indicated by a plus sign next to them. The tree of the console can be shown as:

Movie Administiration>List Movies>Add Movie

User Administiration>List User

Person Administiration>List Person>Add Person

Festival Administiration>List Festival>Add Festival

Category Administiration>List Category>Add Category

Database Administiration>Reload Sample Database

1.2.2 Movie Administiration

In the movie administration, there are two options.

List Movies

The first option is listing the movies. Ad admin can list all the movies inside the database and manipulate themby using this option. When this option is selected, the page is filled with the all movies fetched from the database.The movies are shown in a table with the ID, Title, Year, Duration, Score and Options columns. The first fivecolumns show the information but the sixth column, which is the options, actually has six buttons inside to allowadmin to manipulate the corresponding movie. These buttons are update, delete, directors, casts, screen writer andproducers in the given order.

Figure 1.12: The listed movies in a table.

In the options column, when the admin presses the update, the page will go to a page similar to the add moviepage. It is simply an add movie page with the filled informations and admin can change these informations inorder to make the update.

10 Chapter 1. User Guide

Cinephile Documentation, Release 1.0

When delete button is pressed, the corresponding movie is deleted immediately without asking twice.

On the directors button, another page is loaded to the screen with all the persons with a tick button in front ofthem. The ticks implies the persons who directed the corresponding movie. Admin can change the ticks andassign different persons to be the director of the movie. The casts, screen writer and producer buttons does thesame thing for the cast, screen writer and producer. The screen writer has a minor difference. A movie can haveonly one screen writer so there are no tick buttons in front of the persons. There is only an assign button to assign.

Figure 1.13: The options for the listed movies (update page on the left, director on the right).

Add Movie

The second option in the movie administration is the add movie. In this option, admin can add any movie to thedatabase by entering the required information to the form.

Figure 1.14: Movie add page.

1.2. Admin Pages 11

Cinephile Documentation, Release 1.0

1.2.3 User Administiration

The user administiration has only one option which is the list users. The listig the users will show all registereduser as a list with their informations about their user IDs, names, e-mails, roles and user names. The role can bea user or an admin. The admin can delete the users from this list by clicking the trash symbol on the right of theany user.

Figure 1.15: The table of all listed users.

1.2.4 Person Administiration

The person administiration has 2 options. The one of them is list person.

List Person

This option allows an admin to see all the persons listed according to their IDs. List consists of 6 columns whichare Id, name, surname, birth year, nationality and options. The option columns has an update button to make somechanges to the person and a delete button for deletion. Update button simply redirect the user to add person pagewith already filled information of the relative person. The desired changes can be made and updated through there.

Add Person

In this option, there is a form which asks for the information of the person who is desired to be added. Theinformations are first name, last name, birth year, nationality, job, height, weight, imageURL and description.Birth year, weight and height should only consist of numbers and URL should exist with an image. After theseconditions are satisfied, the person is added to the database.

1.2.5 Festival Administiration

This administiration has two options too.

12 Chapter 1. User Guide

Cinephile Documentation, Release 1.0

Figure 1.16: The table of all listed persons.

Figure 1.17: Add person page.

1.2. Admin Pages 13

Cinephile Documentation, Release 1.0

Add Festival

Add festival option, allows admins to add a festival to the database. It requires to fill in a form which asks forfestival name, year, place and description. Once all the information is entered, the festival can be added by pressingthe add festival button.

Figure 1.18: Add festival page.

List Festival

This option allows admins to see all the festivals ordered by their IDs as a list. The list has Id, name, place, year,website and options columns. Option column has two buttons inside: update and delete. Update button goes toadd listing page with already filled information about the relative festival. Admin can change these informationsand in that way, he can update the festival. Pressing delete button immediately deletes the festival.

Figure 1.19: The table of all listed festival.

14 Chapter 1. User Guide

Cinephile Documentation, Release 1.0

1.2.6 Category Administiration

This administiration has two options either.

List Category

To list all the categories in the database, admins can use this option. It creates a list which has all the categories init ordered by their IDs. List consist of IDs, type and options columns. Types has the category type and options hastwo buttons: update and delete. While delete button immediately deletes the category from the database, updatebutton opens an add category page with filled informations relative to the selected type and allows admin to changeand re-add the category.

Figure 1.20: The table of all categories inside the database.

Add Category

This option allows admin to add a new category. Admin should enter the category name to the box and thenpressing the button will do it.

Figure 1.21: Add category page.

1.2. Admin Pages 15

Cinephile Documentation, Release 1.0

1.2.7 Database Administiration

In this administireaiton, admin only has one option and it is reloading the database. This option reloads thedatabase to a basis database (default).

1.3 Group Members

1.3.1 Parts Implemented by Talha Çolakoglu

1. Movie pages

• AddMoviePage.html

• MovieMainPage.html

• MoviePage.html

• ScreenWriterToMoviePage.html

• ConsoleListMovies.html

2. Category pages

• EditCategory.html

• ConsoleListCategory.html

• EditCategoryLink.java

• ConsoleListCategoryLink.java

3. Utility Pages

• HeaderPanel.html

• UserInfoPanel.html

1.3.2 Parts Implemented by Sinasi Eren Senel

1. User pages

• ChangePasswordPage.html

• ConsoleListUser.html

• LoginPage.html

• RegisterPage.html

• UpdateUserPage.html

• UserPage.html

2. Utility pages

• UserConsole.html

• UserLoginRegisterPanel.html

• CommentFormPanel.html

• CommentPanel.html

16 Chapter 1. User Guide

Cinephile Documentation, Release 1.0

1.3.3 Parts Implemented by Selin Sezer

1. Festival pages

• AddFestivalPage.html

• FestivalMainPage.html

• FestivalPage.html

• ConsoleListFestivals.html

2. Contacts page

• ContactPage.html

3. Utility pages

• FooterPanel.html

• AdminConsole.html

1.3.4 Parts Implemented by M.Sadık Ugursoy

1. Homepage

• HomePage.html

2. Person pages

• PersonMainPage.html

• ConsoleListToPerson.html

3. FAQ pages

• FAQPage.html

4. Utility pages

• NavigaitonPanel.html

1.3.5 Parts Implemented by A.Cihan Ak

1. Person pages

• EditPersonPage.html

• PersonPage.html

• PersonToMovie.html

2. Utility pages

• UserConsole.html

• UserInfoPanel.html

1.3. Group Members 17

Cinephile Documentation, Release 1.0

18 Chapter 1. User Guide

CHAPTER 2

Developer Guide

2.1 Database Design

explain the database design of your project

include the E/R diagram(s)

2.1.1 Database Design

Database uses one to one and many to many relations (1:1 and n:n). In the application there were movies, people,festivals and users. Their values (informations) are hold in a table. But there are some attributes which has morethan one values for a class (for example, for a movie, there could be two directors, two categories etc.) In order tosolve this issue, relations are used. In the application the relation between category and movies table is satisfiedby another table called “Movie_Category”. Movie and Movie_Category tables have 1:n relation since a moviecan have more than one category. The Movie_Category table holds the movie id and category id in its rows. Forinstance if the movie with the id 4 should be in the categories with id 3 and 6, the Movie_Category table have tworows for that movie:

MOVIEID CATEGORYID4 34 6

In that implementation, the informations with only one value (like name, id, year) is in the movie table, and theinformations with more than one values are in the relation tables. This sturcture holds for all classes (tables) in theapplication.

In the design the stability of the tables are also considered (the values that are not supposed to remove shouldnot removed), thus cascade and restrict deletes/updates are used. For example, when a person is deleted, thecasting and directing relations releated to that person should be removed as well however; when a directing tupleis removed, it does not mean that the person releated to that tuple should be removed from the person table aswell. It should only delete the relation of the person with the corresponding movie.

2.1.2 Sample Database Tables

MOVIE

19

Cinephile Documentation, Release 1.0

MOVIEIDTITLE YEAR VOTESSCOREDURA-TION

STORYSCREEN-WRITER

ADDED-BYID

COVER_IMAGE_URL

1 Ma-sumiyet

2006 13 10.0 110 Story 1 1

2 Kosmos 2009 10 5.0 122 Story 12 24 Inter-

stellar2014 0 0.0 169 Story 11 1

5 DuvaraKarsı

2004 0 7.0 142 Story 4 1

6 PulpFiction

1994 0 0.0 154 Story 1 2

7 ForrestGump

1993 0 0.0 141 Story 5 1

CATEGORY

CATEGORYID TYPE1 Drama2 Mystery3 Romance4 Thriller5 Adventure6 Sci-Fi

MOVIE_CATEGORY

MOVIEID CATEGORYID1 13 23 33 44 55 15 3

Here the relation of the movie and the category is clearly seen.

2.1.3 E/R Diagram

The E/R Diagram of the database is given below:

2.2 Code

The codes for the application can be divided into four basis.

2.2.1 APIs

The APIs are the classes which allows acces to the database. In other words they connect application with database.In this category, the application has “Facade” for every class (movie, person, category, comment, festival, user).

There is a base class called “Facade”. The “CategoryFacade”, “CommentFacade”, “FestivalFacade”, “MovieFa-cade”, “PersonFacade” and “UserFacade” are derived classes from this base class.

Derived classes have the add and search methods for their specific type (for example PersonFacade have thesefunctions for persons). Derived facade classes have some inline SQL code to communicate with database. Forexample the following code block uses a delete statement from SQLLite:

20 Chapter 2. Developer Guide

Cinephile Documentation, Release 1.0

Figure 2.1: The E/R diagram of the database

public boolean DeletePerson(int ID) {try {

String query = "DELETE FROM PERSON WHERE ID = ?";PreparedStatement pstmt = this.getDB().prepareStatement(query);pstmt.setString(1, Integer.toString(ID));pstmt.executeUpdate();pstmt.close();

return true;

} catch (SQLException e) {throw new UnsupportedOperationException(e.getMessage());

}}

Here on the query string, the place with the ”?” symbol is replaced with the ID by using PreparedStatementfunctions (setString and executeUpdate).

The derived classes also have other functionalities like check, update, get etc. The main logic in these classes areto get and set the data from the database. In this purpose, they are written with embedded SQL code inside. Somesamples of the embedded SQL codes are given below.

* INSERT INTO PERSON (FIRSTNAME,LASTNAME,PRIMARYJOB,BIRTHYEAR,NATIONALITY,HEIGHT,WEIGHT,SHORTDESCRIPTION,IMAGE) VALUES (?,?,?,?,?,?,?,?,?)

* SELECT ID FROM PERSON WHERE FIRSTNAME = ’#firstname#’ AND LASTNAME = ’#lastname#’

* SELECT * FROM PERSON WHERE NATIONALITY = ’#nationality#’

* Delete From USER Where ID = ?

* Select * From USER_COMMENT_DISLIKES Where USERID =

* DELETE FROM DIRECTING WHERE MOVIEID = ?

* UPDATE FESTIVAL SET (NAME = ?,FESTYEAR = ?, PLACE = ?,INFO = ?, WEBSITE = ? ) WHERE MOVIEID = ?

2.2. Code 21

Cinephile Documentation, Release 1.0

* INSERT INTO MOVIE_FEST (MOVIEID,FESTIVALID) VALUES (?,?)

* SELECT TITLE FROM MOVIE_FEST, MOVIE WHERE(MOVIE_FEST.FESTIVALID = ’#ID#’) AND (MOVIE_FEST.MOVIEID = MOVIE.MOVIEID)

* SELECT ID, COMMENT, USERID, DISLIKECOUNT, LIKECOUNT, ADDEDDATE FROM MOVIE_COMMENT JOIN COMMENT ON (MOVIE_COMMENT.COMMENTID = COMMENT.ID ) WHERE MOVIE_COMMENT.MOVIEID = #TYPEID#

All the functions have the try and catch mechanism. Reloading the sample database function is also on the Facadebase class.

2.2.2 Models

The Models are the classes for the objects that are created for the application. Models have all the functions relatedto the object (like get, set, add). All variables inside the models are private. The all models are created from abase model called “BaseModel”. This class has a Facade variable inside. The BaseModel allocates memory forthe facade.

The application has six derived classes from the base class which are “CategoryModel”, “CommentModel”, “Fes-tivalModel”, “MovieModel”, “PersonModel” and “UserModel”. All of these classes have their specific get andset methods for their specific variables (for example CategoryModel has two variables called ID and type. It alsohas their set and get functions).

2.2.3 Pages

The page classes are for the relation between the user and the database. They use “Form” classes to get theinformations from the user (actually from admins) and add these informations to the database. Since only adminsare authorized to do such adding, deleting and updating operations, it is okay to say that these classes for adminusage.

The page classes of the individual objects (like person, movie, category) has the constructors for the addingoperation. They create a form and according to the information that form holds, it adds it’s values to the database.An example of creating it is given below:

public AddFestivalPage(FestivalModel Festival, String ErrorMessage) {this.add(new AddFestivalForm("festival_form", Festival, ErrorMessage));

}

The given code block is using an “AddFestivalForm” class to add the festival to the database.

2.2.4 Utilities

These classes are for the admin panel, forms and links. There is a class called “Utility” which uses enums. Itkeeps Jobs and Roles inside with enum structure. They are set as given below in the Utilities class:

JOBSDirector(1), ActorActress(2), Producer(3), ScreenWriter(4), Unknown(5);

ROLESAdmin(1), Authorized(2), User(3), Unknown(4);

The class also contains get and set functions of the jobs and roles. There are 3 more utility classes:

Form

The form classes of the application derived from the java class “Form”. The forms are created by user input.Category, Person, Comment, Login and all the other pages which contains a form, have the form class created injava.

All form classes uses “AttributeAppender” class from the wicked. For example the “MovieForm” class adds theTitle, Year, Duration, Story and ImageURl with this order by appending them to the Model of the form, usingAttributeAppender. All information the form has should be added.

22 Chapter 2. Developer Guide

Cinephile Documentation, Release 1.0

public MovieForm(String ID, MovieModel Movie, String ErrorMessage) {super(ID);this.ErrorMessage = ErrorMessage;CompoundPropertyModel Model = new CompoundPropertyModel(Movie);super.add(new AttributeAppender("class", new Model("AddMovieForm"), " "));this.setModel(Model);this.add(new Label("Error", ErrorMessage));this.add(new TextField("Title").add(new AttributeAppender(

"placeholder", new Model("Movie Title"), "")));this.add(new TextField("Year").add(new AttributeAppender("placeholder",

new Model("Movie Year"), "")));this.add(new TextField("Duration").add(new AttributeAppender(

"placeholder", new Model("Movie Duration"), "")));this.add(new TextArea("Story").add(new AttributeAppender("placeholder",

new Model("Movie Story"), "")));this.add(new TextField("CoverImage").add(new AttributeAppender(

"placeholder", new Model("Image Url "), "")));if (ErrorMessage.length() > 0) {

this.add(new Behavior() {@Overridepublic void renderHead(Component component,

IHeaderResponse response) {super.renderHead(component, response);response.render(JavaScriptHeaderItem

.forScript("window.onload = function(){ $(’#MovieTitle’).closest(’.Input’).find(’.ErrorMessage’).css(’display’,’block’);}",""));

}});

}}

When user presses the submit button on the application, the object is checked if there is any duplicates first (forexample, since two movies can not share the name and the year, they both checked). If there is no duplicates,then the corresponding update function is called accordingly. The example code for the movie should be selfexplanatory:

@Overridepublic void onSubmit() {

MovieModel movie = (MovieModel) this.getModelObject();Facade oFacade = new Facade();if (oFacade.getMovieFacade().CheckMovieDuplicates(movie.getTitle(), movie.getYear())) {

if (movie.getID() > 0) { //If it has an id greater than zero, since the default id is -1, it means it is already in the databaseoFacade.getMovieFacade().updateMovie(movie, null, 0, 0); //non-updated part shoul return null or zero

} else {movie = oFacade.getMovieFacade().insertMovie(movie);

}this.setResponsePage(new ConsoleListMovies());

} elsethis.setResponsePage(new AddMoviePage(movie, "There is a movie with a same name"));

}}

Link

The link classes are derived from wicked Link class. They used for creating a bookmarkable URL (or click-able). For this purpose, they use setResponsePage class. The code below shows how did it implemented forPersonMainPage:

2.2. Code 23

Cinephile Documentation, Release 1.0

public class PersonMainPageLink extends Link {public PersonMainPageLink(String ID) {

super(ID);}

@Overridepublic void onClick() {

this.setResponsePage(new PersonMainPage());

}}

Panel

Panels are derived from the Panel class of the wicked. These classes are for the admin panel, navigation panel,header panel and footer panel. Admin panel, consist of administiration links. The administirations links arecreated from the Links. The following code shows the admin console:

public class AdminConsole extends Panel {public AdminConsole(String ID) {

super(ID);this.add(new AddMoviePageLink("AddMovie"));this.add(new AddFestivalPageLink("AddFestival"));this.add(new ConsoleListFestivalLink("ConsoleListFestival"));this.add(new ConsoleListUserLink("ConsoleListUser"));this.add(new EditPersonLink("AddPerson"));this.add(new ConsoleListMovieLink("ConsoleListMovie"));this.add(new ConsoleListPersonLink("ConsoleListPerson"));this.add(new ConsoleListCategoryLink("ListCategory"));this.add(new EditCategoryLink("AddCategory"));this.add(new ReloadSampleDatabaseLink("ReloadSampleDatabase"));

}}

It uses Link classes to create clickable links for the corresponding pages. Header and Footer panels are similar butsince header panel has login and logout options, it has a few more lines of code from the footer. Header checks ifthere is any log in first, if there is, it adds the user name to the header; else it adds login button. It also containsthe navigation panel inisde. The code below shows how it is done:

public class HeaderPanel extends Panel {public HeaderPanel(String ID) {

super(ID);BaseModel base = new BaseModel();if (base.GetCurrentMember() == null) {

this.add(new UserLoginRegisterPanel("UserInfoPanel"));} else {

this.add(new UserLoginRegisterPanel("UserInfoPanel",(UserModel) base.GetCurrentMember()));

}this.add(new NavigationPanel("mainNavigation"));super.add(new AttributeAppender("id", new Model("Header"), " "));

}}

public class FooterPanel extends Panel {public FooterPanel(String ID) {

super(ID);super.add(new AttributeAppender("id", new Model("Footer"), " "));

}}

24 Chapter 2. Developer Guide

Cinephile Documentation, Release 1.0

As for the navigation panel, it has the remaining Links from the admin panel which are the links for HomePage,MovieMainPage, PersonMainPage etc. They are first created as an object and then added to the navigation class:

public class NavigationPanel extends Panel {public NavigationPanel(String ID) {

super(ID);MovieMainPageLink MovieMainPageLink = new MovieMainPageLink("movies");FestivalMainPageLink FestivalMainPageLink = new FestivalMainPageLink(

"Festivals");HomePageLink HomePageLink = new HomePageLink("home");ContactPageLink ContactPageLink = new ContactPageLink("contact");FAQPageLink FAQPageLink = new FAQPageLink("faq");PersonMainPageLink PersonMainPageLink = new PersonMainPageLink(

"persons");this.add(HomePageLink);this.add(MovieMainPageLink);this.add(FestivalMainPageLink);this.add(ContactPageLink);this.add(FAQPageLink);this.add(PersonMainPageLink);

}

}

explain the technical structure of your code

to include a code listing, use the following example

2.3 Group Members

2.3.1 Parts Implemented by Talha Çolakoglu

1. Movie classes

• ConsoleListMovies.java

• AddMoviePage.java

• MovieMainPage.java

• MoviePage.java

• ScreenWriterToMoviePage.java

2. API classes

• CategoryFacade.java

• MovieFacade.java

3. Utility classes

• MovieForm.java

• AddMoviePageLink.java

• ConsoleListMovieLink.java

• MovieMainPageLink.java

• MoviePageLink.java

• CategoryForm.java

• ConsoleListCategory.java

2.3. Group Members 25

Cinephile Documentation, Release 1.0

2.3.2 Parts Implemented by Sinasi Eren Senel

1. User classes

• ConsoleListUser.java

• LoginPage.java

• RegisterPage.java

• UpdateUserPage.java

• UserPage.java

• ChangePasswordPage.java

• MasterPage.java

• BaseModel.java

2. API clases

• Facade.java

• CommentFacade.java

• UserFacade.java

3. Utility classes

• Utility.java

• HeaderPanel.java

• UserInfoPanel.java

• RegisterForm.java

• UpdateUserForm.java

• LoginForm.java

• ChangePasswordForm.java

• ChangePasswordPageLink.java

• ConsoleListUserLink.java

• DeleteUserLink.java

• LoginPageLink.java

• LogoutLink.java

• RegisterPageLink.java

• UpdateUserLink.java

• UserPageLink.java

2.3.3 Parts Implemented by Selin Sezer

1. Festival classes

• AddFestivalPage.java

• FestivalMainPage.java

• FestivalPage.java

• ConsoleListFestivals.java

• ContactPage.java

26 Chapter 2. Developer Guide

Cinephile Documentation, Release 1.0

• AdminConsole.java

2. API classes

• FestivalFacade.java

3. Utility classes

• AddFestivalForm.java

• AddFestivalPageLink.java

• ConsoleListFestivalLink.java

• PersonToMovieForm.java

• ContactPageLink.java

• FestivalMainPageLink.java

• FestivalPageLink.java

• ReloadSampleDatabase.java

• FooterPanel.java

2.3.4 Parts Implemented by M.Sadık Ugursoy

1. Person classes

• PersonModel.java

2. FAQ classes

• FAQPage.java

3. Utility classes

• NavigationPanel.java

• PersonForm.java

• PersonToMovieForm.java

• CommentForm.java

• ScreenWriterToMovieForm.java

• ConsoleListPersonLink.java

• EditPersonLink.java

• HomePageLink.java

2.3.5 Parts Implemented by A.Cihan Ak

1. Person classes

• PersonMainPage.java

• EditPersonPage.java

• PersonPage.java

• ConsoleListPerson.java

2. API classes

• PersonFacade.java

3. FAQ classes

2.3. Group Members 27

Cinephile Documentation, Release 1.0

• FAQPageLink.java

4. Utility classes

• UserConsole.java

• PersonForm.java

• UserInfoPanel.java

• PersonToMovieForm.java

• PersonPageLink.java

• PersonToMovieLink.java

• PersonMainPageLink.java

28 Chapter 2. Developer Guide