package com.esoxjem.movieguide.listing; import android.support.annotation.NonNull; import com.esoxjem.movieguide.Api; import com.esoxjem.movieguide.Movie; import org.json.JSONArray; import org.json.JSONException; import org.json.JSONObject; import java.util.ArrayList; import java.util.List; /** * @author arun */ public class MoviesListingParser { public static final String RESULTS = "results"; public static final String OVERVIEW = "overview"; public static final String RELEASE_DATE = "release_date"; public static final String POSTER_PATH = "poster_path"; public static final String TITLE = "title"; public static final String VOTE_AVERAGE = "vote_average"; private static final String BACKDROP_PATH = "backdrop_path"; private static final String ID = "id"; @NonNull public static List<Movie> parse(String json) throws JSONException { List<Movie> movies = new ArrayList<>(24); JSONObject response = new JSONObject(json); if (!response.isNull(RESULTS)) { JSONArray results = response.getJSONArray(RESULTS); for (int i = 0; i < results.length(); i++) { movies.add(getMovie(results.getJSONObject(i))); } } else { // No results } return movies; } @NonNull private static Movie getMovie(JSONObject result) throws JSONException { Movie movie = new Movie(); if (!result.isNull(ID)) { movie.setId(result.getString(ID)); } if (!result.isNull(OVERVIEW)) { movie.setOverview(result.getString(OVERVIEW)); } if (!result.isNull(RELEASE_DATE)) { movie.setReleaseDate(String.valueOf(result.get(RELEASE_DATE))); } if (!result.isNull(POSTER_PATH)) { movie.setPosterPath(Api.POSTER_PATH + result.getString(POSTER_PATH)); } if (!result.isNull(BACKDROP_PATH)) { movie.setBackdropPath(Api.BACKDROP_PATH + result.getString(BACKDROP_PATH)); } if (!result.isNull(TITLE)) { movie.setTitle(result.getString(TITLE)); } if (!result.isNull(VOTE_AVERAGE)) { movie.setVoteAverage(result.getDouble(VOTE_AVERAGE)); } return movie; } }