com.bramosystems.oss.player.playlist.client.spf.SPFPlaylist.java Source code

Java tutorial

Introduction

Here is the source code for com.bramosystems.oss.player.playlist.client.spf.SPFPlaylist.java

Source

/*
 * 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;
    }
}