public ArrayList<ArrayList<Feed>> getCategoriesForNewsPapers(ArrayList<String> newsPaperNames) {
    Cursor result = null;
    ArrayList<ArrayList<Feed>> categories = new ArrayList<ArrayList<Feed>>();
    ArrayList<Feed> category = new ArrayList<Feed>();

    try {
      db = appCtx.openOrCreateDatabase(databaseName, Context.MODE_PRIVATE, null);

      for (String newsPaper : newsPaperNames) {
        result =
            db.query(
                tableName,
                new String[] {"Category", "FeedURL", "Subscribed"},
                "NewsPaperName=?",
                new String[] {newsPaper},
                null,
                null,
                null);
        result.moveToFirst();
        Feed feed = new Feed();

        int categoryIndex = result.getColumnIndex("Category");
        int subscribedIndex = result.getColumnIndex("Subscribed");
        int feedUrlIndex = result.getColumnIndex("FeedURL");
        // Add to corresponding array list
        while (!result.isAfterLast()) {
          feed.setNewsPaper(newsPaper);
          feed.setCategory(result.getString(categoryIndex));
          feed.setFeedURL(result.getString(feedUrlIndex));
          feed.setSubscribed(result.getInt(subscribedIndex));

          category.add(feed);
          result.moveToNext();
        }
        categories.add(category);
        category = new ArrayList<Feed>();
      }
      result.close();
      db.close();

    } catch (SQLiteException exception) {
      Log.e(
          "NewsPaperTableHandler::getCategoriesForNewsPapers",
          "Categories could not be got " + exception.getMessage());
    } catch (Exception exception) {
      Log.e("NewsPaperTableHandler::getCategoriesForNewsPapers", exception.getMessage());
    }

    return categories;
  }