Example #1
0
  public static ArrayList<Movie> getMovies(int page_number, String appid, Activity context) {
    HttpURLConnection urlConnection = null;
    BufferedReader reader = null;
    SharedPreferences sharedPref = context.getPreferences(Context.MODE_PRIVATE);

    String sortby =
        sharedPref.getString(
            context.getString(R.string.sort_by), context.getString(R.string.most_popular_value));

    if (sortby.equals(context.getString(R.string.action_favorite))) {

      Cursor cursor =
          context
              .getContentResolver()
              .query(MoviesProvider.Movies.CONTENT_URI, null, null, null, null);

      if (cursor != null && cursor.getCount() > 0) {
        ArrayList<Movie> moviesList = new ArrayList<>();

        while (cursor.moveToNext()) {
          Movie movie = new Movie();
          movie.id = cursor.getInt(cursor.getColumnIndex(MovieColumns._ID));
          movie.title = cursor.getString(cursor.getColumnIndex(MovieColumns.TITLE));
          movie.release_date = cursor.getString(cursor.getColumnIndex(MovieColumns.RELEASE_DATE));
          movie.poster = cursor.getString(cursor.getColumnIndex(MovieColumns.POSTER));
          movie.overview = cursor.getString(cursor.getColumnIndex(MovieColumns.OVERVIEW));
          movie.vote_average = cursor.getDouble(cursor.getColumnIndex(MovieColumns.VOTE_AVG));
          movie.popularity = cursor.getDouble(cursor.getColumnIndex(MovieColumns.POPULARITY));

          Cursor trailersCursor =
              context
                  .getContentResolver()
                  .query(MoviesProvider.Trailers.fromMovie(movie.id), null, null, null, null);
          if (trailersCursor != null && trailersCursor.getCount() > 0) {
            ArrayList<Trailer> trailersList = new ArrayList<>();

            while (trailersCursor.moveToNext()) {

              Trailer trailer = new Trailer();
              trailer.id =
                  trailersCursor.getString(trailersCursor.getColumnIndex(TrailerColumns._ID));
              trailer.key =
                  trailersCursor.getString(trailersCursor.getColumnIndex(TrailerColumns.KEY));
              trailer.title =
                  trailersCursor.getString(trailersCursor.getColumnIndex(TrailerColumns.TITLE));
              trailersList.add(trailer);
            }
            movie.trailers = trailersList;
            trailersCursor.close();
          }

          Cursor reviewsCursor =
              context
                  .getContentResolver()
                  .query(MoviesProvider.Reviews.fromMovie(movie.id), null, null, null, null);
          if (reviewsCursor != null && reviewsCursor.getCount() > 0) {
            ArrayList<Review> reviewsList = new ArrayList<>();

            while (reviewsCursor.moveToNext()) {

              Review review = new Review();
              review.id = reviewsCursor.getString(reviewsCursor.getColumnIndex(ReviewColumns._ID));
              review.author =
                  reviewsCursor.getString(reviewsCursor.getColumnIndex(ReviewColumns.AUTHOR));
              review.content =
                  reviewsCursor.getString(reviewsCursor.getColumnIndex(ReviewColumns.CONTENT));
              review.url = reviewsCursor.getString(reviewsCursor.getColumnIndex(ReviewColumns.URL));

              reviewsList.add(review);
            }
            movie.reviews = reviewsList;
            reviewsCursor.close();
          }
          moviesList.add(movie);
        }

        cursor.close();
        return moviesList;
      }
      return null;
    }

    try {

      final String MOVIES_BASE_URL = "http://api.themoviedb.org/3/discover/movie?";
      final String SORTBY_PARAM = "sort_by";
      final String APPID_PARAM = "api_key";
      final String PAGE_PARAM = "page";

      Uri buildUri =
          Uri.parse(MOVIES_BASE_URL)
              .buildUpon()
              .appendQueryParameter(SORTBY_PARAM, sortby)
              .appendQueryParameter(APPID_PARAM, appid)
              .appendQueryParameter(PAGE_PARAM, Integer.toString(page_number))
              .build();

      URL url = new URL(buildUri.toString());
      urlConnection = (HttpURLConnection) url.openConnection();
      urlConnection.setRequestMethod("GET");
      urlConnection.connect();

      InputStream inputStream = urlConnection.getInputStream();
      StringBuffer buffer = new StringBuffer();
      if (inputStream == null) {
        return null;
      }

      reader = new BufferedReader(new InputStreamReader(inputStream));

      String line;
      while ((line = reader.readLine()) != null) {
        buffer.append(line + "\n");
      }

      if (buffer.length() == 0) {
        return null;
      }
      String movieJsonStr = buffer.toString();

      try {
        return getMoviesDataFromJson(movieJsonStr, appid);
      } catch (JSONException e) {
        Log.e("MovieAPP", e.getMessage(), e);
        e.printStackTrace();
      }

    } catch (IOException e) {
      Log.e("MovieAPP", "Error", e);
      e.printStackTrace();
      return null;
    } finally {
      if (urlConnection != null) {
        urlConnection.disconnect();
      }
      if (reader != null) {
        try {
          reader.close();
        } catch (final IOException e) {
          Log.e("MovieAPP", "Error", e);
          e.printStackTrace();
        }
      }
    }
    return null;
  }