60 Commits

Author SHA1 Message Date
Stuart Boston 34b337aecd Merge pull request #50 from Omertron/dependabot/maven/junit-junit-4.13.1
Bump junit from 4.12 to 4.13.1
2020-11-11 13:30:49 +00:00
dependabot[bot] 3155555d7a Bump junit from 4.12 to 4.13.1
Bumps [junit](https://github.com/junit-team/junit4) from 4.12 to 4.13.1.
- [Release notes](https://github.com/junit-team/junit4/releases)
- [Changelog](https://github.com/junit-team/junit4/blob/main/doc/ReleaseNotes4.12.md)
- [Commits](https://github.com/junit-team/junit4/compare/r4.12...r4.13.1)

Signed-off-by: dependabot[bot] <support@github.com>
2020-10-13 08:04:27 +00:00
Stuart Boston 92c6de7426 Merge pull request #48 from denyskonakhevych/fix-generics
fix compilation problems
2020-01-30 17:54:46 +00:00
denys.konakhevych 252a6abab2 fix compilation problems 2020-01-22 13:48:09 +02:00
Stuart Boston 07b06455cf Merge pull request #47 from Omertron/dependabot/maven/version.jackson-2.10.0
Bump version.jackson from 2.8.11 to 2.10.0
2019-11-05 13:42:37 +00:00
dependabot[bot] c02ae50bff Bump version.jackson from 2.8.11 to 2.10.0
Bumps `version.jackson` from 2.8.11 to 2.10.0.

Updates `jackson-core` from 2.8.11 to 2.10.0
- [Release notes](https://github.com/FasterXML/jackson-core/releases)
- [Commits](https://github.com/FasterXML/jackson-core/compare/jackson-core-2.8.11...jackson-core-2.10.0)

Updates `jackson-annotations` from 2.8.11 to 2.10.0
- [Release notes](https://github.com/FasterXML/jackson/releases)
- [Commits](https://github.com/FasterXML/jackson/commits)

Updates `jackson-databind` from 2.8.11 to 2.10.0
- [Release notes](https://github.com/FasterXML/jackson/releases)
- [Commits](https://github.com/FasterXML/jackson/commits)

Signed-off-by: dependabot[bot] <support@github.com>
2019-11-04 21:25:14 +00:00
Stuart Boston bf132d7c72 Merge pull request #46 from Kaferusha/primary_release
added methods to Discover
2018-07-26 15:06:23 +01:00
Anastasiya Zhukova 9667a34a01 added methods to Discover 2018-07-11 11:40:54 +07:00
Stuart Boston efeae0de0b Rollback Jackson version 2018-04-03 21:50:41 +01:00
Stuart Boston 963dceb6bd Fix Networks Test 2018-04-03 21:47:38 +01:00
Stuart Boston 695077a1d7 Update POM versions 2018-04-03 21:24:06 +01:00
Stuart Boston 2de5728b3a Add javadoc 2018-04-03 20:53:15 +01:00
Stuart Boston 6733bb6191 Update credit methods
CreditBasic
CreditMovieBasic
CreditTVBasic
2018-04-03 20:35:25 +01:00
Stuart Boston 71178f21cd Update TVSeasonBasic
Add Name and Overview
2018-04-03 20:09:27 +01:00
Stuart Boston a0a6a62dbe Update PersonFind
add KnownForDepartment
2018-04-03 20:03:08 +01:00
Stuart Boston 119a51c8e8 Update person models 2018-04-03 19:45:03 +01:00
Stuart Boston 240110848a Update Network 2018-04-03 19:41:10 +01:00
Stuart Boston 4f89f03b7f Update JobDepartment list
renamed job_list to jobs
2018-04-03 19:38:53 +01:00
Stuart Boston 33daddb40e Update Network model 2018-04-03 18:49:57 +01:00
Stuart Boston 4203dc55a5 Update Alternative Titles 2018-04-02 21:41:55 +01:00
Stuart Boston 998eb06b69 Update Company Information 2018-04-02 21:15:57 +01:00
Stuart Boston 71fa47b48f Merge pull request #44 from aviemzur/get-movie-recommendations
Get movie recommendations method
2018-01-25 15:22:22 +00:00
Stuart Boston 67bb8d21bd Merge pull request #43 from aviemzur/add-intellij-idea-files-to-gitignore
Add IntelliJ IDEA files to .gitignore
2018-01-25 15:22:06 +00:00
Aviem Zur d6542d0676 Get movie recommendations method 2018-01-15 07:31:23 +02:00
Aviem Zur 02b03c5c58 Add IntelliJ IDEA files to .gitignore 2018-01-15 07:24:36 +02:00
Stuart Boston eb9e9930e1 More javadoc fixes 2017-07-07 13:58:52 +01:00
Stuart Boston dd82c0d906 More javadoc 2017-07-07 11:58:50 +01:00
Stuart Boston e184077f9d Add more javadoc 2017-07-07 11:49:08 +01:00
Stuart Boston a7a099ac0c remove un-extended methods
Use the base methods instead
2017-07-07 11:32:55 +01:00
Stuart Boston 3a1251777e Use isEmpty in tests 2017-07-07 11:23:54 +01:00
Stuart Boston 8a3af38b0c Add javadoc to ApiUrl 2017-07-07 10:45:46 +01:00
Stuart Boston 3104588272 Add gender to MediaCreditCrew object 2017-07-07 10:28:54 +01:00
Stuart Boston 95ff0f0119 Merge pull request #41 from stigrv/master
Add missing media type
2017-07-07 09:01:48 +01:00
Stuart Boston c3bd8efbf9 Merge pull request #42 from stigrv/gender
Correct gender assignment
2017-07-07 09:01:20 +01:00
Stig Runar Vangen 09a3fb5ffe Correct gender assignment 2017-07-07 08:55:34 +02:00
Stig Runar Vangen ce06aacec9 Correct gender assignment 2017-07-07 08:47:30 +02:00
Stig Runar Vangen ec9c4dd45c Add missing media type 2017-07-07 08:31:39 +02:00
Stuart Boston 0940c7ac38 Update List test 2017-04-20 21:21:42 +01:00
Stuart Boston ca9f3248b7 Skip invalid show in test
Supernatural doesnt have alt titles
2017-04-20 20:03:40 +01:00
Stuart Boston b91dac2c9d Remove unsupported SearchList function 2017-04-20 19:25:02 +01:00
Stuart Boston c5a1a85a2a Add gender to MediaCreditCast 2017-04-20 18:22:51 +01:00
Stuart Boston 9ab81018dd Add additional fields to methods 2017-03-17 10:40:16 +00:00
Stuart Boston 6eec791933 Update POM versions 2017-03-17 09:22:46 +00:00
Omertron 74fac5636a [maven-release-plugin] prepare for next development iteration 2016-05-01 15:31:54 +00:00
Omertron 3f1c359a9f [maven-release-plugin] prepare release themoviedbapi-4.3 2016-05-01 15:31:43 +00:00
Stuart Boston 0c455accb5 Rename ReleaseDate field
A field should not duplicate the name of its containing class
2016-03-24 20:54:39 +00:00
Stuart Boston ca4fc59a80 Rename language field
A field should not duplicate the name of its containing class
2016-03-24 20:53:16 +00:00
Stuart Boston 799d6d6fd5 Add ReleaseDates method
fixes #36
2016-03-20 10:28:21 +00:00
Stuart Boston 39465e1ba2 Fix NowPlaying call 2016-03-20 08:18:41 +00:00
Stuart Boston c208b62384 update from method 2016-03-19 20:33:03 +00:00
Stuart Boston e83d947dfe Add gender to Person 2016-03-19 19:33:27 +00:00
Stuart Boston bab9c80781 Add facebook and twitter IDs 2016-03-19 19:33:14 +00:00
Stuart Boston 45515869c6 Add missing country to Video 2016-03-19 17:37:20 +00:00
Stuart Boston 11f18ce3d8 Correct use of iso code names 2016-03-19 16:02:03 +00:00
Stuart Boston a9e22f4d75 fix java doc 2016-03-19 15:33:34 +00:00
Stuart Boston 1d977f9d7b Add missing language to translation 2016-03-19 15:31:31 +00:00
Stuart Boston 96aa13bd70 Merge pull request #34 from DevFactory/release/consective-appends-should-reuse-fix-1
Consecutive Appends Should Reuse
2016-03-04 13:44:18 +00:00
Zeeshan Asghar 84e08a93e2 pmd:ConsecutiveAppendsShouldReuse Consecutive Appends Should Reuse 2016-03-04 13:38:09 +05:00
Stuart Boston 2dc61738c8 Add empty test for debugging 2016-02-26 13:07:51 +00:00
Omertron b0c998b984 [maven-release-plugin] prepare for next development iteration 2016-02-26 09:17:57 +00:00
59 changed files with 1275 additions and 678 deletions
+4 -1
View File
@@ -11,4 +11,7 @@ testing.properties
.settings
.classpath
.project
.DS_Store
.DS_Store
/nbproject/
.idea
*.iml
+29 -18
View File
@@ -13,7 +13,7 @@
<groupId>com.omertron</groupId>
<artifactId>themoviedbapi</artifactId>
<version>4.2</version>
<version>4.4-SNAPSHOT</version>
<packaging>jar</packaging>
<name>API-The MovieDB</name>
@@ -71,12 +71,14 @@
<project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
<project.reporting.outputEncoding>UTF-8</project.reporting.outputEncoding>
<distribution.format>zip</distribution.format>
<version.jackson>2.7.1</version.jackson>
<version.slf4j>1.7.16</version.slf4j>
<maven.compiler.source>1.7</maven.compiler.source>
<maven.compiler.target>1.7</maven.compiler.target>
<version.jackson>2.10.0</version.jackson>
<version.slf4j>1.7.25</version.slf4j>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<timestamp>${maven.build.timestamp}</timestamp>
<maven.build.timestamp.format>yyyy-MM-dd-HHmm</maven.build.timestamp.format>
<!--Turn off javadoc errors-->
<additionalparam>-Xdoclint:none</additionalparam>
</properties>
<dependencies>
@@ -84,7 +86,7 @@
<dependency>
<groupId>junit</groupId>
<artifactId>junit</artifactId>
<version>4.12</version>
<version>4.13.1</version>
<scope>test</scope>
</dependency>
<!--JSON-->
@@ -119,23 +121,32 @@
<dependency>
<groupId>org.yamj</groupId>
<artifactId>api-common</artifactId>
<version>2.0</version>
<version>2.1</version>
</dependency>
<!-- Apache Utils -->
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-lang3</artifactId>
<version>3.4</version>
<version>3.7</version>
</dependency>
<dependency>
<groupId>commons-io</groupId>
<artifactId>commons-io</artifactId>
<version>2.4</version>
<version>2.6</version>
<scope>test</scope>
</dependency>
</dependencies>
<profiles>
<profile>
<id>disable-java8-doclint</id>
<activation>
<jdk>[1.8,)</jdk>
</activation>
<properties>
<additionalparam>-Xdoclint:none</additionalparam>
</properties>
</profile>
<profile>
<id>release-sign-artifacts</id>
<activation>
@@ -181,7 +192,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-assembly-plugin</artifactId>
<version>2.6</version>
<version>3.1.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
@@ -191,7 +202,7 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-compiler-plugin</artifactId>
<version>3.5.1</version>
<version>3.7.0</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
@@ -211,27 +222,27 @@
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-jar-plugin</artifactId>
<version>2.6</version>
<version>3.0.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-resources-plugin</artifactId>
<version>2.7</version>
<version>3.0.2</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-site-plugin</artifactId>
<version>3.5</version>
<version>3.7</version>
</plugin>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<version>2.21.0</version>
</plugin>
<plugin>
<groupId>pl.project13.maven</groupId>
<artifactId>git-commit-id-plugin</artifactId>
<version>2.2.0</version>
<version>2.2.4</version>
</plugin>
</plugins>
</pluginManagement>
@@ -343,12 +354,12 @@
<extension>
<groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-provider-gitexe</artifactId>
<version>1.9.4</version>
<version>1.9.5</version>
</extension>
<extension>
<groupId>org.apache.maven.scm</groupId>
<artifactId>maven-scm-manager-plexus</artifactId>
<version>1.9.4</version>
<version>1.9.5</version>
</extension>
<extension>
<groupId>org.kathrynhuxtable.maven.wagon</groupId>
@@ -33,7 +33,7 @@ public class AppendToResponseBuilder {
/**
* Construct the builder with the first method
*
* @param method
* @param method method
*/
public AppendToResponseBuilder(AppendToResponseMethod method) {
response = new StringBuilder(method.getPropertyString());
@@ -42,7 +42,7 @@ public class AppendToResponseBuilder {
/**
* Generate the string
*
* @return
* @return ATR string
*/
public String build() {
return response.toString();
@@ -51,8 +51,8 @@ public class AppendToResponseBuilder {
/**
* Add a method to the list
*
* @param method
* @return
* @param method method
* @return builder
*/
public AppendToResponseBuilder add(AppendToResponseMethod method) {
response.append(",").append(method.getPropertyString());
@@ -39,7 +39,7 @@ public class Compare {
}
/**
* Compare the MovieDB object with a title & year
* Compare the MovieDB object with a title and year
*
* @param moviedb The moviedb object to compare too
* @param title The title of the movie to compare
@@ -51,7 +51,7 @@ public class Compare {
}
/**
* Compare the MovieDB object with a title & year
* Compare the MovieDB object with a title and year
*
* @param moviedb The moviedb object to compare too
* @param title The title of the movie to compare
@@ -107,13 +107,13 @@ public class Compare {
}
/**
* Compare the MovieDB object with a title & year, case sensitive
* Compare the MovieDB object with a title and year, case sensitive
*
* @param moviedb
* @param title
* @param year
* @param maxDistance
* @return
* @param moviedb movieinfo
* @param title title
* @param year year
* @param maxDistance maximum distance
* @return true if matched
*/
public static boolean movies(final MovieInfo moviedb, final String title, final String year, int maxDistance) {
return Compare.movies(moviedb, title, year, maxDistance, true);
@@ -122,9 +122,9 @@ public class Compare {
/**
* Compare the Levenshtein Distance between the two strings
*
* @param title1
* @param title2
* @param distance
* @param title1 title
* @param title2 title
* @param distance max distance
*/
private static boolean compareDistance(final String title1, final String title2, int distance) {
return StringUtils.getLevenshteinDistance(title1, title2) <= distance;
@@ -133,7 +133,7 @@ public class Compare {
/**
* Check the year is not blank or UNKNOWN
*
* @param year
* @param year year
*/
private static boolean isValidYear(final String year) {
return StringUtils.isNotBlank(year) && !"UNKNOWN".equals(year);
File diff suppressed because it is too large Load Diff
@@ -46,8 +46,8 @@ public enum ArtworkType {
/**
* Convert a string into an Enum type
*
* @param artworkType
* @return
* @param artworkType String to convert to enum
* @return enum version of param
* @throws IllegalArgumentException If type is not recognised
*
*/
@@ -0,0 +1,48 @@
/*
* Copyright (c) 2004-2016 Stuart Boston
*
* This file is part of TheMovieDB API.
*
* TheMovieDB API is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* TheMovieDB API is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
*
*/
package com.omertron.themoviedbapi.enumeration;
public enum Gender {
MALE(2),
FEMALE(1),
UNKNOWN(0);
private final int type;
private Gender(int type) {
this.type = type;
}
/**
* Get the gender from an integer type
*
* @param type Integer to convert to enum
* @return enum version of param
*/
public static Gender fromInteger(int type) {
for (Gender gender : Gender.values()) {
if (gender.type == type) {
return gender;
}
}
return UNKNOWN;
}
}
@@ -36,6 +36,10 @@ public enum MediaType {
* TV Show media type
*/
TV,
/**
* TV Season media type
*/
SEASON,
/**
* TV Episode media type
*/
@@ -44,8 +48,8 @@ public enum MediaType {
/**
* Convert a string into an Enum type
*
* @param mediaType
* @return
* @param mediaType String to convert to enum
* @return enum version of param
* @throws IllegalArgumentException If type is not recognised
*
*/
@@ -35,6 +35,7 @@ public enum MovieMethod implements AppendToResponseMethod {
IMAGES,
KEYWORDS,
LISTS,
RECOMMENDATIONS,
RELEASES,
REVIEWS,
SIMILAR,
@@ -44,7 +45,7 @@ public enum MovieMethod implements AppendToResponseMethod {
/**
* Get the string to use in the URL
*
* @return
* @return the string representation of the enum
*/
@Override
public String getPropertyString() {
@@ -54,8 +55,8 @@ public enum MovieMethod implements AppendToResponseMethod {
/**
* Convert a string into an Enum type
*
* @param method
* @return
* @param method String to convert to enum
* @return enum version of param
* @throws IllegalArgumentException If type is not recognised
*
*/
@@ -40,7 +40,7 @@ public enum PeopleMethod implements AppendToResponseMethod {
/**
* Get the string to use in the URL
*
* @return
* @return the string representation of the enum
*/
@Override
public String getPropertyString() {
@@ -50,8 +50,8 @@ public enum PeopleMethod implements AppendToResponseMethod {
/**
* Convert a string into an Enum type
*
* @param method
* @return
* @param method String to convert to enum
* @return enum version of param
* @throws IllegalArgumentException If type is not recognised
*
*/
@@ -0,0 +1,57 @@
/*
* Copyright (c) 2004-2016 Stuart Boston
*
* This file is part of TheMovieDB API.
*
* TheMovieDB API is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* TheMovieDB API is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
*
*/
package com.omertron.themoviedbapi.enumeration;
/**
* Release Type for the video
*
* @author stuar
*/
public enum ReleaseType {
PREMIERE(1),
THEATRICAL_LIMITED(2),
THEATRICAL(3),
DIGITAL(4),
PHYSICAL(5),
TV(6),
UNKNOWN(0);
private final int type;
private ReleaseType(int type) {
this.type = type;
}
/**
* Get the Release Type from an integer type
*
* @param type Integer to convert to enum
* @return enum version of param
*/
public static ReleaseType fromInteger(int type) {
for (ReleaseType rt : ReleaseType.values()) {
if (rt.type == type) {
return rt;
}
}
return UNKNOWN;
}
}
@@ -37,7 +37,7 @@ public enum TVEpisodeMethod implements AppendToResponseMethod {
/**
* Get the string to use in the URL
*
* @return
* @return the string representation of the enum
*/
@Override
public String getPropertyString() {
@@ -47,8 +47,8 @@ public enum TVEpisodeMethod implements AppendToResponseMethod {
/**
* Convert a string into an Enum type
*
* @param method
* @return
* @param method String to convert to enum
* @return enum version of param
* @throws IllegalArgumentException If type is not recognised
*
*/
@@ -32,6 +32,7 @@ import com.omertron.themoviedbapi.model.list.UserList;
import com.omertron.themoviedbapi.model.media.AlternativeTitle;
import com.omertron.themoviedbapi.model.movie.MovieBasic;
import com.omertron.themoviedbapi.model.movie.MovieInfo;
import com.omertron.themoviedbapi.model.movie.ReleaseDates;
import com.omertron.themoviedbapi.model.person.ContentRating;
import com.omertron.themoviedbapi.model.person.PersonInfo;
import com.omertron.themoviedbapi.model.person.PersonFind;
@@ -48,6 +49,7 @@ import com.omertron.themoviedbapi.tools.TmdbParameters;
import com.omertron.themoviedbapi.results.WrapperChanges;
import com.omertron.themoviedbapi.results.WrapperGenericList;
import java.io.IOException;
import java.io.Serializable;
import java.net.URL;
import java.util.HashMap;
import java.util.List;
@@ -67,7 +69,7 @@ public class AbstractMethod {
protected final HttpTools httpTools;
// Jackson JSON configuration
protected static final ObjectMapper MAPPER = new ObjectMapper();
private static final Map<Class, TypeReference> TYPE_REFS = new HashMap<>();
private static final Map<Class<? extends Serializable>, TypeReference<? extends WrapperGenericList<? extends Serializable>>> TYPE_REFS = new HashMap<>();
static {
TYPE_REFS.put(MovieBasic.class, new TypeReference<WrapperGenericList<MovieBasic>>() {
@@ -100,6 +102,8 @@ public class AbstractMethod {
});
TYPE_REFS.put(AlternativeTitle.class, new TypeReference<WrapperGenericList<AlternativeTitle>>() {
});
TYPE_REFS.put(ReleaseDates.class, new TypeReference<WrapperGenericList<ReleaseDates>>() {
});
}
@@ -121,9 +125,9 @@ public class AbstractMethod {
* @return
* @throws MovieDbException
*/
protected static TypeReference getTypeReference(Class aClass) throws MovieDbException {
protected static <T> TypeReference<? extends WrapperGenericList<T>> getTypeReference(Class<T> aClass) throws MovieDbException {
if (TYPE_REFS.containsKey(aClass)) {
return TYPE_REFS.get(aClass);
return (TypeReference<? extends WrapperGenericList<T>>) TYPE_REFS.get(aClass);
} else {
throw new MovieDbException(ApiExceptionType.UNKNOWN_CAUSE, "Class type reference for '" + aClass.getSimpleName() + "' not found!");
}
@@ -139,7 +143,7 @@ public class AbstractMethod {
* @return
* @throws MovieDbException
*/
protected <T> List<T> processWrapperList(TypeReference typeRef, URL url, String errorMessageSuffix) throws MovieDbException {
protected <T> List<T> processWrapperList(TypeReference<? extends WrapperGenericList<T>> typeRef, URL url, String errorMessageSuffix) throws MovieDbException {
WrapperGenericList<T> val = processWrapper(typeRef, url, errorMessageSuffix);
return val.getResults();
}
@@ -154,7 +158,7 @@ public class AbstractMethod {
* @return
* @throws MovieDbException
*/
protected <T> WrapperGenericList<T> processWrapper(TypeReference typeRef, URL url, String errorMessageSuffix) throws MovieDbException {
protected <T> WrapperGenericList<T> processWrapper(TypeReference<? extends WrapperGenericList<T>> typeRef, URL url, String errorMessageSuffix) throws MovieDbException {
String webpage = httpTools.getRequest(url);
try {
// Due to type erasure, this doesn't work
@@ -32,6 +32,7 @@ import com.omertron.themoviedbapi.model.media.MediaState;
import com.omertron.themoviedbapi.model.media.Translation;
import com.omertron.themoviedbapi.model.media.Video;
import com.omertron.themoviedbapi.model.movie.MovieInfo;
import com.omertron.themoviedbapi.model.movie.ReleaseDates;
import com.omertron.themoviedbapi.model.movie.ReleaseInfo;
import com.omertron.themoviedbapi.model.review.Review;
import com.omertron.themoviedbapi.results.ResultList;
@@ -78,8 +79,7 @@ public class TmdbMovies extends AbstractMethod {
*
* It will return the single highest rated poster and backdrop.
*
* ApiExceptionType.MOVIE_ID_NOT_FOUND will be thrown if there are no movies
* found.
* ApiExceptionType.MOVIE_ID_NOT_FOUND will be thrown if there are no movies found.
*
* @param movieId
* @param language
@@ -111,8 +111,7 @@ public class TmdbMovies extends AbstractMethod {
*
* It will return the single highest rated poster and backdrop.
*
* ApiExceptionType.MOVIE_ID_NOT_FOUND will be thrown if there are no movies
* found.
* ApiExceptionType.MOVIE_ID_NOT_FOUND will be thrown if there are no movies found.
*
* @param imdbId
* @param language
@@ -141,8 +140,8 @@ public class TmdbMovies extends AbstractMethod {
}
/**
* This method lets a user get the status of whether or not the movie has
* been rated or added to their favourite or movie watch list.
* This method lets a user get the status of whether or not the movie has been rated or added to their favourite or movie watch
* list.
*
* A valid session id is required.
*
@@ -167,8 +166,7 @@ public class TmdbMovies extends AbstractMethod {
}
/**
* 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
@@ -213,8 +211,7 @@ public class TmdbMovies extends AbstractMethod {
}
/**
* 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
@@ -240,8 +237,7 @@ public class TmdbMovies extends AbstractMethod {
}
/**
* This method is used to retrieve all of the keywords that have been added
* to a particular movie.
* This method is used to retrieve all of the keywords that have been added to a particular movie.
*
* Currently, only English keywords exist.
*
@@ -267,8 +263,25 @@ public class TmdbMovies extends AbstractMethod {
}
/**
* This method is used to retrieve all of the release and certification data
* we have for a specific movie.
* The recommendations method will let you retrieve the movie recommendations for a particular movie.
*
* @param movieId
* @param language
* @return
* @throws MovieDbException
*/
public ResultList<MovieInfo> getRecommendations(int movieId, String language) throws MovieDbException {
TmdbParameters parameters = new TmdbParameters();
parameters.add(Param.ID, movieId);
parameters.add(Param.LANGUAGE, language);
URL url = new ApiUrl(apiKey, MethodBase.MOVIE).subMethod(MethodSub.RECOMMENDATIONS).buildUrl(parameters);
WrapperGenericList<MovieInfo> wrapper = processWrapper(getTypeReference(MovieInfo.class), url, "recommendations");
return wrapper.getResultsList();
}
/**
* This method is used to retrieve all of the release and certification data we have for a specific movie.
*
* @param movieId
* @param language
@@ -294,8 +307,7 @@ public class TmdbMovies extends AbstractMethod {
}
/**
* This method is used to retrieve all of the trailers for a particular
* movie.
* This method is used to retrieve all of the trailers for a particular movie.
*
* Supported sites are YouTube and QuickTime.
*
@@ -323,8 +335,25 @@ public class TmdbMovies extends AbstractMethod {
}
/**
* This method is used to retrieve a list of the available translations for
* a specific movie.
* Get the release dates, certifications and related information by country for a specific movie id.
*
* The results are keyed by country code and contain a type value.
*
* @param movieId
* @return
* @throws MovieDbException
*/
public ResultList<ReleaseDates> getReleaseDates(int movieId) throws MovieDbException {
TmdbParameters parameters = new TmdbParameters();
parameters.add(Param.ID, movieId);
URL url = new ApiUrl(apiKey, MethodBase.MOVIE).subMethod(MethodSub.RELEASE_DATES).buildUrl(parameters);
WrapperGenericList<ReleaseDates> wrapper = processWrapper(getTypeReference(ReleaseDates.class), url, "release dates");
return wrapper.getResultsList();
}
/**
* This method is used to retrieve a list of the available translations for a specific movie.
*
* @param movieId
* @return
@@ -348,11 +377,9 @@ public class TmdbMovies extends AbstractMethod {
}
/**
* The similar movies method will let you retrieve the similar movies for a
* particular movie.
* 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.
* 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
*
@@ -420,8 +447,7 @@ public class TmdbMovies extends AbstractMethod {
*
* By default, only the last 24 hours of changes are returned.
*
* The maximum number of days that can be returned in a single request is
* 14.
* The maximum number of days that can be returned in a single request is 14.
*
* The language is present on fields that are translatable.
*
@@ -513,8 +539,7 @@ public class TmdbMovies extends AbstractMethod {
/**
* 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 is a curated list that will normally contain 100 movies. The default response will return 20 movies.
*
* @param language
* @param page
@@ -552,8 +577,7 @@ public class TmdbMovies extends AbstractMethod {
}
/**
* This method is used to retrieve the top rated movies that have over 10
* votes on TMDb.
* This method is used to retrieve the top rated movies that have over 10 votes on TMDb.
*
* The default response will return 20 movies.
*
@@ -113,7 +113,7 @@ public class TmdbPeople extends AbstractMethod {
String webpage = httpTools.getRequest(url);
try {
TypeReference tr = new TypeReference<PersonCreditList<CreditMovieBasic>>() {
TypeReference<PersonCreditList<CreditMovieBasic>> tr = new TypeReference<PersonCreditList<CreditMovieBasic>>() {
};
return MAPPER.readValue(webpage, tr);
} catch (IOException ex) {
@@ -144,7 +144,7 @@ public class TmdbPeople extends AbstractMethod {
String webpage = httpTools.getRequest(url);
try {
TypeReference tr = new TypeReference<PersonCreditList<CreditTVBasic>>() {
TypeReference<PersonCreditList<CreditTVBasic>> tr = new TypeReference<PersonCreditList<CreditTVBasic>>() {
};
return MAPPER.readValue(webpage, tr);
} catch (IOException ex) {
@@ -177,7 +177,7 @@ public class TmdbPeople extends AbstractMethod {
try {
ObjectMapper mapper = new ObjectMapper();
mapper.addMixIn(PersonCreditList.class, PersonCreditsMixIn.class);
TypeReference tr = new TypeReference<PersonCreditList<CreditBasic>>() {
TypeReference<PersonCreditList<CreditBasic>> tr = new TypeReference<PersonCreditList<CreditBasic>>() {
};
return mapper.readValue(webpage, tr);
} catch (IOException ex) {
@@ -25,7 +25,6 @@ import static com.omertron.themoviedbapi.methods.AbstractMethod.MAPPER;
import com.omertron.themoviedbapi.model.collection.Collection;
import com.omertron.themoviedbapi.model.company.Company;
import com.omertron.themoviedbapi.model.keyword.Keyword;
import com.omertron.themoviedbapi.model.list.UserList;
import com.omertron.themoviedbapi.model.media.MediaBasic;
import com.omertron.themoviedbapi.model.movie.MovieInfo;
import com.omertron.themoviedbapi.model.person.PersonFind;
@@ -121,26 +120,6 @@ public class TmdbSearch extends AbstractMethod {
return wrapper.getResultsList();
}
/**
* Search for lists by name and description.
*
* @param query
* @param includeAdult
* @param page
* @return
* @throws MovieDbException
*/
public ResultList<UserList> searchList(String query, Integer page, Boolean includeAdult) throws MovieDbException {
TmdbParameters parameters = new TmdbParameters();
parameters.add(Param.QUERY, query);
parameters.add(Param.PAGE, page);
parameters.add(Param.INCLUDE_ADULT, includeAdult);
URL url = new ApiUrl(apiKey, MethodBase.SEARCH).subMethod(MethodSub.LIST).buildUrl(parameters);
WrapperGenericList<UserList> wrapper = processWrapper(getTypeReference(UserList.class), url, "list");
return wrapper.getResultsList();
}
/**
* Search Movies This is a good starting point to start finding movies on TMDb.
*
@@ -45,8 +45,8 @@ public abstract class AbstractJsonMapping implements Serializable {
@JsonAnySetter
protected void handleUnknown(String key, Object value) {
StringBuilder unknown = new StringBuilder(this.getClass().getSimpleName());
unknown.append(": Unknown property='").append(key);
unknown.append("' value='").append(value).append("'");
unknown.append(": Unknown property='").append(key)
.append("' value='").append(value).append("'");
LOG.trace(unknown.toString());
}
@@ -34,20 +34,20 @@ public class Language extends AbstractJsonMapping implements Serializable {
private static final long serialVersionUID = 100L;
@JsonProperty("iso_639_1")
private String isoCode;
private String code;
@JsonProperty("name")
private String name;
public String getIsoCode() {
return isoCode;
public String getCode() {
return code;
}
public String getName() {
return name;
}
public void setIsoCode(String isoCode) {
this.isoCode = isoCode;
public void setCode(String code) {
this.code = code;
}
public void setName(String name) {
@@ -59,7 +59,7 @@ public class Language extends AbstractJsonMapping implements Serializable {
if (obj instanceof Language) {
final Language other = (Language) obj;
return new EqualsBuilder()
.append(isoCode, other.isoCode)
.append(code, other.code)
.append(name, other.name)
.isEquals();
} else {
@@ -70,7 +70,7 @@ public class Language extends AbstractJsonMapping implements Serializable {
@Override
public int hashCode() {
return new HashCodeBuilder()
.append(isoCode)
.append(code)
.append(name)
.toHashCode();
}
@@ -48,6 +48,8 @@ public class Company extends AbstractJsonMapping implements Serializable, Identi
private String logoPath = EMPTY;
@JsonProperty("parent_company")
private Company parentCompany = null;
@JsonProperty("origin_country")
private String originCountry;
@Override
public int getId() {
@@ -114,4 +116,13 @@ public class Company extends AbstractJsonMapping implements Serializable, Identi
parent.setLogoPath(logoPath);
this.parentCompany = parent;
}
public String getOriginCountry() {
return originCountry;
}
public void setOriginCountry(String originCountry) {
this.originCountry = originCountry;
}
}
@@ -199,8 +199,7 @@ public class Configuration extends AbstractJsonMapping implements Serializable {
}
StringBuilder sb = new StringBuilder(getBaseUrl());
sb.append(requiredSize);
sb.append(imagePath);
sb.append(requiredSize).append(imagePath);
try {
return new URL(sb.toString());
@@ -30,7 +30,7 @@ public class JobDepartment extends AbstractJsonMapping implements Serializable {
// Properties
@JsonProperty("department")
private String department;
@JsonProperty("job_list")
@JsonProperty("jobs")
private List<String> jobs;
public String getDepartment() {
@@ -27,6 +27,7 @@ import com.omertron.themoviedbapi.enumeration.MediaType;
import com.omertron.themoviedbapi.interfaces.Identification;
import com.omertron.themoviedbapi.model.AbstractJsonMapping;
import java.io.Serializable;
import java.util.List;
/**
* @author stuart.boston
@@ -44,6 +45,20 @@ public class CreditBasic extends AbstractJsonMapping implements Serializable, Id
private int id;
@JsonProperty("poster_path")
private String artworkPath;
@JsonProperty("backdrop_path")
private String backdropPath;
@JsonProperty("genre_ids")
private List<Integer> genreIds;
@JsonProperty("original_language")
private String originalLanguage;
@JsonProperty("overview")
private String overview;
@JsonProperty("popularity")
private float popularity;
@JsonProperty("vote_average")
private float voteAverage;
@JsonProperty("vote_count")
private int voteCount;
//cast
@JsonProperty("character")
@@ -71,7 +86,7 @@ public class CreditBasic extends AbstractJsonMapping implements Serializable, Id
this.mediaType = MediaType.fromString(mediaType);
}
public void setMediaType(MediaType mediaType) {
public final void setMediaType(MediaType mediaType) {
this.mediaType = mediaType;
}
@@ -128,4 +143,60 @@ public class CreditBasic extends AbstractJsonMapping implements Serializable, Id
setCreditType(CreditType.CREW);
}
public String getBackdropPath() {
return backdropPath;
}
public void setBackdropPath(String backdropPath) {
this.backdropPath = backdropPath;
}
public List<Integer> getGenreIds() {
return genreIds;
}
public void setGenreIds(List<Integer> genreIds) {
this.genreIds = genreIds;
}
public String getOriginalLanguage() {
return originalLanguage;
}
public void setOriginalLanguage(String originalLanguage) {
this.originalLanguage = originalLanguage;
}
public String getOverview() {
return overview;
}
public void setOverview(String overview) {
this.overview = overview;
}
public float getPopularity() {
return popularity;
}
public void setPopularity(float popularity) {
this.popularity = popularity;
}
public float getVoteAverage() {
return voteAverage;
}
public void setVoteAverage(float voteAverage) {
this.voteAverage = voteAverage;
}
public int getVoteCount() {
return voteCount;
}
public void setVoteCount(int voteCount) {
this.voteCount = voteCount;
}
}
@@ -38,6 +38,8 @@ public class CreditMovieBasic extends CreditBasic implements Serializable {
private String releaseDate;
@JsonProperty("title")
private String title;
@JsonProperty("video")
private boolean video;
public CreditMovieBasic() {
setMediaType(MediaType.MOVIE);
@@ -75,4 +77,12 @@ public class CreditMovieBasic extends CreditBasic implements Serializable {
this.title = title;
}
public boolean isVideo() {
return video;
}
public void setVideo(boolean video) {
this.video = video;
}
}
@@ -38,6 +38,8 @@ public class CreditTVBasic extends CreditBasic implements Serializable {
private String name;
@JsonProperty("original_name")
private String originalName;
@JsonProperty("origin_country")
private String originCountry;
public CreditTVBasic() {
setMediaType(MediaType.TV);
@@ -75,4 +77,12 @@ public class CreditTVBasic extends CreditBasic implements Serializable {
this.originalName = originalName;
}
public String getOriginCountry() {
return originCountry;
}
public void setOriginCountry(String originCountry) {
this.originCountry = originCountry;
}
}
@@ -40,6 +40,8 @@ public class MediaCredit extends AbstractJsonMapping implements Serializable, Id
private String artworkPath;
@JsonProperty("name")
private String name;
@JsonProperty("gender")
private int gender;
public String getCreditId() {
return creditId;
@@ -75,4 +77,12 @@ public class MediaCredit extends AbstractJsonMapping implements Serializable, Id
this.name = name;
}
public int getGender() {
return gender;
}
public void setGender(int gender) {
this.gender = gender;
}
}
@@ -25,7 +25,7 @@ import com.omertron.themoviedbapi.tools.TmdbParameters;
/**
* Generate a discover object for use in the MovieDbApi
* <p/>
* <p>
* This allows you to just add the search components you are concerned with
*
* @author stuart.boston
@@ -39,7 +39,7 @@ public class Discover {
/**
* Get the parameters
* <p/>
* <p>
* This will be used to construct the URL in the API
*
* @return
@@ -137,6 +137,33 @@ public class Discover {
return this;
}
/**
* The primary minimum release to include.
* <p>
* Expected format is YYYY-MM-DD.
*
* @param primaryReleaseDateGte
* @return
*/
public Discover primaryReleaseDateGte(String primaryReleaseDateGte) {
params.add(Param.PRIMARY_RELEASE_DATE_GTE, primaryReleaseDateGte);
return this;
}
/**
* The primary maximum release to include.
* <p>
* Expected format is YYYY-MM-DD.
*
* @param primaryReleaseDateLte
* @return
*/
public Discover primaryReleaseDateLte(String primaryReleaseDateLte) {
params.add(Param.PRIMARY_RELEASE_DATE_LTE, primaryReleaseDateLte);
return this;
}
/**
* Only include movies that are equal to, or have a vote count higher than this value
*
@@ -183,7 +210,7 @@ public class Discover {
/**
* The minimum release to include.
* <p/>
* <p>
* Expected format is YYYY-MM-DD.
*
* @param releaseDateGte
@@ -196,7 +223,7 @@ public class Discover {
/**
* The maximum release to include.
* <p/>
* <p>
* Expected format is YYYY-MM-DD.
*
* @param releaseDateLte
@@ -209,9 +236,9 @@ public class Discover {
/**
* Only include movies with certifications for a specific country.
* <p/>
* <p>
* When this value is specified, 'certificationLte' is required.
* <p/>
* <p>
* A ISO 3166-1 is expected
*
* @param certificationCountry
@@ -224,7 +251,7 @@ public class Discover {
/**
* Only include movies with this certification and lower.
* <p/>
* <p>
* Expected value is a valid certification for the specified 'certificationCountry'.
*
* @param certificationLte
@@ -337,11 +364,11 @@ public class Discover {
/**
* Only include movies with the specified genres.
* <p/>
* <p>
* Expected value is an integer (the id of a genre).
* <p/>
* <p>
* Multiple values can be specified.
* <p/>
* <p>
* Comma separated indicates an 'AND' query, while a pipe (|) separated value indicates an 'OR'
*
* @param withGenres
@@ -26,6 +26,8 @@ public class ListStatusCode extends StatusCode {
@JsonProperty("list_id")
private String listId;
@JsonProperty("success")
private boolean success;
public String getListId() {
return listId;
@@ -34,4 +36,13 @@ public class ListStatusCode extends StatusCode {
public void setListId(String listId) {
this.listId = listId;
}
public boolean isSuccess() {
return success;
}
public void setSuccess(boolean success) {
this.success = success;
}
}
@@ -35,6 +35,8 @@ public class AlternativeTitle implements Serializable {
private String country;
@JsonProperty("title")
private String title;
@JsonProperty("type")
private String type;
public String getCountry() {
return country;
@@ -52,6 +54,14 @@ public class AlternativeTitle implements Serializable {
this.title = title;
}
public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof AlternativeTitle) {
@@ -59,6 +69,7 @@ public class AlternativeTitle implements Serializable {
return new EqualsBuilder()
.append(country, other.country)
.append(title, other.title)
.append(type, other.type)
.isEquals();
} else {
return false;
@@ -70,6 +81,7 @@ public class AlternativeTitle implements Serializable {
return new HashCodeBuilder()
.append(country)
.append(title)
.append(type)
.toHashCode();
}
}
@@ -37,34 +37,44 @@ public class Translation extends AbstractJsonMapping implements Serializable {
@JsonProperty("english_name")
private String englishName;
@JsonProperty("iso_639_1")
private String isoCode;
private String language;
@JsonProperty("name")
private String name;
@JsonProperty("iso_3166_1")
private String country;
public String getEnglishName() {
return englishName;
}
public String getIsoCode() {
return isoCode;
public String getLanguage() {
return language;
}
public String getName() {
return name;
}
public String getCountry() {
return country;
}
public void setEnglishName(String englishName) {
this.englishName = englishName;
}
public void setIsoCode(String isoCode) {
this.isoCode = isoCode;
public void setLanguage(String language) {
this.language = language;
}
public void setName(String name) {
this.name = name;
}
public void setCountry(String country) {
this.country = country;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Translation) {
@@ -72,7 +82,7 @@ public class Translation extends AbstractJsonMapping implements Serializable {
return new EqualsBuilder()
.append(name, other.name)
.append(englishName, other.englishName)
.append(isoCode, other.isoCode)
.append(language, other.language)
.isEquals();
} else {
return false;
@@ -83,7 +93,7 @@ public class Translation extends AbstractJsonMapping implements Serializable {
public int hashCode() {
return new HashCodeBuilder()
.append(englishName)
.append(isoCode)
.append(language)
.append(name)
.toHashCode();
}
@@ -36,8 +36,6 @@ public class Video extends AbstractJsonMapping implements Serializable {
@JsonProperty("id")
private String id;
@JsonProperty("iso_639_1")
private String language;
@JsonProperty("key")
private String key;
@JsonProperty("name")
@@ -48,6 +46,10 @@ public class Video extends AbstractJsonMapping implements Serializable {
private int size;
@JsonProperty("type")
private String type;
@JsonProperty("iso_639_1")
private String language;
@JsonProperty("iso_3166_1")
private String country;
public String getId() {
return id;
@@ -77,6 +79,10 @@ public class Video extends AbstractJsonMapping implements Serializable {
return language;
}
public String getCountry() {
return country;
}
public void setId(String id) {
this.id = id;
}
@@ -105,6 +111,10 @@ public class Video extends AbstractJsonMapping implements Serializable {
this.language = language;
}
public void setCountry(String country) {
this.country = country;
}
@Override
public boolean equals(Object obj) {
if (obj instanceof Video) {
@@ -115,6 +125,7 @@ public class Video extends AbstractJsonMapping implements Serializable {
.append(size, other.size)
.append(key, other.key)
.append(language, other.language)
.append(country, other.country)
.isEquals();
} else {
return false;
@@ -130,6 +141,7 @@ public class Video extends AbstractJsonMapping implements Serializable {
.append(key)
.append(site)
.append(language)
.append(country)
.toHashCode();
}
}
@@ -94,6 +94,7 @@ public class MovieInfo extends MovieBasic implements Serializable, Identificatio
private List<Video> videos = Collections.emptyList();
private List<Translation> translations = Collections.emptyList();
private List<MovieInfo> similarMovies = Collections.emptyList();
private List<MovieInfo> recommendations = Collections.emptyList();
private List<Review> reviews = Collections.emptyList();
private List<UserList> lists = Collections.emptyList();
private List<ChangeKeyItem> changes = Collections.emptyList();
@@ -295,6 +296,12 @@ public class MovieInfo extends MovieBasic implements Serializable, Identificatio
addMethod(MovieMethod.LISTS);
}
@JsonSetter("recommendations")
public void seRecommendations(WrapperGenericList<MovieInfo> recommendations) {
this.recommendations = recommendations.getResults();
addMethod(MovieMethod.RECOMMENDATIONS);
}
@JsonSetter("reviews")
public void setReviews(WrapperGenericList<Review> reviews) {
this.reviews = reviews.getResults();
@@ -19,6 +19,7 @@
*/
package com.omertron.themoviedbapi.model.movie;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonRootName;
import com.omertron.themoviedbapi.model.AbstractIdName;
import java.io.Serializable;
@@ -30,5 +31,25 @@ import java.io.Serializable;
public class ProductionCompany extends AbstractIdName implements Serializable {
private static final long serialVersionUID = 100L;
// Nothing to override from the base class.
@JsonProperty("logo_path")
private String logoPath;
@JsonProperty("origin_country")
private String originCountry;
public String getLogoPath() {
return logoPath;
}
public void setLogoPath(String logoPath) {
this.logoPath = logoPath;
}
public String getOriginCountry() {
return originCountry;
}
public void setOriginCountry(String originCountry) {
this.originCountry = originCountry;
}
}
@@ -0,0 +1,29 @@
package com.omertron.themoviedbapi.model.movie;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.omertron.themoviedbapi.model.AbstractJsonMapping;
public class Release extends AbstractJsonMapping {
@JsonProperty("certification")
private String certification;
@JsonProperty("release_date")
private String releaseDate;
public String getCertification() {
return certification;
}
public void setCertification(String certification) {
this.certification = certification;
}
public String getReleaseDate() {
return releaseDate;
}
public void setReleaseDate(String releaseDate) {
this.releaseDate = releaseDate;
}
}
@@ -0,0 +1,61 @@
/*
* Copyright (c) 2004-2016 Stuart Boston
*
* This file is part of TheMovieDB API.
*
* TheMovieDB API is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* TheMovieDB API is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
*
*/
package com.omertron.themoviedbapi.model.movie;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSetter;
import com.omertron.themoviedbapi.enumeration.ReleaseType;
public class ReleaseDate extends Release {
private static final long serialVersionUID = 100L;
@JsonProperty("note")
private String note;
@JsonProperty("iso_639_1")
private String language;
private ReleaseType releaseType;
public String getNote() {
return note;
}
public void setNote(String note) {
this.note = note;
}
public String getLanguage() {
return language;
}
public void setLanguage(String language) {
this.language = language;
}
public ReleaseType getType() {
return releaseType;
}
@JsonSetter("type")
public void setType(int type) {
this.releaseType = ReleaseType.fromInteger(type);
}
}
@@ -0,0 +1,30 @@
package com.omertron.themoviedbapi.model.movie;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.omertron.themoviedbapi.model.AbstractJsonMapping;
import java.util.List;
public class ReleaseDates extends AbstractJsonMapping {
@JsonProperty("iso_3166_1")
private String country;
@JsonProperty("release_dates")
private List<ReleaseDate> releaseDate;
public String getCountry() {
return country;
}
public void setCountry(String country) {
this.country = country;
}
public List<ReleaseDate> getReleaseDate() {
return releaseDate;
}
public void setReleaseDate(List<ReleaseDate> releaseDate) {
this.releaseDate = releaseDate;
}
}
@@ -19,7 +19,6 @@
*/
package com.omertron.themoviedbapi.model.movie;
import com.omertron.themoviedbapi.model.AbstractJsonMapping;
import com.fasterxml.jackson.annotation.JsonProperty;
import java.io.Serializable;
import org.apache.commons.lang3.builder.EqualsBuilder;
@@ -28,43 +27,23 @@ import org.apache.commons.lang3.builder.HashCodeBuilder;
/**
* @author Stuart
*/
public class ReleaseInfo extends AbstractJsonMapping implements Serializable {
public class ReleaseInfo extends Release implements Serializable {
private static final long serialVersionUID = 100L;
@JsonProperty("iso_3166_1")
private String country;
@JsonProperty("certification")
private String certification;
@JsonProperty("release_date")
private String releaseDate;
@JsonProperty("primary")
private boolean primary;
public String getCertification() {
return certification;
}
public String getCountry() {
return country;
}
public String getReleaseDate() {
return releaseDate;
}
public void setCertification(String certification) {
this.certification = certification;
}
public void setCountry(String country) {
this.country = country;
}
public void setReleaseDate(String releaseDate) {
this.releaseDate = releaseDate;
}
public boolean isPrimary() {
return primary;
}
@@ -78,9 +57,9 @@ public class ReleaseInfo extends AbstractJsonMapping implements Serializable {
if (obj instanceof ReleaseInfo) {
final ReleaseInfo other = (ReleaseInfo) obj;
return new EqualsBuilder()
.append(country, other.country)
.append(certification, other.certification)
.append(releaseDate, other.releaseDate)
.append(getCountry(), other.getCountry())
.append(getCertification(), other.getCertification())
.append(getReleaseDate(), other.getReleaseDate())
.append(primary, other.primary)
.isEquals();
} else {
@@ -91,9 +70,9 @@ public class ReleaseInfo extends AbstractJsonMapping implements Serializable {
@Override
public int hashCode() {
return new HashCodeBuilder()
.append(country)
.append(certification)
.append(releaseDate)
.append(getCountry())
.append(getCertification())
.append(getReleaseDate())
.append(primary)
.toHashCode();
}
@@ -19,6 +19,7 @@
*/
package com.omertron.themoviedbapi.model.network;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.omertron.themoviedbapi.interfaces.Identification;
import com.omertron.themoviedbapi.model.AbstractIdName;
import java.io.Serializable;
@@ -30,5 +31,45 @@ public class Network extends AbstractIdName implements Serializable, Identificat
private static final long serialVersionUID = 100L;
// Nothing to add to base class
@JsonProperty("headquarters")
private String headquarters;
@JsonProperty("homepage")
private String homepage;
@JsonProperty("origin_country")
private String originCountry;
@JsonProperty("logo_path")
private String logoPath;
public String getHeadquarters() {
return headquarters;
}
public void setHeadquarters(String headquarters) {
this.headquarters = headquarters;
}
public String getHomepage() {
return homepage;
}
public void setHomepage(String homepage) {
this.homepage = homepage;
}
public String getOriginCountry() {
return originCountry;
}
public void setOriginCountry(String originCountry) {
this.originCountry = originCountry;
}
public String getLogoPath() {
return logoPath;
}
public void setLogoPath(String logoPath) {
this.logoPath = logoPath;
}
}
@@ -44,6 +44,12 @@ public class ExternalID extends AbstractJsonMapping implements Serializable, Ide
private String tvdbId;
@JsonProperty("tvrage_id")
private String tvrageId;
@JsonProperty("facebook_id")
private String facebookId;
@JsonProperty("twitter_id")
private String twitterId;
@JsonProperty("instagram_id")
private String instagramId;
@Override
public int getId() {
@@ -95,4 +101,28 @@ public class ExternalID extends AbstractJsonMapping implements Serializable, Ide
this.tvdbId = tvdbId;
}
public String getFacebookId() {
return facebookId;
}
public void setFacebookId(String facebookId) {
this.facebookId = facebookId;
}
public String getTwitterId() {
return twitterId;
}
public void setTwitterId(String twitterId) {
this.twitterId = twitterId;
}
public String getInstagramId() {
return instagramId;
}
public void setInstagramId(String instagramId) {
this.instagramId = instagramId;
}
}
@@ -20,6 +20,8 @@
package com.omertron.themoviedbapi.model.person;
import com.fasterxml.jackson.annotation.JsonProperty;
import com.fasterxml.jackson.annotation.JsonSetter;
import com.omertron.themoviedbapi.enumeration.Gender;
import com.omertron.themoviedbapi.model.AbstractIdName;
import java.io.Serializable;
@@ -32,6 +34,8 @@ public class PersonBasic extends AbstractIdName implements Serializable {
@JsonProperty("profile_path")
private String profilePath;
@JsonProperty("gender")
private Gender gender;
public String getProfilePath() {
return profilePath;
@@ -40,4 +44,18 @@ public class PersonBasic extends AbstractIdName implements Serializable {
public void setProfilePath(String profilePath) {
this.profilePath = profilePath;
}
public Gender getGender() {
return gender;
}
@JsonSetter("gender")
public void setGender(int gender) {
this.gender = Gender.fromInteger(gender);
}
public void setGender(Gender gender) {
this.gender = gender;
}
}
@@ -42,6 +42,8 @@ public class PersonFind extends PersonBasic implements Serializable {
@JsonProperty("popularity")
private Float popularity;
private List<? extends MediaBasic> knownFor;
@JsonProperty("known_for_department")
private String knownForDepartment;
public Boolean getAdult() {
return adult;
@@ -70,8 +72,10 @@ public class PersonFind extends PersonBasic implements Serializable {
defaultImpl = MediaBasic.class
)
@JsonSubTypes({
@JsonSubTypes.Type(value = MovieBasic.class, name = "movie"),
@JsonSubTypes.Type(value = TVBasic.class, name = "tv"),
@JsonSubTypes.Type(value = MovieBasic.class, name = "movie")
,
@JsonSubTypes.Type(value = TVBasic.class, name = "tv")
,
@JsonSubTypes.Type(value = TVEpisodeBasic.class, name = "episode")
})
@JsonSetter("known_for")
@@ -79,4 +83,12 @@ public class PersonFind extends PersonBasic implements Serializable {
this.knownFor = knownFor;
}
public String getKnownForDepartment() {
return knownForDepartment;
}
public void setKnownForDepartment(String knownForDepartment) {
this.knownForDepartment = knownForDepartment;
}
}
@@ -75,10 +75,6 @@ public class TVInfo extends TVBasic implements Serializable, AppendToResponse<TV
private int numberOfEpisodes;
@JsonProperty("number_of_seasons")
private int numberOfSeasons;
@JsonProperty("original_language")
private String originalLanguage;
@JsonProperty("overview")
private String overview;
@JsonProperty("production_companies")
private List<ProductionCompany> productionCompanies;
@JsonProperty("seasons")
@@ -182,22 +178,6 @@ public class TVInfo extends TVBasic implements Serializable, AppendToResponse<TV
this.numberOfSeasons = numberOfSeasons;
}
public String getOriginalLanguage() {
return originalLanguage;
}
public void setOriginalLanguage(String originalLanguage) {
this.originalLanguage = originalLanguage;
}
public String getOverview() {
return overview;
}
public void setOverview(String overview) {
this.overview = overview;
}
public List<ProductionCompany> getProductionCompanies() {
return productionCompanies;
}
@@ -232,6 +212,7 @@ public class TVInfo extends TVBasic implements Serializable, AppendToResponse<TV
//</editor-fold>
@JsonSetter("genre_ids")
@Override
public void setGenreIds(List<Integer> ids) {
this.genres = new ArrayList<>();
@@ -35,6 +35,8 @@ public class TVSeasonBasic extends AbstractJsonMapping implements Serializable,
@JsonProperty("id")
private int id = -1;
@JsonProperty("name")
private String name;
@JsonProperty("air_date")
private String airDate;
@JsonProperty("poster_path")
@@ -43,6 +45,8 @@ public class TVSeasonBasic extends AbstractJsonMapping implements Serializable,
private int seasonNumber;
@JsonProperty("episode_count")
private int episodeCount = -1;
@JsonProperty("overview")
private String overview;
@Override
public int getId() {
@@ -86,4 +90,20 @@ public class TVSeasonBasic extends AbstractJsonMapping implements Serializable,
this.episodeCount = episodeCount;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getOverview() {
return overview;
}
public void setOverview(String overview) {
this.overview = overview;
}
}
@@ -44,10 +44,6 @@ public class TVSeasonInfo extends TVSeasonBasic implements Serializable, AppendT
private static final long serialVersionUID = 100L;
@JsonProperty("name")
private String name;
@JsonProperty("overview")
private String overview;
@JsonProperty("episodes")
private List<TVEpisodeInfo> episodes;
// AppendToResponse
@@ -59,22 +55,6 @@ public class TVSeasonInfo extends TVSeasonBasic implements Serializable, AppendT
private List<Video> videos = Collections.emptyList();
//<editor-fold defaultstate="collapsed" desc="Getters and Setters">
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getOverview() {
return overview;
}
public void setOverview(String overview) {
this.overview = overview;
}
public List<TVEpisodeInfo> getEpisodes() {
return episodes;
}
@@ -60,8 +60,8 @@ public class ApiUrl {
/**
* Constructor for the simple API URL method without a sub-method
*
* @param apiKey
* @param method
* @param apiKey API Key
* @param method Base method to create URL for
*/
public ApiUrl(String apiKey, MethodBase method) {
this.apiKey = apiKey;
@@ -71,8 +71,8 @@ public class ApiUrl {
/**
* Add a sub-methods
*
* @param submethod
* @return
* @param submethod Sub-method of base method
* @return Builder object
*/
public ApiUrl subMethod(MethodSub submethod) {
if (submethod != MethodSub.NONE) {
@@ -84,7 +84,7 @@ public class ApiUrl {
/**
* Build the URL with the default parameters
*
* @return
* @return Builder object
*/
public URL buildUrl() {
return buildUrl(new TmdbParameters());
@@ -93,8 +93,8 @@ public class ApiUrl {
/**
* Build the URL from the pre-created parameters.
*
* @param params
* @return
* @param params The parameters for the method
* @return Builder object
*/
public URL buildUrl(final TmdbParameters params) {
StringBuilder urlString = new StringBuilder(TMDB_API_BASE);
@@ -130,8 +130,8 @@ public class ApiUrl {
/**
* Create the query based URL portion
*
* @param params
* @return
* @param params The parameters for the method
* @return Builder object
*/
private StringBuilder queryProcessing(TmdbParameters params) {
StringBuilder urlString = new StringBuilder();
@@ -144,11 +144,9 @@ public class ApiUrl {
// Append the key information
urlString.append(DELIMITER_FIRST)
.append(Param.API_KEY.getValue())
.append(apiKey);
// Append the search term
urlString.append(DELIMITER_SUBSEQUENT);
urlString.append(Param.QUERY.getValue());
.append(apiKey)
.append(DELIMITER_SUBSEQUENT)// Append the search term
.append(Param.QUERY.getValue());
String query = (String) params.get(Param.QUERY);
@@ -166,8 +164,8 @@ public class ApiUrl {
/**
* Create the ID based URL portion
*
* @param params
* @return
* @param params The parameters for the method
* @return Builder object
*/
private StringBuilder idProcessing(final TmdbParameters params) {
StringBuilder urlString = new StringBuilder();
@@ -200,8 +198,8 @@ public class ApiUrl {
/**
* Create a string of the remaining parameters
*
* @param params
* @return
* @param params The parameters for the method
* @return Builder object
*/
private StringBuilder otherProcessing(final TmdbParameters params) {
StringBuilder urlString = new StringBuilder();
@@ -61,7 +61,7 @@ public class HttpTools {
*
* @param url URL to use in the request
* @return String content
* @throws MovieDbException
* @throws MovieDbException exception
*/
public String getRequest(final URL url) throws MovieDbException {
try {
@@ -89,7 +89,7 @@ public class HttpTools {
/**
* Sleep for a period of time
*
* @param multiplier
* @param multiplier number of seconds to use for delay
*/
private void delay(long multiplier) {
try {
@@ -105,7 +105,7 @@ public class HttpTools {
*
* @param url URL to use in the request
* @return String content
* @throws MovieDbException
* @throws MovieDbException exception
*/
public String deleteRequest(final URL url) throws MovieDbException {
try {
@@ -122,7 +122,7 @@ public class HttpTools {
* @param url URL to use in the request
* @param jsonBody Body to use in the request
* @return String content
* @throws MovieDbException
* @throws MovieDbException exception
*/
public String postRequest(final URL url, final String jsonBody) throws MovieDbException {
try {
@@ -144,7 +144,7 @@ public class HttpTools {
* @param response DigestedResponse to process
* @param url URL for notification purposes
* @return String content
* @throws MovieDbException
* @throws MovieDbException exception
*/
private String validateResponse(final DigestedResponse response, final URL url) throws MovieDbException {
if (response.getStatusCode() == 0) {
@@ -57,7 +57,7 @@ public enum MethodBase {
/**
* Get the URL parameter to use
*
* @return
* @return value
*/
public String getValue() {
return this.value;
@@ -66,8 +66,8 @@ public enum MethodBase {
/**
* Convert a string into an Enum type
*
* @param value
* @return
* @param value the string representation of the enum
* @return matching enum
*/
public static MethodBase fromString(String value) {
if (StringUtils.isNotBlank(value)) {
@@ -54,7 +54,7 @@ public enum MethodSub {
MOVIE_CREDITS("movie_credits"),
MOVIE_LIST("movie/list"),
MULTI("multi"),
NOW_PLAYING("now-playing"),
NOW_PLAYING("now_playing"),
ON_THE_AIR("on_the_air"),
PERSON("person"),
POPULAR("popular"),
@@ -62,6 +62,7 @@ public enum MethodSub {
RATED_MOVIES_GUEST("rated_movies"),
RATED_TV("rated/tv"),
RATING("rating"),
RECOMMENDATIONS("recommendations"),
RELEASES("releases"),
REMOVE_ITEM("remove_item"),
REVIEWS("reviews"),
@@ -79,7 +80,8 @@ public enum MethodSub {
VIDEOS("videos"),
WATCHLIST("watchlist"),
WATCHLIST_MOVIES("watchlist/movies"),
WATCHLIST_TV("watchlist/tv");
WATCHLIST_TV("watchlist/tv"),
RELEASE_DATES("release_dates");
private final String value;
@@ -90,7 +92,7 @@ public enum MethodSub {
/**
* Get the URL parameter to use
*
* @return
* @return value
*/
public String getValue() {
return this.value;
@@ -99,8 +101,8 @@ public enum MethodSub {
/**
* Convert a string into an Enum type
*
* @param value
* @return
* @param value the string representation of the enum
* @return matching enum
*/
public static MethodSub fromString(String value) {
if (StringUtils.isNotBlank(value)) {
@@ -56,6 +56,8 @@ public enum Param {
PAGE("page="),
PASSWORD("password="),
PRIMARY_RELEASE_YEAR("primary_release_year="),
PRIMARY_RELEASE_DATE_GTE("primary_release_date.gte="),
PRIMARY_RELEASE_DATE_LTE("primary_release_date.lte="),
QUERY("query="),
RELEASE_DATE_GTE("release_date.gte="),
RELEASE_DATE_LTE("release_date.lte="),
@@ -91,7 +93,7 @@ public enum Param {
/**
* Get the URL parameter to use
*
* @return
* @return value
*/
public String getValue() {
return this.value;
@@ -100,8 +102,8 @@ public enum Param {
/**
* Convert a string into an Enum type
*
* @param value
* @return
* @param value the string representation of the enum
* @return matching enum
*/
public static Param fromString(String value) {
if (StringUtils.isNotBlank(value)) {
@@ -43,7 +43,7 @@ public enum PostBody {
/**
* Get the URL parameter to use
*
* @return
* @return value
*/
public String getValue() {
return this.value;
@@ -61,9 +61,9 @@ public class PostTools {
/**
* Use Jackson to convert Map to JSON string.
*
* @param map
* @return
* @throws MovieDbException
* @param map Map to convert to json
* @return json string
* @throws MovieDbException exception
*/
private String convertToJson(Map<String, ?> map) throws MovieDbException {
try {
@@ -45,7 +45,7 @@ public class TmdbParameters {
/**
* Get the entry set of the parameters
*
* @return
* @return map of parameters
*/
public Set<Map.Entry<Param, String>> getEntries() {
return parameters.entrySet();
@@ -79,7 +79,7 @@ public class TmdbParameters {
* Add an integer parameter to the collection
*
* @param key Parameter to add
* @param value The value to add (will be checked to ensure >0)
* @param value The value to add (will be checked to ensure greater than zero)
*/
public void add(final Param key, final Integer value) {
if (value != null && value > 0) {
@@ -91,7 +91,7 @@ public class TmdbParameters {
* Add a float parameter to the collection
*
* @param key Parameter to add
* @param value The value to add (will be checked to ensure >0)
* @param value The value to add (will be checked to ensure greater than zero)
*/
public void add(final Param key, final Float value) {
if (value != null && value > 0f) {
@@ -103,7 +103,7 @@ public class TmdbParameters {
* Add a boolean parameter to the collection
*
* @param key Parameter to add
* @param value The value to add (will be checked to ensure >0)
* @param value The value to add (will be checked to ensure greater than zero)
*/
public void add(final Param key, final Boolean value) {
if (value != null) {
@@ -115,7 +115,7 @@ public class TmdbParameters {
* Check to see if the collection has a certain parameter
*
* @param key The Parameter to check
* @return
* @return true if parameter exists
*/
public boolean has(final Param key) {
return parameters.containsKey(key);
@@ -125,7 +125,7 @@ public class TmdbParameters {
* Get a parameter from the collection
*
* @param key The parameter to get
* @return
* @return the parameter
*/
public Object get(final Param key) {
return parameters.get(key);
@@ -134,7 +134,7 @@ public class TmdbParameters {
/**
* Remove a parameter from the collection
*
* @param key
* @param key parameter to remove
*/
public void remove(final Param key) {
parameters.remove(key);
@@ -143,7 +143,7 @@ public class TmdbParameters {
/**
* Check to see if the collection has no items
*
* @return
* @return true if the parameters are empty
*/
public boolean isEmpty() {
return parameters.isEmpty();
@@ -152,7 +152,7 @@ public class TmdbParameters {
/**
* Check to see if the collection has items
*
* @return
* @return true if there are parameters
*/
public boolean isNotEmpty() {
return !isEmpty();
@@ -161,8 +161,8 @@ public class TmdbParameters {
/**
* Append any optional parameters to the URL
*
* @param appendToResponse
* @return
* @param appendToResponse String array to convert to a comma list
* @return comma separated list
*/
public String toList(final String[] appendToResponse) {
StringBuilder sb = new StringBuilder();
@@ -0,0 +1,42 @@
/*
* Copyright (c) 2004-2016 Stuart Boston
*
* This file is part of TheMovieDB API.
*
* TheMovieDB API is free software: you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation, either version 3 of the License, or
* any later version.
*
* TheMovieDB API is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with TheMovieDB API. If not, see <http://www.gnu.org/licenses/>.
*
*/
package com.omertron.themoviedbapi;
import org.junit.BeforeClass;
import org.junit.Test;
/**
* Test case for Debugging
*
* @author Stuart
*/
public class DebugTest extends AbstractTests {
@BeforeClass
public static void setUpClass() throws MovieDbException {
doConfiguration();
}
@Test
public void test() {
LOG.info("");
}
}
@@ -137,7 +137,7 @@ public class TestSuite {
assertTrue(message + MISSING_ID, test.getId() > 0);
assertTrue(message + MISSING_NAME, StringUtils.isNotBlank(test.getName()));
assertTrue(message + ": Missing overview", StringUtils.isNotBlank(test.getOverview()));
assertTrue(message + ": Missing episodes", test.getEpisodes().size() > 0);
assertFalse(message + ": Missing episodes", test.getEpisodes().isEmpty());
}
public static void test(ExternalID test) {
@@ -55,7 +55,9 @@ public class TmdbCompaniesTest extends AbstractTests {
LOG.info("getCompanyInfo");
Company company = instance.getCompanyInfo(ID_COMPANY);
assertTrue("No company information found", company.getId() > 0);
assertNotNull("No parent company found", company.getParentCompany());
assertNotNull("No homepage founnd", company.getHomepage());
assertNotNull("No logo found", company.getLogoPath());
assertNotNull("No origin country", company.getOriginCountry());
}
/**
@@ -75,7 +75,8 @@ public class TmdbListsTest extends AbstractTests {
testClear(listId);
// Delete the list
testDeleteList(listId);
// API v4 ONLY
// testDeleteList(listId);
}
@@ -85,7 +86,7 @@ public class TmdbListsTest extends AbstractTests {
* @throws com.omertron.themoviedbapi.MovieDbException
*/
private void testGetList(String listId) throws MovieDbException {
LOG.info("getList");
LOG.info("getList - List: {}", listId);
ListItem result = instance.getList(listId);
LOG.info("Found {} movies on list", result.getItems().size());
@@ -105,6 +106,8 @@ public class TmdbListsTest extends AbstractTests {
String description = "This is random list number " + r + " used for testing purposes";
String result = instance.createList(getSessionId(), name, description);
assertTrue("No list ID returned", StringUtils.isNotBlank(result));
LOG.info("List created: {}", result);
return result;
}
@@ -114,7 +117,7 @@ public class TmdbListsTest extends AbstractTests {
* @throws com.omertron.themoviedbapi.MovieDbException
*/
private void testCheckItemStatus(String listId, int mediaId) throws MovieDbException {
LOG.info("checkItemStatus");
LOG.info("checkItemStatus - List: {}, Media: {}", listId, mediaId);
boolean expResult = true;
boolean result = instance.checkItemStatus(listId, mediaId);
assertEquals("Item is not on list!", expResult, result);
@@ -126,7 +129,7 @@ public class TmdbListsTest extends AbstractTests {
* @throws com.omertron.themoviedbapi.MovieDbException
*/
private void testDeleteList(String listId) throws MovieDbException {
LOG.info("deleteList");
LOG.info("deleteList - List: {}", listId);
StatusCode result = instance.deleteList(getSessionId(), listId);
LOG.info(RESULT, result);
@@ -142,7 +145,7 @@ public class TmdbListsTest extends AbstractTests {
* @throws com.omertron.themoviedbapi.MovieDbException
*/
private void testAddItem(String listId, int mediaId) throws MovieDbException {
LOG.info("addItem");
LOG.info("addItem - List: {}, Media: {}", listId, mediaId);
StatusCode result = instance.addItem(getSessionId(), listId, mediaId);
assertEquals(INVALID_RESPONSE + result.toString(), SC_SUCCESS_UPD, result.getCode());
}
@@ -153,7 +156,7 @@ public class TmdbListsTest extends AbstractTests {
* @throws com.omertron.themoviedbapi.MovieDbException
*/
private void testRemoveItem(String listId, int mediaId) throws MovieDbException {
LOG.info("removeItem");
LOG.info("removeItem - List: {}, Media: {}", listId, mediaId);
StatusCode result = instance.removeItem(getSessionId(), listId, mediaId);
assertEquals(INVALID_RESPONSE + result.toString(), SC_SUCCESS_DEL, result.getCode());
}
@@ -164,7 +167,7 @@ public class TmdbListsTest extends AbstractTests {
* @throws com.omertron.themoviedbapi.MovieDbException
*/
private void testClear(String listId) throws MovieDbException {
LOG.info("clear");
LOG.info("clear - List: {}", listId);
StatusCode result = instance.clear(getSessionId(), listId, true);
assertEquals(INVALID_RESPONSE + result.toString(), SC_SUCCESS_UPD, result.getCode());
}
@@ -39,6 +39,7 @@ import com.omertron.themoviedbapi.model.media.MediaState;
import com.omertron.themoviedbapi.model.media.Translation;
import com.omertron.themoviedbapi.model.media.Video;
import com.omertron.themoviedbapi.model.movie.MovieInfo;
import com.omertron.themoviedbapi.model.movie.ReleaseDates;
import com.omertron.themoviedbapi.model.movie.ReleaseInfo;
import com.omertron.themoviedbapi.model.review.Review;
import com.omertron.themoviedbapi.results.ResultList;
@@ -325,6 +326,23 @@ public class TmdbMoviesTest extends AbstractTests {
}
}
/**
* Test of getRecommendations method, of class TmdbMovies.
*
* @throws com.omertron.themoviedbapi.MovieDbException
*/
@Test
public void testGetRecommendations() throws MovieDbException {
LOG.info("getRecommendations");
String language = LANGUAGE_DEFAULT;
for (TestID test : FILM_IDS) {
ResultList<MovieInfo> result = instance.getRecommendations(test.getTmdb(), language);
TestSuite.test(result, "Recommendations");
}
}
/**
* Test of getMovieReviews method, of class TmdbMovies.
*
@@ -487,4 +505,33 @@ public class TmdbMoviesTest extends AbstractTests {
TestSuite.test(result, "Top Rated");
}
/**
* Test of getReleaseDates method, of class TmdbMovies.
*
* @throws com.omertron.themoviedbapi.MovieDbException
*/
@Test
public void testGetReleaseDates() throws MovieDbException {
LOG.info("getReleaseDates");
for (TestID test : FILM_IDS) {
ResultList<ReleaseDates> result = instance.getReleaseDates(test.getTmdb());
LOG.info("ID: {}, Page {} of {}, {} results", result.getId(), result.getPage(), result.getTotalPages(), result.getTotalResults());
TestSuite.test(result, "release dates");
// There should always be a US release
boolean found = false;
for (ReleaseDates check : result.getResults()) {
if ("US".equals(check.getCountry())) {
found = true;
break;
}
}
assertTrue("No US release found", found);
}
}
}
@@ -42,7 +42,7 @@ public class TmdbNetworksTest extends AbstractTests {
public static void setUpClass() throws MovieDbException {
doConfiguration();
instance = new TmdbNetworks(getApiKey(), getHttpTools());
TEST_IDS.add(new TestID("Fuji Television", "", 1));
TEST_IDS.add(new TestID("Fuji TV", "", 1));
TEST_IDS.add(new TestID("Sonshine Media Network International", "", 200));
}
@@ -27,12 +27,12 @@ import com.omertron.themoviedbapi.enumeration.SearchType;
import com.omertron.themoviedbapi.model.collection.Collection;
import com.omertron.themoviedbapi.model.company.Company;
import com.omertron.themoviedbapi.model.keyword.Keyword;
import com.omertron.themoviedbapi.model.list.UserList;
import com.omertron.themoviedbapi.model.media.MediaBasic;
import com.omertron.themoviedbapi.model.movie.MovieInfo;
import com.omertron.themoviedbapi.model.person.PersonFind;
import com.omertron.themoviedbapi.model.tv.TVBasic;
import com.omertron.themoviedbapi.results.ResultList;
import static org.junit.Assert.assertFalse;
import static org.junit.Assert.assertTrue;
import org.junit.BeforeClass;
import org.junit.Test;
@@ -91,21 +91,7 @@ public class TmdbSearchTest extends AbstractTests {
int page = 0;
ResultList<Keyword> result = instance.searchKeyword(query, page);
TestSuite.test(result, "Keyword");
TestSuite.testId(result, 207600, "Keyword");
}
/**
* Test of searchList method, of class TheMovieDbApi.
*
* @throws MovieDbException
*/
@Test
public void testSearchList() throws MovieDbException {
LOG.info("searchList");
String query = "watch";
int page = 0;
ResultList<UserList> result = instance.searchList(query, page, null);
TestSuite.test(result, "List");
TestSuite.testId(result, 210313, "Keyword");
}
/**
@@ -120,12 +106,12 @@ public class TmdbSearchTest extends AbstractTests {
// Try a movie with less than 1 page of results
ResultList<MovieInfo> movieList = instance.searchMovie("Blade Runner", 0, "", null, 0, 0, SearchType.PHRASE);
TestSuite.test(movieList, "Movie 1");
assertTrue("No movies found, should be at least 1", movieList.getResults().size() > 0);
assertFalse("No movies found, should be at least 1", movieList.getResults().isEmpty());
// Try a russian langugage movie
movieList = instance.searchMovie("О чём говорят мужчины", 0, LANGUAGE_RUSSIAN, null, 0, 0, SearchType.PHRASE);
TestSuite.test(movieList, "Movie 2");
assertTrue("No 'RU' movies found, should be at least 1", movieList.getResults().size() > 0);
assertFalse("No 'RU' movies found, should be at least 1", movieList.getResults().isEmpty());
// Try a movie with more than 20 results
movieList = instance.searchMovie("Star Wars", 0, LANGUAGE_ENGLISH, null, 0, 0, SearchType.PHRASE);
@@ -154,6 +154,11 @@ public class TmdbTVTest extends AbstractTests {
LOG.info("getTVAlternativeTitles");
for (TestID test : TV_IDS) {
// Skip supernatural (no alternative titles)
if (test.getTmdb() == 1622) {
continue;
}
ResultList<AlternativeTitle> result = instance.getTVAlternativeTitles(test.getTmdb());
TestSuite.test(result, "TV Alt Titles");
}