com.hotstar.player.adplayer.feeds.ReferencePlayerFeedAdapter.java Source code

Java tutorial

Introduction

Here is the source code for com.hotstar.player.adplayer.feeds.ReferencePlayerFeedAdapter.java

Source

/*
 * ************************************************************************
 *
 * ADOBE SYSTEMS INCORPORATED
 * Copyright 2013 Adobe Systems Incorporated
 * All Rights Reserved.
 * NOTICE:  Adobe permits you to use, modify, and distribute this file in accordance with the 
 * terms of the Adobe license agreement accompanying it.  If you have received this file from a 
 * source other than Adobe, then your use, modification, or distribution of it requires the prior 
 * written permission of Adobe.
 *
 **************************************************************************
 */

package com.hotstar.player.adplayer.feeds;

import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;

import com.hotstar.player.adplayer.AdVideoApplication;

/**
 * The ReferencePlayerFeedAdapter is the corresponding feed adapter to the
 * JSON-based input format that Primetime Reference Implementation currently uses by default. It
 * is the class for iterating the Primetime reference implementation feed response content items.
 * 
 * @author dshei
 * 
 */
public final class ReferencePlayerFeedAdapter implements IFeedAdapter {
    private static final String LOG_TAG = "[Player]::ReferencePlayerFeedAdapter";

    private final static String NAME_ENTRIES = "entries";

    protected final JSONArray entries;
    protected int entryIndex = -1;

    /**
     * Class constructor for the ReferencePlayerFeedAdapter. Used by the
     * getInstance method once the JSON feed is parsed
     * 
     * @param entries
     *            - a JSON array of video content items
     */
    protected ReferencePlayerFeedAdapter(JSONArray entries) {
        this.entries = entries;
    }

    /**
     * Returns an instance of the ReferencePlayerFeedAdapter after parsing the
     * JSON feed
     * 
     * @param jsonFeed
     *            - feed response in JSON format to be parsed
     * @return ReferencePlayerFeedAdapter - an instance of the
     *         ReferencePlayerFeedAdapter that will iterate through the JSON
     *         content list response
     * @throws FeedParsingException
     *             - if there is an error parsing the JSON feed
     */
    public static ReferencePlayerFeedAdapter getInstance(String jsonFeed) throws FeedParsingException {
        if (jsonFeed == null) {
            return null;
        }

        try {
            JSONObject object = new JSONObject(jsonFeed);
            JSONArray entries = object.getJSONArray(NAME_ENTRIES);
            return new ReferencePlayerFeedAdapter(entries);
        } catch (JSONException e) {
            AdVideoApplication.logger.e(LOG_TAG + "::getInstance", "Error parsing content list: " + e.getMessage());
            throw new FeedParsingException();
        }
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public IFeedItemAdapter getFirstItem() {
        this.entryIndex = 0;
        return getEntry();
    }

    /**
     * {@inheritDoc}
     */
    @Override
    public IFeedItemAdapter getNextItem() {
        this.entryIndex++;
        return getEntry();
    }

    /**
     * Returns the ReferencePlayerFeedItemAdapter that represents a single
     * content item from the Primetime reference implementation JSON input feed
     * 
     * @return ReferencePlayerFeedItemAdapter - the adapter that will be used
     *         for retrieving specific data for a given content item
     */
    protected ReferencePlayerFeedItemAdapter getEntry() {
        try {
            if (entryIndex < entries.length()) {
                return new ReferencePlayerFeedItemAdapter(entries.getJSONObject(entryIndex));
            }
        } catch (JSONException e) {
            AdVideoApplication.logger.e(LOG_TAG + "::getEntry", "Error parsing content list: " + e.getMessage());
        }

        return null;
    }

}