From 0c524ecb87780ddd71910a970eb8b61c3e393db9 Mon Sep 17 00:00:00 2001 From: Omertron Date: Wed, 20 Jul 2011 21:02:50 +0000 Subject: [PATCH] Tidied up some methods Removed some Sonar issues --- .../moviejukebox/themoviedb/TheMovieDb.java | 8 +- .../themoviedb/model/Artwork.java | 56 +++++++- .../moviejukebox/themoviedb/model/Person.java | 3 +- .../moviejukebox/themoviedb/tools/Base64.java | 4 +- .../themoviedb/tools/DOMHelper.java | 2 +- .../themoviedb/tools/LogFormatter.java | 6 +- .../themoviedb/tools/ModelTools.java | 14 +- .../themoviedb/tools/MovieDbParser.java | 120 ++++++++++-------- .../themoviedb/tools/WebBrowser.java | 13 +- 9 files changed, 141 insertions(+), 85 deletions(-) diff --git a/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/TheMovieDb.java b/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/TheMovieDb.java index 1e6c41198..dbd8e45a4 100644 --- a/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/TheMovieDb.java +++ b/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/TheMovieDb.java @@ -405,15 +405,15 @@ public class TheMovieDb { } String searchUrl = buildUrl(MOVIE_GET_INFO, tmdbID, language); - movie = MovieDbParser.parseMovie(searchUrl); + MovieDB foundMovie = MovieDbParser.parseMovie(searchUrl); - if (movie == null && !language.equalsIgnoreCase(DEFAULT_LANGUAGE)) { + if (foundMovie == null && !language.equalsIgnoreCase(DEFAULT_LANGUAGE)) { logger.fine("Trying to get the '" + DEFAULT_LANGUAGE + "' version"); searchUrl = buildUrl(MOVIE_GET_INFO, tmdbID, DEFAULT_LANGUAGE); - movie = MovieDbParser.parseMovie(searchUrl); + foundMovie = MovieDbParser.parseMovie(searchUrl); } - return movie; + return foundMovie; } /** diff --git a/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/model/Artwork.java b/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/model/Artwork.java index 61f7b3309..c180c8c91 100644 --- a/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/model/Artwork.java +++ b/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/model/Artwork.java @@ -96,8 +96,10 @@ public class Artwork implements Comparable { @Override public int compareTo(Object otherArtwork) throws ClassCastException { - if (!(otherArtwork instanceof Artwork)) + if (!(otherArtwork instanceof Artwork)) { throw new ClassCastException("TheMovieDB API: An Artwork object is expected."); + } + int anotherId = ((Artwork) otherArtwork).getId(); return this.id - anotherId; } @@ -117,19 +119,61 @@ public class Artwork implements Comparable { return builder.toString(); } - + @Override + public int hashCode() { + final int prime = 31; + int result = 1; + result = prime * result + id; + result = prime * result + ((size == null) ? 0 : size.hashCode()); + result = prime * result + ((type == null) ? 0 : type.hashCode()); + result = prime * result + ((url == null) ? 0 : url.hashCode()); + return result; + } @Override public boolean equals(Object obj) { - if (this == obj) + if (this == obj) { return true; - if (obj == null) + } + + if (obj == null) { return false; - if (getClass() != obj.getClass()) + } + + if (!(obj instanceof Artwork)) { return false; + } + Artwork other = (Artwork)obj; - if (id != other.id) + + if (id != other.id) { return false; + } + + if (size == null) { + if (other.size != null) { + return false; + } + } else if (!size.equals(other.size)) { + return false; + } + + if (type == null) { + if (other.type != null) { + return false; + } + } else if (!type.equals(other.type)) { + return false; + } + + if (url == null) { + if (other.url != null) { + return false; + } + } else if (!url.equals(other.url)) { + return false; + } + return true; } } diff --git a/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/model/Person.java b/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/model/Person.java index 163e4be6b..6aa132ffe 100644 --- a/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/model/Person.java +++ b/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/model/Person.java @@ -145,8 +145,7 @@ public class Person extends ModelTools { DateFormat df = new SimpleDateFormat("yyyy-MM-dd"); try { - Date birthday = df.parse(sBirthday); - setBirthday(birthday); + setBirthday(df.parse(sBirthday)); } catch (Exception ignore) { return; } diff --git a/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/tools/Base64.java b/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/tools/Base64.java index b6f54b773..7560e50a2 100644 --- a/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/tools/Base64.java +++ b/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/tools/Base64.java @@ -13,9 +13,7 @@ package com.moviejukebox.themoviedb.tools; public class Base64 { - public static String base64code = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" + "abcdefghijklmnopqrstuvwxyz" + "0123456789" + "+/"; - - public static int splitLinesAt = 76; + private static final String base64code = "ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"; public static String base64Encode(String string) { String unEncoded = string; // Copy the string so we can modify it diff --git a/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/tools/DOMHelper.java b/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/tools/DOMHelper.java index f7ac0532a..22146b0e4 100644 --- a/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/tools/DOMHelper.java +++ b/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/tools/DOMHelper.java @@ -35,7 +35,7 @@ import com.moviejukebox.themoviedb.TheMovieDb; * */ public class DOMHelper { - static Logger logger = TheMovieDb.getLogger(); + private static Logger logger = TheMovieDb.getLogger(); /** * Gets the string value of the tag element name passed diff --git a/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/tools/LogFormatter.java b/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/tools/LogFormatter.java index c000d4841..f0e4bddff 100644 --- a/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/tools/LogFormatter.java +++ b/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/tools/LogFormatter.java @@ -17,7 +17,7 @@ import java.util.logging.LogRecord; public class LogFormatter extends java.util.logging.Formatter { - private static String API_KEY = null; + private static String apiKey = null; private static String EOL = (String)java.security.AccessController.doPrivileged(new PrivilegedAction() { public Object run() { return System.getProperty("line.separator"); @@ -27,7 +27,7 @@ public class LogFormatter extends java.util.logging.Formatter public synchronized String format(LogRecord logRecord) { String logMessage = logRecord.getMessage(); - logMessage = "[TheMovieDb API] " + logMessage.replace(API_KEY, "[APIKEY]") + EOL; + logMessage = "[TheMovieDb API] " + logMessage.replace(apiKey, "[APIKEY]") + EOL; Throwable thrown = logRecord.getThrown(); if (thrown != null) { @@ -37,7 +37,7 @@ public class LogFormatter extends java.util.logging.Formatter } public void addApiKey(String apiKey) { - API_KEY = apiKey; + LogFormatter.apiKey = apiKey; return; } } diff --git a/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/tools/ModelTools.java b/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/tools/ModelTools.java index 67de92a07..89b8ccbe8 100644 --- a/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/tools/ModelTools.java +++ b/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/tools/ModelTools.java @@ -149,12 +149,14 @@ public class ModelTools { return null; } + + int validArtworkNumber = artworkNumber; // Validate the number - if (artworkNumber <= 0) { - artworkNumber = 0; + if (validArtworkNumber <= 0) { + validArtworkNumber = 0; } else { // Artwork elements start at 0 (Zero) - artworkNumber -= 1; + validArtworkNumber -= 1; } List artworkList = getArtwork(artworkType, artworkSize); @@ -165,11 +167,11 @@ public class ModelTools { } // If the number requested is greater than the array size, loop around until it's within scope - while (artworkNumber > artworkCount) { - artworkNumber = artworkNumber - artworkCount; + while (validArtworkNumber > artworkCount) { + validArtworkNumber = validArtworkNumber - artworkCount; } - return artworkList.get(artworkNumber); + return artworkList.get(validArtworkNumber); } } diff --git a/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/tools/MovieDbParser.java b/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/tools/MovieDbParser.java index 3827995a5..d927f46a1 100644 --- a/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/tools/MovieDbParser.java +++ b/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/tools/MovieDbParser.java @@ -12,6 +12,9 @@ */ package com.moviejukebox.themoviedb.tools; +import java.io.PrintWriter; +import java.io.StringWriter; +import java.io.Writer; import java.util.ArrayList; import java.util.List; import java.util.logging.Logger; @@ -33,7 +36,16 @@ import com.moviejukebox.themoviedb.model.Studio; public class MovieDbParser { - static Logger logger = TheMovieDb.getLogger(); + private static Logger logger = TheMovieDb.getLogger(); + + private static final String NAME = "name"; + private static final String GENRE = "genre"; + private static final String ID = "id"; + private static final String URL = "url"; + private static final String LANGUAGE = "language"; + private static final String MOVIE = "movie"; + private static final String PERSON = "person"; + private static final String TYPE = "type"; /** * Retrieve a list of valid genres within TMDb. @@ -54,7 +66,7 @@ public class MovieDbParser { return categories; } - NodeList genres = doc.getElementsByTagName("genre"); + NodeList genres = doc.getElementsByTagName(GENRE); if ((genres == null) || genres.getLength() == 0) { return categories; } @@ -64,9 +76,9 @@ public class MovieDbParser { if (node.getNodeType() == Node.ELEMENT_NODE) { Element element = (Element) node; Category category = new Category(); - category.setName(element.getAttribute("name")); - category.setId(DOMHelper.getValueFromElement(element, "id")); - category.setUrl(DOMHelper.getValueFromElement(element, "url")); + category.setName(element.getAttribute(NAME)); + category.setId(DOMHelper.getValueFromElement(element, ID)); + category.setUrl(DOMHelper.getValueFromElement(element, URL)); categories.add(category); } } @@ -89,7 +101,7 @@ public class MovieDbParser { return languages; } - NodeList nlLanguages = doc.getElementsByTagName("language"); + NodeList nlLanguages = doc.getElementsByTagName(LANGUAGE); if ((nlLanguages == null) || nlLanguages.getLength() == 0) { return languages; @@ -128,7 +140,7 @@ public class MovieDbParser { return movie; } - NodeList nlMovies = doc.getElementsByTagName("movie"); + NodeList nlMovies = doc.getElementsByTagName(MOVIE); if ((nlMovies == null) || nlMovies.getLength() == 0) { return movie; @@ -158,7 +170,7 @@ public class MovieDbParser { return person; } - NodeList nlMovies = doc.getElementsByTagName("person"); + NodeList nlMovies = doc.getElementsByTagName(PERSON); if ((nlMovies == null) || nlMovies.getLength() == 0) { return person; @@ -193,7 +205,7 @@ public class MovieDbParser { return movie; } - NodeList nlMovies = doc.getElementsByTagName("movie"); + NodeList nlMovies = doc.getElementsByTagName(MOVIE); if ((nlMovies == null) || nlMovies.getLength() == 0) { return movie; } @@ -222,7 +234,7 @@ public class MovieDbParser { return movies; } - NodeList nlMovies = doc.getElementsByTagName("movie"); + NodeList nlMovies = doc.getElementsByTagName(MOVIE); if ((nlMovies == null) || nlMovies.getLength() == 0) { return movies; @@ -251,14 +263,14 @@ public class MovieDbParser { movie.setPopularity(DOMHelper.getValueFromElement(movieElement, "popularity")); movie.setTranslated(DOMHelper.getValueFromElement(movieElement, "translated")); movie.setAdult(DOMHelper.getValueFromElement(movieElement, "adult")); - movie.setLanguage(DOMHelper.getValueFromElement(movieElement, "language")); + movie.setLanguage(DOMHelper.getValueFromElement(movieElement, LANGUAGE)); movie.setOriginalName(DOMHelper.getValueFromElement(movieElement, "original_name")); - movie.setTitle(DOMHelper.getValueFromElement(movieElement, "name")); + movie.setTitle(DOMHelper.getValueFromElement(movieElement, NAME)); movie.setAlternativeName(DOMHelper.getValueFromElement(movieElement, "alternative_name")); - movie.setType(DOMHelper.getValueFromElement(movieElement, "type")); - movie.setId(DOMHelper.getValueFromElement(movieElement, "id")); + movie.setType(DOMHelper.getValueFromElement(movieElement, TYPE)); + movie.setId(DOMHelper.getValueFromElement(movieElement, ID)); movie.setImdb(DOMHelper.getValueFromElement(movieElement, "imdb_id")); - movie.setUrl(DOMHelper.getValueFromElement(movieElement, "url")); + movie.setUrl(DOMHelper.getValueFromElement(movieElement, URL)); movie.setOverview(DOMHelper.getValueFromElement(movieElement, "overview")); movie.setRating(DOMHelper.getValueFromElement(movieElement, "rating")); movie.setTagline(DOMHelper.getValueFromElement(movieElement, "tagline")); @@ -285,10 +297,10 @@ public class MovieDbParser { subElement = (Element) personNode; Category category = new Category(); - category.setType(subElement.getAttribute("type")); - category.setUrl(subElement.getAttribute("url")); - category.setName(subElement.getAttribute("name")); - category.setId(subElement.getAttribute("id")); + category.setType(subElement.getAttribute(TYPE)); + category.setUrl(subElement.getAttribute(URL)); + category.setName(subElement.getAttribute(NAME)); + category.setId(subElement.getAttribute(ID)); movie.addCategory(category); } @@ -311,9 +323,9 @@ public class MovieDbParser { subElement = (Element) studioNode; Studio studio = new Studio(); - studio.setUrl(subElement.getAttribute("url")); - studio.setName(subElement.getAttribute("name")); - studio.setId(subElement.getAttribute("id")); + studio.setUrl(subElement.getAttribute(URL)); + studio.setName(subElement.getAttribute(NAME)); + studio.setId(subElement.getAttribute(ID)); movie.addStudio(studio); } @@ -336,9 +348,9 @@ public class MovieDbParser { subElement = (Element) countryNode; Country country = new Country(); - country.setName(subElement.getAttribute("name")); + country.setName(subElement.getAttribute(NAME)); country.setCode(subElement.getAttribute("code")); - country.setUrl(subElement.getAttribute("url")); + country.setUrl(subElement.getAttribute(URL)); movie.addProductionCountry(country); } @@ -361,15 +373,15 @@ public class MovieDbParser { subElement = (Element) personNode; Person person = new Person(); - person.setName(subElement.getAttribute("name")); + person.setName(subElement.getAttribute(NAME)); person.setCharacter(subElement.getAttribute("character")); person.setJob(subElement.getAttribute("job")); - person.setId(subElement.getAttribute("id")); + person.setId(subElement.getAttribute(ID)); person.addArtwork(Artwork.ARTWORK_TYPE_PERSON, Artwork.ARTWORK_SIZE_THUMB, subElement.getAttribute("thumb"), "-1"); person.setDepartment(subElement.getAttribute("department")); - person.setUrl(subElement.getAttribute("url")); + person.setUrl(subElement.getAttribute(URL)); person.setOrder(subElement.getAttribute("order")); person.setCastId(subElement.getAttribute("cast_id")); @@ -418,15 +430,15 @@ public class MovieDbParser { if (subElement.getNodeName().equalsIgnoreCase("image")) { // This is the format used in Movie.imdbLookup, Movie.getInfo & Movie.search Artwork artwork = new Artwork(); - artwork.setType(subElement.getAttribute("type")); + artwork.setType(subElement.getAttribute(TYPE)); artwork.setSize(subElement.getAttribute("size")); - artwork.setUrl(subElement.getAttribute("url")); - artwork.setId(subElement.getAttribute("id")); + artwork.setUrl(subElement.getAttribute(URL)); + artwork.setId(subElement.getAttribute(ID)); movie.addArtwork(artwork); } else if (subElement.getNodeName().equalsIgnoreCase("backdrop") || subElement.getNodeName().equalsIgnoreCase("poster")) { // This is the format used in Movie.getImages - String artworkId = subElement.getAttribute("id"); + String artworkId = subElement.getAttribute(ID); String artworkType = subElement.getNodeName(); // We need to decode and loop round the child nodes to get the data @@ -438,7 +450,7 @@ public class MovieDbParser { Artwork artwork = new Artwork(); artwork.setId(artworkId); artwork.setType(artworkType); - artwork.setUrl(imageElement.getAttribute("url")); + artwork.setUrl(imageElement.getAttribute(URL)); artwork.setSize(imageElement.getAttribute("size")); movie.addArtwork(artwork); } @@ -453,7 +465,10 @@ public class MovieDbParser { } } catch (Exception error) { logger.severe("ERROR: " + error.getMessage()); - error.printStackTrace(); + final Writer eResult = new StringWriter(); + final PrintWriter printWriter = new PrintWriter(eResult); + error.printStackTrace(printWriter); + logger.severe(eResult.toString()); } return movie; } @@ -480,7 +495,7 @@ public class MovieDbParser { return movies; } - NodeList nlMovies = doc.getElementsByTagName("movie"); + NodeList nlMovies = doc.getElementsByTagName(MOVIE); if ((nlMovies == null) || nlMovies.getLength() == 0) { return movies; @@ -521,7 +536,7 @@ public class MovieDbParser { return people; } - NodeList movies = doc.getElementsByTagName("movie"); + NodeList movies = doc.getElementsByTagName(MOVIE); if ((movies == null) || movies.getLength() == 0) { return people; } @@ -553,7 +568,7 @@ public class MovieDbParser { return people; } - NodeList personNodeList = doc.getElementsByTagName("person"); + NodeList personNodeList = doc.getElementsByTagName(PERSON); if ((personNodeList == null) || personNodeList.getLength() == 0) { @@ -573,8 +588,8 @@ public class MovieDbParser { try { Element personElement = (Element) personNode; - person.setName(DOMHelper.getValueFromElement(personElement, "name")); - person.setId(DOMHelper.getValueFromElement(personElement, "id")); + person.setName(DOMHelper.getValueFromElement(personElement, NAME)); + person.setId(DOMHelper.getValueFromElement(personElement, ID)); person.setBiography(DOMHelper.getValueFromElement(personElement, "biography")); try { @@ -585,7 +600,7 @@ public class MovieDbParser { person.setBirthday(DOMHelper.getValueFromElement(personElement, "birthday")); person.setBirthPlace(DOMHelper.getValueFromElement(personElement, "birthplace")); - person.setUrl(DOMHelper.getValueFromElement(personElement, "url")); + person.setUrl(DOMHelper.getValueFromElement(personElement, URL)); person.setVersion(Integer.parseInt(DOMHelper.getValueFromElement(personElement, "version"))); person.setLastModifiedAt(DOMHelper.getValueFromElement(personElement, "last_modified_at")); @@ -595,15 +610,15 @@ public class MovieDbParser { if (artworkNode.getNodeType() == Node.ELEMENT_NODE) { Element artworkElement = (Element) artworkNode; Artwork artwork = new Artwork(); - artwork.setType(artworkElement.getAttribute("type")); - artwork.setUrl(artworkElement.getAttribute("url")); + artwork.setType(artworkElement.getAttribute(TYPE)); + artwork.setUrl(artworkElement.getAttribute(URL)); artwork.setSize(artworkElement.getAttribute("size")); - artwork.setId(artworkElement.getAttribute("id")); + artwork.setId(artworkElement.getAttribute(ID)); person.addArtwork(artwork); } } - NodeList filmNodeList = doc.getElementsByTagName("movie"); + NodeList filmNodeList = doc.getElementsByTagName(MOVIE); for (int nodeLoop = 0; nodeLoop < filmNodeList.getLength(); nodeLoop++) { Node filmNode = filmNodeList.item(nodeLoop); if (filmNode.getNodeType() == Node.ELEMENT_NODE) { @@ -612,10 +627,10 @@ public class MovieDbParser { film.setCharacter(filmElement.getAttribute("character")); film.setDepartment(filmElement.getAttribute("department")); - film.setId(filmElement.getAttribute("id")); + film.setId(filmElement.getAttribute(ID)); film.setJob(filmElement.getAttribute("job")); - film.setName(filmElement.getAttribute("name")); - film.setUrl(filmElement.getAttribute("url")); + film.setName(filmElement.getAttribute(NAME)); + film.setUrl(filmElement.getAttribute(URL)); person.addFilm(film); } @@ -624,7 +639,10 @@ public class MovieDbParser { people.add(person); } catch (Exception error) { logger.severe("PersonInfo: " + error.getMessage()); - error.printStackTrace(); + final Writer eResult = new StringWriter(); + final PrintWriter printWriter = new PrintWriter(eResult); + error.printStackTrace(printWriter); + logger.severe(eResult.toString()); } } } @@ -663,8 +681,8 @@ public class MovieDbParser { */ private static MovieDB parseSimpleMovie(Element element) { MovieDB movie = new MovieDB(); - movie.setTitle(DOMHelper.getValueFromElement(element, "name")); - movie.setId(DOMHelper.getValueFromElement(element, "id")); + movie.setTitle(DOMHelper.getValueFromElement(element, NAME)); + movie.setId(DOMHelper.getValueFromElement(element, ID)); movie.setImdb(DOMHelper.getValueFromElement(element, "imdb_id")); movie.setVersion(Integer.valueOf(DOMHelper.getValueFromElement(element, "version"))); movie.setLastModifiedAt(DOMHelper.getValueFromElement(element, "last_modified_at")); @@ -684,8 +702,8 @@ public class MovieDbParser { */ private static Person parseSimplePerson(Element element) { Person person = new Person(); - person.setName(DOMHelper.getValueFromElement(element, "name")); - person.setId(DOMHelper.getValueFromElement(element, "id")); + 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")); return person; diff --git a/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/tools/WebBrowser.java b/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/tools/WebBrowser.java index 62c68315a..7dfa17d53 100644 --- a/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/tools/WebBrowser.java +++ b/themoviedbapi/src/main/java/com/moviejukebox/themoviedb/tools/WebBrowser.java @@ -90,16 +90,11 @@ public final class WebBrowser { if (in != null) { in.close(); } - if (cnx != null) { - if(cnx instanceof HttpURLConnection) { - ((HttpURLConnection)cnx).disconnect(); - } - } - if (cnx != null) { - if(cnx instanceof HttpURLConnection) { - ((HttpURLConnection)cnx).disconnect(); - } + + if ((cnx != null) && (cnx instanceof HttpURLConnection)) { + ((HttpURLConnection)cnx).disconnect(); } + } return content.toString(); } finally {