diff --git a/src/main/java/com/omertron/themoviedbapi/results/TmdbResultsList.java b/src/main/java/com/omertron/themoviedbapi/results/TmdbResultsList.java
index 3983327c0..9bf11b531 100644
--- a/src/main/java/com/omertron/themoviedbapi/results/TmdbResultsList.java
+++ b/src/main/java/com/omertron/themoviedbapi/results/TmdbResultsList.java
@@ -1,46 +1,50 @@
-/*
- * Copyright (c) 2004-2013 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 .
- *
- */
-package com.omertron.themoviedbapi.results;
-
-import java.util.ArrayList;
-import java.util.List;
-
-/**
- * List of the results from TheMovieDb
- *
- * @author Stuart
- * @param
- */
-public final class TmdbResultsList extends TmdbResults {
-
- private List results;
-
- public TmdbResultsList(List resultList) {
- results = new ArrayList(resultList);
- }
-
- public List getResults() {
- return results;
- }
-
- public void setResults(List results) {
- this.results = results;
- }
-}
+/*
+ * Copyright (c) 2004-2013 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 .
+ *
+ */
+package com.omertron.themoviedbapi.results;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * List of the results from TheMovieDb
+ *
+ * @author Stuart
+ * @param
+ */
+public final class TmdbResultsList extends TmdbResults {
+
+ private List results;
+
+ public TmdbResultsList(List resultList) {
+ if (resultList != null) {
+ results = new ArrayList(resultList);
+ } else {
+ results = new ArrayList(0);
+ }
+ }
+
+ public List getResults() {
+ return results;
+ }
+
+ public void setResults(List results) {
+ this.results = results;
+ }
+}
diff --git a/src/main/java/com/omertron/themoviedbapi/tools/ApiUrl.java b/src/main/java/com/omertron/themoviedbapi/tools/ApiUrl.java
index 10ac63cde..093996a1a 100644
--- a/src/main/java/com/omertron/themoviedbapi/tools/ApiUrl.java
+++ b/src/main/java/com/omertron/themoviedbapi/tools/ApiUrl.java
@@ -1,251 +1,253 @@
-/*
- * Copyright (c) 2004-2013 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 .
- *
- */
-package com.omertron.themoviedbapi.tools;
-
-import java.io.UnsupportedEncodingException;
-import java.net.MalformedURLException;
-import java.net.URL;
-import java.net.URLEncoder;
-import java.util.HashMap;
-import java.util.Map;
-import org.apache.commons.lang3.StringUtils;
-import org.slf4j.Logger;
-import org.slf4j.LoggerFactory;
-
-/**
- * The API URL that is used to construct the API call
- *
- * @author Stuart
- */
-public class ApiUrl {
-
- /*
- * Logger
- */
- private static final Logger LOG = LoggerFactory.getLogger(ApiUrl.class);
- /*
- * TheMovieDbApi API Base URL
- */
- private static final String TMDB_API_BASE = "http://api.themoviedb.org/3/";
- /*
- * Parameter configuration
- */
- private static final String DELIMITER_FIRST = "?";
- private static final String DELIMITER_SUBSEQUENT = "&";
- private static final String DEFAULT_STRING = "";
- /*
- * Properties
- */
- private String apiKey;
- private String method;
- private String submethod;
- private Map arguments = new HashMap();
- /*
- * API Parameters
- */
- public static final String PARAM_ADULT = "include_adult=";
- public static final String PARAM_API_KEY = "api_key=";
- public static final String PARAM_COUNTRY = "country=";
- public static final String PARAM_FAVORITE = "favorite=";
- public static final String PARAM_ID = "id=";
- public static final String PARAM_LANGUAGE = "language=";
- public static final String PARAM_INCLUDE_ALL_MOVIES = "include_all_movies=";
- public static final String PARAM_MOVIE_WATCHLIST = "movie_watchlist=";
- public static final String PARAM_PAGE = "page=";
- public static final String PARAM_QUERY = "query=";
- public static final String PARAM_SESSION = "session_id=";
- public static final String PARAM_TOKEN = "request_token=";
- public static final String PARAM_VALUE = "value=";
- public static final String PARAM_YEAR = "year=";
- private static final String APPEND_TO_RESPONSE = "append_to_response=";
-
- //
- /**
- * Constructor for the simple API URL method without a sub-method
- *
- * @param method
- */
- public ApiUrl(String apiKey, String method) {
- this.apiKey = apiKey;
- this.method = method;
- this.submethod = DEFAULT_STRING;
- }
-
- /**
- * Constructor for the API URL with a sub-method
- *
- * @param method
- * @param submethod
- */
- public ApiUrl(String apiKey, String method, String submethod) {
- this.apiKey = apiKey;
- this.method = method;
- this.submethod = submethod;
- }
- //
-
- /**
- * Build the URL from the pre-created arguments.
- */
- public URL buildUrl() {
- StringBuilder urlString = new StringBuilder(TMDB_API_BASE);
-
- // Get the start of the URL
- urlString.append(method);
-
- // We have either a queury, or a direct request
- if (arguments.containsKey(PARAM_QUERY)) {
- // Append the suffix of the API URL
- if(StringUtils.endsWith(urlString, "/") && submethod.startsWith("/")) {
- urlString.deleteCharAt(urlString.length()-1);
- }
- urlString.append(submethod);
-
- // Append the key information
- urlString.append(DELIMITER_FIRST).append(PARAM_API_KEY);
- urlString.append(apiKey);
-
- // Append the search term
- urlString.append(DELIMITER_SUBSEQUENT);
- urlString.append(PARAM_QUERY);
-
- String query = arguments.get(PARAM_QUERY);
-
- try {
- urlString.append(URLEncoder.encode(query, "UTF-8"));
- } catch (UnsupportedEncodingException ex) {
- LOG.trace("Unable to encode query: '{}' trying raw.", query);
- // If we can't encode it, try it raw
- urlString.append(query);
- }
-
- // Remove the query from the arguments so it is not added later
- arguments.remove(PARAM_QUERY);
- } else {
- // Append the ID if provided
- if (arguments.containsKey(PARAM_ID)) {
- urlString.append(arguments.get(PARAM_ID));
- arguments.remove(PARAM_ID);
- }
-
- // Append the suffix of the API URL
- if(StringUtils.endsWith(urlString, "/") && submethod.startsWith("/")) {
- urlString.deleteCharAt(urlString.length()-1);
- }
- urlString.append(submethod);
-
- // Append the key information
- urlString.append(DELIMITER_FIRST).append(PARAM_API_KEY);
- urlString.append(apiKey);
- }
-
- for (Map.Entry argEntry : arguments.entrySet()) {
- urlString.append(DELIMITER_SUBSEQUENT).append(argEntry.getKey());
- urlString.append(argEntry.getValue());
- }
-
- try {
- LOG.trace("URL: {}", urlString.toString());
- return new URL(urlString.toString());
- } catch (MalformedURLException ex) {
- LOG.warn("Failed to create URL {} - {}", urlString.toString(), ex.toString());
- return null;
- } finally {
- arguments.clear();
- }
- }
-
- /**
- * Add arguments individually
- *
- * @param key
- * @param value
- */
- public void addArgument(String key, String value) {
- arguments.put(key, value);
- }
-
- /**
- * Add arguments individually
- *
- * @param key
- * @param value
- */
- public void addArgument(String key, int value) {
- arguments.put(key, Integer.toString(value));
- }
-
- /**
- * Add arguments individually
- *
- * @param key
- * @param value
- */
- public void addArgument(String key, boolean value) {
- arguments.put(key, Boolean.toString(value));
- }
-
- /**
- * Add arguments individually
- *
- * @param key
- * @param value
- */
- public void addArgument(String key, float value) {
- arguments.put(key, Float.toString(value));
- }
-
- /**
- * Clear the arguments
- */
- public void clearArguments() {
- arguments.clear();
- }
-
- /**
- * Set the arguments directly
- *
- * @param args
- */
- public void setArguments(Map args) {
- arguments.putAll(args);
- }
-
- /**
- * Append any optional parameters to the URL
- *
- * @param appendToResponse
- */
- public void appendToResponse(String[] appendToResponse) {
- if (appendToResponse.length > 0) {
- StringBuilder sb = new StringBuilder();
- boolean first = Boolean.TRUE;
- for (String append : appendToResponse) {
- if (first) {
- first = Boolean.FALSE;
- } else {
- sb.append(",");
- }
- sb.append(append);
- }
- addArgument(APPEND_TO_RESPONSE, sb.toString());
- }
- }
-}
+/*
+ * Copyright (c) 2004-2013 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 .
+ *
+ */
+package com.omertron.themoviedbapi.tools;
+
+import java.io.UnsupportedEncodingException;
+import java.net.MalformedURLException;
+import java.net.URL;
+import java.net.URLEncoder;
+import java.util.HashMap;
+import java.util.Map;
+import org.apache.commons.lang3.StringUtils;
+import org.slf4j.Logger;
+import org.slf4j.LoggerFactory;
+
+/**
+ * The API URL that is used to construct the API call
+ *
+ * @author Stuart
+ */
+public class ApiUrl {
+
+ /*
+ * Logger
+ */
+ private static final Logger LOG = LoggerFactory.getLogger(ApiUrl.class);
+ /*
+ * TheMovieDbApi API Base URL
+ */
+ private static final String TMDB_API_BASE = "http://api.themoviedb.org/3/";
+ /*
+ * Parameter configuration
+ */
+ private static final String DELIMITER_FIRST = "?";
+ private static final String DELIMITER_SUBSEQUENT = "&";
+ private static final String DEFAULT_STRING = "";
+ /*
+ * Properties
+ */
+ private String apiKey;
+ private String method;
+ private String submethod;
+ private Map arguments = new HashMap();
+ /*
+ * API Parameters
+ */
+ public static final String PARAM_ADULT = "include_adult=";
+ public static final String PARAM_API_KEY = "api_key=";
+ public static final String PARAM_COUNTRY = "country=";
+ public static final String PARAM_FAVORITE = "favorite=";
+ public static final String PARAM_ID = "id=";
+ public static final String PARAM_LANGUAGE = "language=";
+ public static final String PARAM_INCLUDE_ALL_MOVIES = "include_all_movies=";
+ public static final String PARAM_MOVIE_WATCHLIST = "movie_watchlist=";
+ public static final String PARAM_PAGE = "page=";
+ public static final String PARAM_QUERY = "query=";
+ public static final String PARAM_SESSION = "session_id=";
+ public static final String PARAM_TOKEN = "request_token=";
+ public static final String PARAM_VALUE = "value=";
+ public static final String PARAM_YEAR = "year=";
+ public static final String PARAM_START_DATE="start_date=";
+ public static final String PARAM_END_DATE="end_date=";
+ private static final String APPEND_TO_RESPONSE = "append_to_response=";
+
+ //
+ /**
+ * Constructor for the simple API URL method without a sub-method
+ *
+ * @param method
+ */
+ public ApiUrl(String apiKey, String method) {
+ this.apiKey = apiKey;
+ this.method = method;
+ this.submethod = DEFAULT_STRING;
+ }
+
+ /**
+ * Constructor for the API URL with a sub-method
+ *
+ * @param method
+ * @param submethod
+ */
+ public ApiUrl(String apiKey, String method, String submethod) {
+ this.apiKey = apiKey;
+ this.method = method;
+ this.submethod = submethod;
+ }
+ //
+
+ /**
+ * Build the URL from the pre-created arguments.
+ */
+ public URL buildUrl() {
+ StringBuilder urlString = new StringBuilder(TMDB_API_BASE);
+
+ // Get the start of the URL
+ urlString.append(method);
+
+ // We have either a queury, or a direct request
+ if (arguments.containsKey(PARAM_QUERY)) {
+ // Append the suffix of the API URL
+ if(StringUtils.endsWith(urlString, "/") && submethod.startsWith("/")) {
+ urlString.deleteCharAt(urlString.length()-1);
+ }
+ urlString.append(submethod);
+
+ // Append the key information
+ urlString.append(DELIMITER_FIRST).append(PARAM_API_KEY);
+ urlString.append(apiKey);
+
+ // Append the search term
+ urlString.append(DELIMITER_SUBSEQUENT);
+ urlString.append(PARAM_QUERY);
+
+ String query = arguments.get(PARAM_QUERY);
+
+ try {
+ urlString.append(URLEncoder.encode(query, "UTF-8"));
+ } catch (UnsupportedEncodingException ex) {
+ LOG.trace("Unable to encode query: '{}' trying raw.", query);
+ // If we can't encode it, try it raw
+ urlString.append(query);
+ }
+
+ // Remove the query from the arguments so it is not added later
+ arguments.remove(PARAM_QUERY);
+ } else {
+ // Append the ID if provided
+ if (arguments.containsKey(PARAM_ID)) {
+ urlString.append(arguments.get(PARAM_ID));
+ arguments.remove(PARAM_ID);
+ }
+
+ // Append the suffix of the API URL
+ if(StringUtils.endsWith(urlString, "/") && submethod.startsWith("/")) {
+ urlString.deleteCharAt(urlString.length()-1);
+ }
+ urlString.append(submethod);
+
+ // Append the key information
+ urlString.append(DELIMITER_FIRST).append(PARAM_API_KEY);
+ urlString.append(apiKey);
+ }
+
+ for (Map.Entry argEntry : arguments.entrySet()) {
+ urlString.append(DELIMITER_SUBSEQUENT).append(argEntry.getKey());
+ urlString.append(argEntry.getValue());
+ }
+
+ try {
+ LOG.trace("URL: {}", urlString.toString());
+ return new URL(urlString.toString());
+ } catch (MalformedURLException ex) {
+ LOG.warn("Failed to create URL {} - {}", urlString.toString(), ex.toString());
+ return null;
+ } finally {
+ arguments.clear();
+ }
+ }
+
+ /**
+ * Add arguments individually
+ *
+ * @param key
+ * @param value
+ */
+ public void addArgument(String key, String value) {
+ arguments.put(key, value);
+ }
+
+ /**
+ * Add arguments individually
+ *
+ * @param key
+ * @param value
+ */
+ public void addArgument(String key, int value) {
+ arguments.put(key, Integer.toString(value));
+ }
+
+ /**
+ * Add arguments individually
+ *
+ * @param key
+ * @param value
+ */
+ public void addArgument(String key, boolean value) {
+ arguments.put(key, Boolean.toString(value));
+ }
+
+ /**
+ * Add arguments individually
+ *
+ * @param key
+ * @param value
+ */
+ public void addArgument(String key, float value) {
+ arguments.put(key, Float.toString(value));
+ }
+
+ /**
+ * Clear the arguments
+ */
+ public void clearArguments() {
+ arguments.clear();
+ }
+
+ /**
+ * Set the arguments directly
+ *
+ * @param args
+ */
+ public void setArguments(Map args) {
+ arguments.putAll(args);
+ }
+
+ /**
+ * Append any optional parameters to the URL
+ *
+ * @param appendToResponse
+ */
+ public void appendToResponse(String[] appendToResponse) {
+ if (appendToResponse.length > 0) {
+ StringBuilder sb = new StringBuilder();
+ boolean first = Boolean.TRUE;
+ for (String append : appendToResponse) {
+ if (first) {
+ first = Boolean.FALSE;
+ } else {
+ sb.append(",");
+ }
+ sb.append(append);
+ }
+ addArgument(APPEND_TO_RESPONSE, sb.toString());
+ }
+ }
+}