Added 4 new methods:

- searchCompanies
- getGenreList
- getGenreMovies
- getSimilarMovies
This commit is contained in:
Omertron
2012-07-03 14:21:39 +00:00
parent d4fa1f694d
commit 0a46fe35c9
8 changed files with 446 additions and 111 deletions
+8 -8
View File
@@ -6,7 +6,7 @@
<artifactId>oss-parent</artifactId>
<version>7</version>
</parent>
<prerequisites>
<maven>3.0.3</maven>
</prerequisites>
@@ -33,7 +33,7 @@
</scm>
<properties>
<skipTests>true</skipTests>
<skipTests>false</skipTests>
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<distribution.format>zip</distribution.format>
@@ -47,17 +47,17 @@
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
<version>1.2.17</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-core-lgpl</artifactId>
<version>1.9.6</version>
<version>1.9.7</version>
</dependency>
<dependency>
<groupId>org.codehaus.jackson</groupId>
<artifactId>jackson-mapper-lgpl</artifactId>
<version>1.9.6</version>
<version>1.9.7</version>
</dependency>
<dependency>
<groupId>commons-codec</groupId>
@@ -116,12 +116,12 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-clean-plugin</artifactId>
<version>2.4.1</version>
<version>2.5</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>2.3.2</version>
<version>2.5.1</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
@@ -141,7 +141,7 @@
<plugin>
<groupId>org.codehaus.mojo</groupId>
<artifactId>buildnumber-maven-plugin</artifactId>
<version>1.0</version>
<version>1.1</version>
</plugin>
<plugin>
<groupId>org.codehaus.mojo</groupId>
@@ -28,8 +28,9 @@ import org.apache.log4j.Logger;
import org.codehaus.jackson.map.ObjectMapper;
/**
* The MovieDb API. This is for version 3 of the API as specified here:
* http://help.themoviedb.org/kb/api/about-3
* The MovieDb API
*
* This is for version 3 of the API as specified here: http://help.themoviedb.org/kb/api/about-3
*
* @author stuart.boston
*/
@@ -45,12 +46,14 @@ public class TheMovieDb {
private static final String BASE_MOVIE = "movie/";
private static final String BASE_PERSON = "person/";
private static final String BASE_COMPANY = "company/";
private static final String BASE_GENRE = "genre/";
// Configuration URL
private final ApiUrl tmdbConfigUrl = new ApiUrl(this, "configuration");
// Search URLS
private final ApiUrl tmdbSearchMovie = new ApiUrl(this, "search/movie");
private final ApiUrl tmdbSearchPeople = new ApiUrl(this, "search/person");
// Collections
private final ApiUrl tmdbSearchCompanies = new ApiUrl(this, "search/company");
// Collections
private final ApiUrl tmdbCollectionInfo = new ApiUrl(this, "collection/");
// Movie Info
private final ApiUrl tmdbMovieInfo = new ApiUrl(this, BASE_MOVIE);
@@ -61,12 +64,13 @@ public class TheMovieDb {
private final ApiUrl tmdbMovieReleaseInfo = new ApiUrl(this, BASE_MOVIE, "/releases");
private final ApiUrl tmdbMovieTrailers = new ApiUrl(this, BASE_MOVIE, "/trailers");
private final ApiUrl tmdbMovieTranslations = new ApiUrl(this, BASE_MOVIE, "/translations");
private final ApiUrl tmdbMovieSimilarMovies = new ApiUrl(this, BASE_MOVIE, "/similar_movies");
// Person Info
private final ApiUrl tmdbPersonInfo = new ApiUrl(this, BASE_PERSON);
private final ApiUrl tmdbPersonCredits = new ApiUrl(this, BASE_PERSON, "/credits");
private final ApiUrl tmdbPersonImages = new ApiUrl(this, BASE_PERSON, "/images");
// Misc Movie
// Movie Add Rating - See issue 9
// Movie Add Rating - See issue 9 http://code.google.com/p/themoviedbapi/issues/detail?id=9
private final ApiUrl tmdbLatestMovie = new ApiUrl(this, "latest/movie");
private final ApiUrl tmdbNowPlaying = new ApiUrl(this, "movie/now-playing");
private final ApiUrl tmdbPopularMovieList = new ApiUrl(this, "movie/popular");
@@ -74,6 +78,10 @@ public class TheMovieDb {
// Company Info
private final ApiUrl tmdbCompanyInfo = new ApiUrl(this, BASE_COMPANY);
private final ApiUrl tmdbCompanyMovies = new ApiUrl(this, BASE_COMPANY, "/movies");
// Genre Info
private final ApiUrl tmdbGenreList = new ApiUrl(this, "genre/list");
private final ApiUrl tmdbGenreMovies = new ApiUrl(this, BASE_GENRE, "/movies");
/*
* Jackson JSON configuration
*/
@@ -193,9 +201,11 @@ public class TheMovieDb {
}
/**
* Search Movies This is a good starting point to start finding movies on
* TMDb. The idea is to be a quick and light method so you can iterate
* through movies quickly. http://help.themoviedb.org/kb/api/search-movies
* Search Movies This is a good starting point to start finding movies on TMDb.
*
* The idea is to be a quick and light method so you can iterate through movies quickly.
*
* http://help.themoviedb.org/kb/api/search-movies
*
* TODO: Make the allResults work
*
@@ -210,8 +220,8 @@ public class TheMovieDb {
URL url = tmdbSearchMovie.getQueryUrl(movieName, language, 1);
String webPage = WebBrowser.request(url);
try {
WrapperResultList resultList = mapper.readValue(webPage, WrapperResultList.class);
return resultList.getResults();
WrapperResultList wrapper = mapper.readValue(webPage, WrapperResultList.class);
return wrapper.getResults();
} catch (IOException ex) {
LOGGER.warn("Failed to find movie: " + ex.getMessage());
throw new MovieDbException(MovieDbExceptionType.MAPPING_FAILED, webPage, ex);
@@ -219,8 +229,9 @@ public class TheMovieDb {
}
/**
* This method is used to retrieve all of the basic movie information. It
* will return the single highest rated poster and backdrop.
* This method is used to retrieve all of the basic movie information.
*
* It will return the single highest rated poster and backdrop.
*
* @param movieId
* @param language
@@ -240,8 +251,9 @@ public class TheMovieDb {
}
/**
* This method is used to retrieve all of the basic movie information. It
* will return the single highest rated poster and backdrop.
* This method is used to retrieve all of the basic movie information.
*
* It will return the single highest rated poster and backdrop.
*
* @param imdbId
* @param language
@@ -261,8 +273,7 @@ public class TheMovieDb {
}
/**
* This method is used to retrieve all of the alternative titles we have for
* a particular movie.
* This method is used to retrieve all of the alternative titles we have for a particular movie.
*
* @param movieId
* @param country
@@ -274,8 +285,8 @@ public class TheMovieDb {
URL url = tmdbMovieAltTitles.getIdUrl(movieId, ApiUrl.DEFAULT_STRING, country);
String webPage = WebBrowser.request(url);
try {
WrapperAlternativeTitles at = mapper.readValue(webPage, WrapperAlternativeTitles.class);
return at.getTitles();
WrapperAlternativeTitles wrapper = mapper.readValue(webPage, WrapperAlternativeTitles.class);
return wrapper.getTitles();
} catch (IOException ex) {
LOGGER.warn("Failed to get movie alternative titles: " + ex.getMessage());
throw new MovieDbException(MovieDbExceptionType.MAPPING_FAILED, webPage, ex);
@@ -283,8 +294,9 @@ public class TheMovieDb {
}
/**
* This method is used to retrieve all of the movie cast information. TODO:
* Add a function to enrich the data with the people methods
* This method is used to retrieve all of the movie cast information.
*
* TODO: Add a function to enrich the data with the people methods
*
* @param movieId
* @return
@@ -297,17 +309,17 @@ public class TheMovieDb {
URL url = tmdbMovieCasts.getIdUrl(movieId);
String webPage = WebBrowser.request(url);
try {
WrapperMovieCasts mc = mapper.readValue(webPage, WrapperMovieCasts.class);
WrapperMovieCasts wrapper = mapper.readValue(webPage, WrapperMovieCasts.class);
// Add a cast member
for (PersonCast cast : mc.getCast()) {
for (PersonCast cast : wrapper.getCast()) {
Person person = new Person();
person.addCast(cast.getId(), cast.getName(), cast.getProfilePath(), cast.getCharacter(), cast.getOrder());
people.add(person);
}
// Add a crew member
for (PersonCrew crew : mc.getCrew()) {
for (PersonCrew crew : wrapper.getCrew()) {
Person person = new Person();
person.addCrew(crew.getId(), crew.getName(), crew.getProfilePath(), crew.getDepartment(), crew.getJob());
people.add(person);
@@ -321,8 +333,7 @@ public class TheMovieDb {
}
/**
* This method should be used when youre wanting to retrieve all of the
* images for a particular movie.
* This method should be used when youre wanting to retrieve all of the images for a particular movie.
*
* @param movieId
* @param language
@@ -335,16 +346,16 @@ public class TheMovieDb {
URL url = tmdbMovieImages.getIdUrl(movieId, language);
String webPage = WebBrowser.request(url);
try {
WrapperImages mi = mapper.readValue(webPage, WrapperImages.class);
WrapperImages wrapper = mapper.readValue(webPage, WrapperImages.class);
// Add all the posters to the list
for (Artwork poster : mi.getPosters()) {
for (Artwork poster : wrapper.getPosters()) {
poster.setArtworkType(ArtworkType.POSTER);
artwork.add(poster);
}
// Add all the backdrops to the list
for (Artwork backdrop : mi.getBackdrops()) {
for (Artwork backdrop : wrapper.getBackdrops()) {
backdrop.setArtworkType(ArtworkType.BACKDROP);
artwork.add(backdrop);
}
@@ -357,8 +368,9 @@ public class TheMovieDb {
}
/**
* This method is used to retrieve all of the keywords that have been added
* to a particular movie. Currently, only English keywords exist.
* This method is used to retrieve all of the keywords that have been added to a particular movie.
*
* Currently, only English keywords exist.
*
* @param movieId
* @return
@@ -370,8 +382,8 @@ public class TheMovieDb {
String webPage = WebBrowser.request(url);
try {
WrapperMovieKeywords mk = mapper.readValue(webPage, WrapperMovieKeywords.class);
return mk.getKeywords();
WrapperMovieKeywords wrapper = mapper.readValue(webPage, WrapperMovieKeywords.class);
return wrapper.getKeywords();
} catch (IOException ex) {
LOGGER.warn("Failed to get movie keywords: " + ex.getMessage());
throw new MovieDbException(MovieDbExceptionType.MAPPING_FAILED, webPage, ex);
@@ -379,8 +391,7 @@ public class TheMovieDb {
}
/**
* This method is used to retrieve all of the release and certification data
* we have for a specific movie.
* This method is used to retrieve all of the release and certification data we have for a specific movie.
*
* @param movieId
* @param language
@@ -393,8 +404,8 @@ public class TheMovieDb {
String webPage = WebBrowser.request(url);
try {
WrapperReleaseInfo ri = mapper.readValue(webPage, WrapperReleaseInfo.class);
return ri.getCountries();
WrapperReleaseInfo wrapper = mapper.readValue(webPage, WrapperReleaseInfo.class);
return wrapper.getCountries();
} catch (IOException ex) {
LOGGER.warn("Failed to get movie release information: " + ex.getMessage());
throw new MovieDbException(MovieDbExceptionType.MAPPING_FAILED, webPage, ex);
@@ -402,8 +413,9 @@ public class TheMovieDb {
}
/**
* This method is used to retrieve all of the trailers for a particular
* movie. Supported sites are YouTube and QuickTime.
* This method is used to retrieve all of the trailers for a particular movie.
*
* Supported sites are YouTube and QuickTime.
*
* @param movieId
* @param language
@@ -417,15 +429,15 @@ public class TheMovieDb {
String webPage = WebBrowser.request(url);
try {
WrapperTrailers wt = mapper.readValue(webPage, WrapperTrailers.class);
WrapperTrailers wrapper = mapper.readValue(webPage, WrapperTrailers.class);
// Add the trailer to the return list along with it's source
for (Trailer trailer : wt.getQuicktime()) {
for (Trailer trailer : wrapper.getQuicktime()) {
trailer.setWebsite(Trailer.WEBSITE_QUICKTIME);
trailers.add(trailer);
}
// Add the trailer to the return list along with it's source
for (Trailer trailer : wt.getYoutube()) {
for (Trailer trailer : wrapper.getYoutube()) {
trailer.setWebsite(Trailer.WEBSITE_YOUTUBE);
trailers.add(trailer);
}
@@ -437,8 +449,7 @@ public class TheMovieDb {
}
/**
* This method is used to retrieve a list of the available translations for
* a specific movie.
* This method is used to retrieve a list of the available translations for a specific movie.
*
* @param movieId
* @return
@@ -450,8 +461,8 @@ public class TheMovieDb {
String webPage = WebBrowser.request(url);
try {
WrapperTranslations wt = mapper.readValue(webPage, WrapperTranslations.class);
return wt.getTranslations();
WrapperTranslations wrapper = mapper.readValue(webPage, WrapperTranslations.class);
return wrapper.getTranslations();
} catch (IOException ex) {
LOGGER.warn("Failed to get movie tranlations: " + ex.getMessage());
throw new MovieDbException(MovieDbExceptionType.MAPPING_FAILED, webPage, ex);
@@ -459,9 +470,9 @@ public class TheMovieDb {
}
/**
* This method is used to retrieve all of the basic information about a
* movie collection. You can get the ID needed for this method by making a
* getMovieInfo request for the belongs_to_collection.
* This method is used to retrieve all of the basic information about a movie collection.
*
* You can get the ID needed for this method by making a getMovieInfo request for the belongs_to_collection.
*
* @param movieId
* @param language
@@ -515,9 +526,9 @@ public class TheMovieDb {
}
/**
* This is a good starting point to start finding people on TMDb. The idea
* is to be a quick and light method so you can iterate through people
* quickly.
* This is a good starting point to start finding people on TMDb.
*
* The idea is to be a quick and light method so you can iterate through people quickly.
*
* TODO: Fix allResults
*
@@ -532,8 +543,8 @@ public class TheMovieDb {
String webPage = WebBrowser.request(url);
try {
WrapperPerson resultList = mapper.readValue(webPage, WrapperPerson.class);
return resultList.getResults();
WrapperPerson wrapper = mapper.readValue(webPage, WrapperPerson.class);
return wrapper.getResults();
} catch (IOException ex) {
LOGGER.warn("Failed to find person: " + ex.getMessage());
throw new MovieDbException(MovieDbExceptionType.MAPPING_FAILED, webPage, ex);
@@ -541,8 +552,9 @@ public class TheMovieDb {
}
/**
* This method is used to retrieve all of the basic person information. It
* will return the single highest rated profile image.
* This method is used to retrieve all of the basic person information.
*
* It will return the single highest rated profile image.
*
* @param personId
* @return
@@ -562,9 +574,9 @@ public class TheMovieDb {
}
/**
* This method is used to retrieve all of the cast & crew information for
* the person. It will return the single highest rated poster for each movie
* record.
* This method is used to retrieve all of the cast & crew information for the person.
*
* It will return the single highest rated poster for each movie record.
*
* @param personId
* @return
@@ -578,15 +590,15 @@ public class TheMovieDb {
String webPage = WebBrowser.request(url);
try {
WrapperPersonCredits pc = mapper.readValue(webPage, WrapperPersonCredits.class);
WrapperPersonCredits wrapper = mapper.readValue(webPage, WrapperPersonCredits.class);
// Add a cast member
for (PersonCredit cast : pc.getCast()) {
for (PersonCredit cast : wrapper.getCast()) {
cast.setPersonType(PersonType.CAST);
personCredits.add(cast);
}
// Add a crew member
for (PersonCredit crew : pc.getCrew()) {
for (PersonCredit crew : wrapper.getCrew()) {
crew.setPersonType(PersonType.CREW);
personCredits.add(crew);
}
@@ -612,10 +624,10 @@ public class TheMovieDb {
String webPage = WebBrowser.request(url);
try {
WrapperImages images = mapper.readValue(webPage, WrapperImages.class);
WrapperImages wrapper = mapper.readValue(webPage, WrapperImages.class);
// Update the image type
for (Artwork artwork : images.getProfiles()) {
for (Artwork artwork : wrapper.getProfiles()) {
artwork.setArtworkType(ArtworkType.PROFILE);
personImages.add(artwork);
}
@@ -645,9 +657,9 @@ public class TheMovieDb {
}
/**
* This method is used to retrieve the movies currently in theatres. This is
* a curated list that will normally contain 100 movies. The default
* response will return 20 movies.
* This method is used to retrieve the movies currently in theatres.
*
* This is a curated list that will normally contain 100 movies. The default response will return 20 movies.
*
* TODO: Implement more than 20 movies
*
@@ -661,8 +673,8 @@ public class TheMovieDb {
String webPage = WebBrowser.request(url);
try {
WrapperResultList resultList = mapper.readValue(webPage, WrapperResultList.class);
return resultList.getResults();
WrapperResultList wrapper = mapper.readValue(webPage, WrapperResultList.class);
return wrapper.getResults();
} catch (IOException ex) {
LOGGER.warn("Failed to get now playing movies: " + ex.getMessage());
throw new MovieDbException(MovieDbExceptionType.MAPPING_FAILED, webPage, ex);
@@ -670,8 +682,9 @@ public class TheMovieDb {
}
/**
* This method is used to retrieve the daily movie popularity list. This
* list is updated daily. The default response will return 20 movies.
* This method is used to retrieve the daily movie popularity list.
*
* This list is updated daily. The default response will return 20 movies.
*
* TODO: Implement more than 20 movies
*
@@ -685,8 +698,8 @@ public class TheMovieDb {
String webPage = WebBrowser.request(url);
try {
WrapperResultList resultList = mapper.readValue(webPage, WrapperResultList.class);
return resultList.getResults();
WrapperResultList wrapper = mapper.readValue(webPage, WrapperResultList.class);
return wrapper.getResults();
} catch (IOException ex) {
LOGGER.warn("Failed to get popular movie list: " + ex.getMessage());
throw new MovieDbException(MovieDbExceptionType.MAPPING_FAILED, webPage, ex);
@@ -694,8 +707,9 @@ public class TheMovieDb {
}
/**
* This method is used to retrieve the top rated movies that have over 10
* votes on TMDb. The default response will return 20 movies.
* This method is used to retrieve the top rated movies that have over 10 votes on TMDb.
*
* The default response will return 20 movies.
*
* TODO: Implement more than 20 movies
*
@@ -709,8 +723,8 @@ public class TheMovieDb {
String webPage = WebBrowser.request(url);
try {
WrapperResultList resultList = mapper.readValue(webPage, WrapperResultList.class);
return resultList.getResults();
WrapperResultList wrapper = mapper.readValue(webPage, WrapperResultList.class);
return wrapper.getResults();
} catch (IOException ex) {
LOGGER.warn("Failed to get top rated movies: " + ex.getMessage());
throw new MovieDbException(MovieDbExceptionType.MAPPING_FAILED, webPage, ex);
@@ -718,8 +732,7 @@ public class TheMovieDb {
}
/**
* This method is used to retrieve the basic information about a production
* company on TMDb.
* This method is used to retrieve the basic information about a production company on TMDb.
*
* @param companyId
* @return
@@ -739,8 +752,9 @@ public class TheMovieDb {
/**
* This method is used to retrieve the movies associated with a company.
* These movies are returned in order of most recently released to oldest.
* The default response will return 20 movies per page.
*
* These movies are returned in order of most recently released to oldest. The default response will return 20
* movies per page.
*
* TODO: Implement more than 20 movies
*
@@ -755,11 +769,113 @@ public class TheMovieDb {
String webPage = WebBrowser.request(url);
try {
WrapperCompanyMovies resultList = mapper.readValue(webPage, WrapperCompanyMovies.class);
return resultList.getResults();
WrapperCompanyMovies wrapper = mapper.readValue(webPage, WrapperCompanyMovies.class);
return wrapper.getResults();
} catch (IOException ex) {
LOGGER.warn("Failed to get company movies: " + ex.getMessage());
throw new MovieDbException(MovieDbExceptionType.MAPPING_FAILED, webPage, ex);
}
}
/**
* Search Companies.
*
* You can use this method to search for production companies that are part of TMDb. The company IDs will map to
* those returned on movie calls.
*
* http://help.themoviedb.org/kb/api/search-companies
*
* TODO: Make the allResults work
*
* @param companyName
* @param language
* @param allResults
* @return
* @throws MovieDbException
*/
public List<Company> searchCompanies(String companyName, String language, boolean allResults) throws MovieDbException {
URL url = tmdbSearchCompanies.getQueryUrl(companyName, language, 1);
String webPage = WebBrowser.request(url);
try {
WrapperCompany wrapper = mapper.readValue(webPage, WrapperCompany.class);
return wrapper.getResults();
} catch (IOException ex) {
LOGGER.warn("Failed to find company: " + ex.getMessage());
throw new MovieDbException(MovieDbExceptionType.MAPPING_FAILED, webPage, ex);
}
}
/**
* The similar movies method will let you retrieve the similar movies for a particular movie.
*
* This data is created dynamically but with the help of users votes on TMDb.
*
* The data is much better with movies that have more keywords
*
* @param movieId
* @param language
* @param allResults
* @return
* @throws MovieDbException
*/
public List<MovieDb> getSimilarMovies(int movieId, String language, boolean allResults) throws MovieDbException {
URL url = tmdbMovieSimilarMovies.getIdUrl(movieId, language);
String webPage = WebBrowser.request(url);
try {
WrapperResultList wrapper = mapper.readValue(webPage, WrapperResultList.class);
return wrapper.getResults();
} catch (IOException ex) {
LOGGER.warn("Failed to get similar movies: " + ex.getMessage());
throw new MovieDbException(MovieDbExceptionType.MAPPING_FAILED, webPage, ex);
}
}
/**
* You can use this method to retrieve the list of genres used on TMDb.
*
* These IDs will correspond to those found in movie calls.
*
* @param language
* @return
*/
public List<Genre> getGenreList(String language) throws MovieDbException {
URL url = tmdbGenreList.getQueryUrl("", language);
String webPage = WebBrowser.request(url);
try {
WrapperGenres wrapper = mapper.readValue(webPage, WrapperGenres.class);
return wrapper.getGenres();
} catch (IOException ex) {
LOGGER.warn("Failed to get genre list: " + ex.getMessage());
throw new MovieDbException(MovieDbExceptionType.MAPPING_FAILED, webPage, ex);
}
}
/**
* Get a list of movies per genre.
*
* It is important to understand that only movies with more than 10 votes get listed.
*
* This prevents movies from 1 10/10 rating from being listed first and for the first 5 pages.
*
* @param genreId
* @param language
* @param allResults
* @return
*/
public List<MovieDb> getGenreMovies(int genreId, String language, boolean allResults) throws MovieDbException {
URL url = tmdbGenreMovies.getIdUrl(genreId, language);
String webPage = WebBrowser.request(url);
try {
WrapperResultList wrapper = mapper.readValue(webPage, WrapperResultList.class);
return wrapper.getResults();
} catch (IOException ex) {
LOGGER.warn("Failed to get genre movie list: " + ex.getMessage());
throw new MovieDbException(MovieDbExceptionType.MAPPING_FAILED, webPage, ex);
}
}
}
@@ -17,53 +17,56 @@ import org.codehaus.jackson.annotate.JsonAnySetter;
import org.codehaus.jackson.annotate.JsonProperty;
/**
* Company information
*
* @author Stuart
*/
public class Company {
// Logger
private static final Logger LOGGER = Logger.getLogger(Company.class);
private static final String DEFAULT_STRING = "";
// Properties
@JsonProperty("id")
private int companyId;
private int companyId = 0;
@JsonProperty("name")
private String name;
private String name = DEFAULT_STRING;
@JsonProperty("description")
private String description;
private String description = DEFAULT_STRING;
@JsonProperty("headquarters")
private String headquarters;
private String headquarters = DEFAULT_STRING;
@JsonProperty("homepage")
private String homepage;
private String homepage = DEFAULT_STRING;
@JsonProperty("logo_path")
private String logoPath;
private String logoPath = DEFAULT_STRING;
@JsonProperty("parent_company")
private String parentCompany;
private String parentCompany = DEFAULT_STRING;
//<editor-fold defaultstate="collapsed" desc="Getter Methods">
public int getCompanyId() {
return companyId;
}
public String getDescription() {
return description;
}
public String getHeadquarters() {
return headquarters;
}
public String getHomepage() {
return homepage;
}
public String getLogoPath() {
return logoPath;
}
public String getName() {
return name;
}
public String getParentCompany() {
return parentCompany;
}
@@ -73,32 +76,32 @@ public class Company {
public void setCompanyId(int companyId) {
this.companyId = companyId;
}
public void setDescription(String description) {
this.description = description;
}
public void setHeadquarters(String headquarters) {
this.headquarters = headquarters;
}
public void setHomepage(String homepage) {
this.homepage = homepage;
}
public void setLogoPath(String logoPath) {
this.logoPath = logoPath;
}
public void setName(String name) {
this.name = name;
}
public void setParentCompany(String parentCompany) {
this.parentCompany = parentCompany;
}
//</editor-fold>
/**
* Handle unknown properties and print a message
*
@@ -112,4 +115,9 @@ public class Company {
sb.append("' value: '").append(value).append("'");
LOGGER.warn(sb.toString());
}
@Override
public String toString() {
return "Company{" + "companyId=" + companyId + ", name=" + name + ", description=" + description + ", headquarters=" + headquarters + ", homepage=" + homepage + ", logoPath=" + logoPath + ", parentCompany=" + parentCompany + '}';
}
}
@@ -98,7 +98,7 @@ public class Genre {
@Override
public String toString() {
StringBuilder sb = new StringBuilder("[Genre=");
sb.append("id=").append(id);
sb.append("[id=").append(id);
sb.append("],[name=").append(name);
sb.append("]]");
return sb.toString();
@@ -0,0 +1,91 @@
/*
* Copyright (c) 2004-2012 YAMJ Members
* http://code.google.com/p/moviejukebox/people/list
*
* Web: http://code.google.com/p/moviejukebox/
*
* This software is licensed under a Creative Commons License
* See this page: http://code.google.com/p/moviejukebox/wiki/License
*
* For any reuse or distribution, you must make clear to others the
* license terms of this work.
*/
package com.moviejukebox.themoviedb.wrapper;
import com.moviejukebox.themoviedb.model.Company;
import java.util.List;
import org.apache.log4j.Logger;
import org.codehaus.jackson.annotate.JsonAnySetter;
import org.codehaus.jackson.annotate.JsonProperty;
/**
*
* @author stuart.boston
*/
public class WrapperCompany {
/*
* Logger
*/
private static final Logger LOGGER = Logger.getLogger(WrapperCompany.class);
/*
* Properties
*/
@JsonProperty("page")
private int page;
@JsonProperty("results")
private List<Company> results;
@JsonProperty("total_pages")
private int totalPages;
@JsonProperty("total_results")
private int totalResults;
//<editor-fold defaultstate="collapsed" desc="Getter methods">
public int getPage() {
return page;
}
public List<Company> getResults() {
return results;
}
public int getTotalPages() {
return totalPages;
}
public int getTotalResults() {
return totalResults;
}
//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Setter methods">
public void setPage(int page) {
this.page = page;
}
public void setResults(List<Company> results) {
this.results = results;
}
public void setTotalPages(int totalPages) {
this.totalPages = totalPages;
}
public void setTotalResults(int totalResults) {
this.totalResults = totalResults;
}
//</editor-fold>
/**
* Handle unknown properties and print a message
* @param key
* @param value
*/
@JsonAnySetter
public void handleUnknown(String key, Object value) {
StringBuilder sb = new StringBuilder();
sb.append("Unknown property: '").append(key);
sb.append("' value: '").append(value).append("'");
LOGGER.warn(sb.toString());
}
}
@@ -0,0 +1,59 @@
/*
* Copyright (c) 2004-2012 YAMJ Members
* http://code.google.com/p/moviejukebox/people/list
*
* Web: http://code.google.com/p/moviejukebox/
*
* This software is licensed under a Creative Commons License
* See this page: http://code.google.com/p/moviejukebox/wiki/License
*
* For any reuse or distribution, you must make clear to others the
* license terms of this work.
*/
package com.moviejukebox.themoviedb.wrapper;
import com.moviejukebox.themoviedb.model.Genre;
import java.util.List;
import org.apache.log4j.Logger;
import org.codehaus.jackson.annotate.JsonAnySetter;
import org.codehaus.jackson.annotate.JsonProperty;
/**
* Wrapper class for the Genres searches
*
* @author Stuart
*/
public class WrapperGenres {
/*
* Logger
*/
private static final Logger LOGGER = Logger.getLogger(WrapperGenres.class);
/*
* Properties
*/
@JsonProperty("genres")
private List<Genre> genres;
public List<Genre> getGenres() {
return genres;
}
public void setGenres(List<Genre> genres) {
this.genres = genres;
}
/**
* Handle unknown properties and print a message
*
* @param key
* @param value
*/
@JsonAnySetter
public void handleUnknown(String key, Object value) {
StringBuilder sb = new StringBuilder();
sb.append("Unknown property: '").append(key);
sb.append("' value: '").append(value).append("'");
LOGGER.warn(sb.toString());
}
}
@@ -39,6 +39,8 @@ public class WrapperResultList {
private int totalPages;
@JsonProperty("total_results")
private int totalResults;
@JsonProperty("id")
private int id;
//<editor-fold defaultstate="collapsed" desc="Getter methods">
public int getPage() {
@@ -56,6 +58,10 @@ public class WrapperResultList {
public int getTotalResults() {
return totalResults;
}
public int getId() {
return id;
}
//</editor-fold>
//<editor-fold defaultstate="collapsed" desc="Setter methods">
@@ -74,10 +80,15 @@ public class WrapperResultList {
public void setTotalResults(int totalResults) {
this.totalResults = totalResults;
}
public void setId(int id) {
this.id = id;
}
//</editor-fold>
/**
* Handle unknown properties and print a message
*
* @param key
* @param value
*/
@@ -96,6 +107,7 @@ public class WrapperResultList {
sb.append("],[pageResults=").append(results.size());
sb.append("],[totalPages=").append(totalPages);
sb.append("],[totalResults=").append(totalResults);
sb.append("],[id=").append(id);
sb.append("]]");
return sb.toString();
}
@@ -17,8 +17,8 @@ import java.io.IOException;
import java.util.List;
import org.apache.commons.lang3.StringUtils;
import org.apache.log4j.Logger;
import static org.junit.Assert.*;
import org.junit.*;
import static org.junit.Assert.*;
/**
* Test cases for TheMovieDb API
@@ -37,6 +37,8 @@ public class TheMovieDbTest {
private static final int ID_MOVIE_STAR_WARS_COLLECTION = 10;
private static final int ID_PERSON_BRUCE_WILLIS = 62;
private static final int ID_COMPANY_LUCASFILM = 1;
private static final String COMPANY_NAME = "Marvel Studios";
private static final int ID_GENRE_ACTION = 28;
public TheMovieDbTest() throws MovieDbException {
tmdb = new TheMovieDb(API_KEY);
@@ -380,4 +382,51 @@ public class TheMovieDbTest {
List<MovieDb> results = tmdb.getCompanyMovies(ID_COMPANY_LUCASFILM, "", true);
assertTrue("No company movies found", !results.isEmpty());
}
/**
* Test of showVersion method, of class TheMovieDb.
*/
@Test
public void testShowVersion() {
// Not required
}
/**
* Test of searchCompanies method, of class TheMovieDb.
*/
@Test
public void testSearchCompanies() throws Exception {
LOGGER.info("searchCompanies");
List<Company> results = tmdb.searchCompanies(COMPANY_NAME, "", true);
assertTrue("No company information found", !results.isEmpty());
}
/**
* Test of getSimilarMovies method, of class TheMovieDb.
*/
@Test
public void testGetSimilarMovies() throws Exception {
LOGGER.info("getSimilarMovies");
List<MovieDb> results = tmdb.getSimilarMovies(ID_MOVIE_BLADE_RUNNER, "", true);
assertTrue("No similar movies found", !results.isEmpty());
}
/**
* Test of getGenreList method, of class TheMovieDb.
*/
@Test
public void testGetGenreList() throws MovieDbException {
LOGGER.info("getGenreList");
List<Genre> results = tmdb.getGenreList("");
assertTrue("No genres found", !results.isEmpty());
}
/**
* Test of getGenreMovies method, of class TheMovieDb.
*/
@Test
public void testGetGenreMovies() throws MovieDbException {
LOGGER.info("getGenreMovies");
List<MovieDb> results = tmdb.getGenreMovies(ID_GENRE_ACTION, "", true);
assertTrue("No genre movies found", !results.isEmpty());
}
}