diff --git a/themoviedbapi/src/com/moviejukebox/themoviedb/TheMovieDb.java b/themoviedbapi/src/com/moviejukebox/themoviedb/TheMovieDb.java index 646167229..205444121 100644 --- a/themoviedbapi/src/com/moviejukebox/themoviedb/TheMovieDb.java +++ b/themoviedbapi/src/com/moviejukebox/themoviedb/TheMovieDb.java @@ -31,6 +31,7 @@ import com.moviejukebox.themoviedb.tools.DOMHelper; import com.moviejukebox.themoviedb.tools.DOMParser; import com.moviejukebox.themoviedb.tools.LogFormatter; import com.moviejukebox.themoviedb.tools.WebBrowser; +import java.util.Arrays; /** * This is the main class for the API to connect to TheMovieDb.org The implementation is for v2.1 @@ -375,27 +376,50 @@ public class TheMovieDb { * the current version number of the called object(s). This is useful if you've already * called the object sometime in the past and simply want to do a quick check for updates. * - * @param personID - * @param language + * @param personID a Person TMDb id + * @param language the two digit language code. E.g. en=English * @return */ public Person personGetVersion(String personID, String language) { - Person person = new Person(); if (!isValidString(personID)) { - return person; + return new Person(); + } + + List people = new ArrayList(); + people = this.personGetVersion(Arrays.asList(personID), language); + + return people.get(0); + } + + /** + * Retrieve the last modified time along with the current version of a Person. + * @param personIDs one or multiple Person TMDb ids + * @param language the two digit language code. E.g. en=English + * @return + */ + public List personGetVersion(List personIDs, String language) { + List people = new ArrayList(); + + String ids = ""; + for (int i = 0; i < personIDs.size(); i++) { + if (i == 0) { + ids += personIDs.get(i); + continue; + } + ids += "," + personIDs.get(i); } Document doc = null; try { - String searchUrl = buildSearchUrl(PERSON_GET_VERSION, personID, language); + String searchUrl = buildSearchUrl(PERSON_GET_VERSION, ids, language); doc = DOMHelper.getEventDocFromUrl(searchUrl); - person = DOMParser.parsePersonGetVersion(doc); + people = DOMParser.parsePersonGetVersion(doc); } catch (Exception error) { logger.severe("PersonGetVersion error: " + error.getMessage()); } - return person; + return people; } /** diff --git a/themoviedbapi/src/com/moviejukebox/themoviedb/model/Category.java b/themoviedbapi/src/com/moviejukebox/themoviedb/model/Category.java index 4f58a8990..aaf589d1b 100644 --- a/themoviedbapi/src/com/moviejukebox/themoviedb/model/Category.java +++ b/themoviedbapi/src/com/moviejukebox/themoviedb/model/Category.java @@ -20,10 +20,12 @@ package com.moviejukebox.themoviedb.model; */ public class Category { - private String type; - private String name; - private String url; - private String id; + private static final String UNKNOWN = MovieDB.UNKNOWN; + + private String type = UNKNOWN; + private String name = UNKNOWN; + private String url = UNKNOWN; + private String id = UNKNOWN; public String getId() { return id; diff --git a/themoviedbapi/src/com/moviejukebox/themoviedb/model/Country.java b/themoviedbapi/src/com/moviejukebox/themoviedb/model/Country.java index 55e64a9e4..69d90e1d0 100644 --- a/themoviedbapi/src/com/moviejukebox/themoviedb/model/Country.java +++ b/themoviedbapi/src/com/moviejukebox/themoviedb/model/Country.java @@ -20,9 +20,11 @@ package com.moviejukebox.themoviedb.model; */ public class Country { - private String url; - private String name; - private String code; + private static final String UNKNOWN = MovieDB.UNKNOWN; + + private String url = UNKNOWN; + private String name = UNKNOWN; + private String code = UNKNOWN; public String getUrl() { return url; diff --git a/themoviedbapi/src/com/moviejukebox/themoviedb/model/Filmography.java b/themoviedbapi/src/com/moviejukebox/themoviedb/model/Filmography.java index 6237d1b83..00cc6eb78 100644 --- a/themoviedbapi/src/com/moviejukebox/themoviedb/model/Filmography.java +++ b/themoviedbapi/src/com/moviejukebox/themoviedb/model/Filmography.java @@ -14,12 +14,15 @@ package com.moviejukebox.themoviedb.model; public class Filmography { - private String url; - private String name; - private String department; - private String character; - private String job; - private String id; + + private static final String UNKNOWN = MovieDB.UNKNOWN; + + private String url = UNKNOWN; + private String name = UNKNOWN; + private String department = UNKNOWN; + private String character = UNKNOWN; + private String job = UNKNOWN; + private String id = UNKNOWN; public String getUrl() { return url; diff --git a/themoviedbapi/src/com/moviejukebox/themoviedb/model/Studio.java b/themoviedbapi/src/com/moviejukebox/themoviedb/model/Studio.java index 322e6d1d8..1c113e445 100644 --- a/themoviedbapi/src/com/moviejukebox/themoviedb/model/Studio.java +++ b/themoviedbapi/src/com/moviejukebox/themoviedb/model/Studio.java @@ -20,9 +20,11 @@ package com.moviejukebox.themoviedb.model; */ public class Studio { - private String name; - private String url; - private String id; + private static final String UNKNOWN = MovieDB.UNKNOWN; + + private String name = UNKNOWN; + private String url = UNKNOWN; + private String id = UNKNOWN; public String getId() { return id; diff --git a/themoviedbapi/src/com/moviejukebox/themoviedb/tools/DOMParser.java b/themoviedbapi/src/com/moviejukebox/themoviedb/tools/DOMParser.java index c764016ae..2b2af3c06 100644 --- a/themoviedbapi/src/com/moviejukebox/themoviedb/tools/DOMParser.java +++ b/themoviedbapi/src/com/moviejukebox/themoviedb/tools/DOMParser.java @@ -151,11 +151,6 @@ public class DOMParser { return person; } - public static Person parsePersonGetVersion(Document doc) { - // TODO Auto-generated method stub - return null; - } - private static MovieDB parseMovieInfo(Element movieElement) { // Inspired by // http://www.java-tips.org/java-se-tips/javax.xml.parsers/how-to-read-xml-file-in-java.html @@ -375,6 +370,34 @@ public class DOMParser { return movie; } + /** + * Parse a DOM document and returns a list of Person + * @param doc a DOM document + * @return + */ + public static List parsePersonGetVersion(Document doc) { + List people = new ArrayList(); + NodeList movies = doc.getElementsByTagName("movie"); + if( (movies == null) || movies.getLength() == 0) { + return people; + } + + for (int i= 0; i < movies.getLength(); i++) { + Node node = movies.item(i); + if(node.getNodeType() == Node.ELEMENT_NODE) { + Element element = (Element) node; + Person person = new Person(); + person.setName(DOMHelper.getValueFromElement(element, "name")); + person.setId(DOMHelper.getValueFromElement(element, "id")); + person.setVersion(Integer.valueOf(DOMHelper.getValueFromElement(element, "version"))); + person.setLastModifiedAt(DOMHelper.getValueFromElement(element, "last_modified_at")); + people.add(person); + } + } + + return people; + } + /** * Retrieve a list of valid genres within TMDb. * @param doc a DOM document