Package com.bramosystems.oss.player.playlist.client.spf

Source Code of com.bramosystems.oss.player.playlist.client.spf.SPFPlaylist

/*
* Copyright 2011 Sikirulai Braheem <sbraheem at bramosystems.com>.
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
*      http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
package com.bramosystems.oss.player.playlist.client.spf;

import com.bramosystems.oss.player.core.client.PlaylistSupport;
import com.bramosystems.oss.player.core.client.playlist.MRL;
import com.bramosystems.oss.player.core.client.playlist.Playlist;
import com.google.gwt.core.client.JavaScriptObject;
import com.google.gwt.core.client.JsArray;
import com.google.gwt.core.client.JsArrayString;
import com.google.gwt.core.client.JsDate;
import com.google.gwt.http.client.URL;
import com.google.gwt.http.client.UrlBuilder;
import java.util.Date;

/**
* Class represents an XSPF/JSPF playlist
*
* @author Sikirulai Braheem <sbraheem at bramosystems.com>
* @since 1.3
*/
public final class SPFPlaylist extends JavaScriptObject {

    /**
     * Constructor
     */
    protected SPFPlaylist() {
    }

    /**
     * Returns the comment associated with this playlist
     *
     * @return the comment associated with this playlist
     */
    public native String getAnnotation() /*-{
    return this.annotation;
    }-*/;

    /**
     * Associates a comment with this playlist
     *
     * @param annotation the comment associated with this playlist
     */
    public native void setAnnotation(String annotation) /*-{
    this.annotation = annotation;
    }-*/;

    /**
     * Returns the attribution to the original playlist
     *
     * @return the attribution to the original playlist
     */
    public native Attribution getAttribution() /*-{
    return this.attribution;
    }-*/;

    /**
     * Sets the attribution to the original playlist
     *
     * @param attribution the attribution to the original playlist
     */
    public native void setAttribution(Attribution attribution) /*-{
    this.attribution = attribution;
    }-*/;

    /**
     * Returns the creator (author) of this playlist
     *
     * @return the creator of this playlist
     */
    public native String getCreator() /*-{
    return this.creator;
    }-*/;

    /**
     * Sets the creator (author) of this playlist
     *
     * @param creator the creator of this playlist
     */
    public native void setCreator(String creator) /*-{
    this.creator = creator;
    }-*/;

    /**
     * Returns the date this playlist was created
     *
     * @return the creation date of this playlist
     */
    public final Date getDate() {
        return new Date((long)getDateImpl().getTime());
    }

    /**
     * Sets the date this playlist was created
     *
     * @param date the creation date of this playlist
     */
    public final void setDate(Date date) {
        setDateImpl(JsDate.create(date.getTime()));
    }

    private native JsDate getDateImpl() /*-{
    return this.date;
    }-*/;

    private native void setDateImpl(JsDate date) /*-{
    this.date = date;
    }-*/;

    /**
     * Returns a canonical identifier for this playlist
     *
     * @return a canonical identifier for this playlist
     */
    public native String getIdentifier() /*-{
    return this.identifier;
    }-*/;

    /**
     * Sets a canonical identifier for this playlist.
     *
     * @param identifier a canonical identifier for this playlist
     */
    public native void setIdentifier(String identifier) /*-{
    this.identifier = identifier;
    }-*/;

    /**
     * Returns the URI of the image to display for the rendering duration of this playlist.
     *
     * @return the URI of the general image for the playlist
     */
    public native String getImage() /*-{
    return this.image;
    }-*/;

    /**
     * Sets the URI of the image to display for the rendering duration of this playlist
     *
     * @param image the URI of the image to use for this playlist
     */
    public native void setImage(String image) /*-{
    this.image = image;
    }-*/;

    /**
     * Returns the URI of a location containing more information about this playlist
     *
     * @return the URI of a location containing more information about this playlist
     */
    public native String getInfo() /*-{
    return this.info;
    }-*/;

    /**
     * Sets the URI of a location containing more information about this playlist
     *
     * @param info the URI of a location containing more information about this playlist
     */
    public native void setInfo(String info) /*-{
    this.info = info;
    }-*/;

    /**
     * Returns the URI of the license under which this playlist was released
     *
     * @return the URI of the license
     */
    public native String getLicense() /*-{
    return this.license;
    }-*/;

    /**
     * Sets the URI of the license under which this playlist was released
     *
     * @param license the URI of the license
     */
    public native void setLicense(String license) /*-{
    this.license = license;
    }-*/;

    /**
     * Returns the source URI of this playlist
     *
     * @return the source URI of this playlist
     */
    public native String getLocation() /*-{
    return this.location;
    }-*/;

    /**
     * Sets the source URI of this playlist
     *
     * @param location the source URI of this playlist
     */
    public native void setLocation(String location) /*-{
    this.location = location;
    }-*/;

    /**
     * Returns the title of this playlist
     *
     * @return the title of this playlist
     */
    public native String getTitle() /*-{
    return this.title;
    }-*/;

    /**
     * Sets the title of this playlist
     *
     * @param title the title of this playlist
     */
    public native void setTitle(String title) /*-{
    this.title = title;
    }-*/;

    /**
     * Returns the track entries in this playlist
     *
     * @return the track entries in this playlist
     */
    public native JsArray<Track> getTracks() /*-{
    return this.track;
    }-*/;

    /**
     * Sets the track entries of this playlist
     *
     * @param tracks the track entries of this playlist
     */
    public native void setTracks(JsArray<Track> tracks) /*-{
    this.track = tracks;
    }-*/;

    /**
     * Returns this playlist as a Playlist object that can be used with player widgets
     * with {@link PlaylistSupport}
     *
     * @return Playlist object
     */
    public final Playlist toPlaylist() {
        Playlist p = new Playlist();
        p.setName(getTitle());
        p.setAuthor(getCreator());

        JsArray<Track> ts = getTracks();
        for (int i = 0; i < ts.length(); i++) {
            Track t = ts.get(i);

            MRL m = new MRL(t.getTitle(), t.getCreator());
            JsArrayString js = t.getLocation();
            for (int j = 0; j < js.length(); j++) {
                m.addURL(js.get(j));
            }
            p.add(m);
        }       
        return p;
    }
}
TOP

Related Classes of com.bramosystems.oss.player.playlist.client.spf.SPFPlaylist

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.