package com.dt.iTunesController; import com.jacob.com.Dispatch; /** * Represents a URL track. * * A URL track references a network audio stream. * @author Steve Eyre * @version 0.2 */ public class ITURLTrack extends ITTrack { public ITURLTrack (Dispatch d) { super(d); } /** * Returns the URL of the stream represented by this track. * @return The URL of the stream represented by this track. */ public String getURL () { return Dispatch.get(object, "URL").getString(); } /** * Set the URL of the stream represented by this track. * @param url The URL of the stream represented by this track. */ public void setURL (String url) { Dispatch.call(object, "URL", url); } /** * Returns true if this track is a podcast track. If a podcast track is an * IITURLTrack, the podcast episode has not been downloaded. * @return Returns true if this track is a podcast track. */ public boolean isPodcast () { return Dispatch.get(object, "Podcast").getBoolean(); } /** * Returns the category for the track. * @return Returns the category for the track. */ public String getCategory () { return Dispatch.get(object, "Category").getString(); } /** * Sets the category for the track. * @param category Sets the category for the track. */ public void setCategory (String category) { Dispatch.call(object, "Category", category); } /** * Returns the description for the track. * @return Returns the description for the track. */ public String getDescription () { return Dispatch.get(object, "Description").getString(); } /** * Sets the description for the track. * @param description The new description for the track. */ public void setDescription (String description) { Dispatch.call(object, "Description", description); } /** * Returns the long description for the track. * @return Returns the description for the track. */ public String getLongDescription () { return Dispatch.get(object, "LongDescription").getString(); } /** * Sets the long description for the track. * @param longDescription The new long description for the track. */ public void setLongDescription (String longDescription) { Dispatch.call(object, "LongDescription", longDescription); } /** * Returns the user or computed rating of the album that this track belongs * to (0 to 100). If the album rating has never been set, or has been set to * 0, it will be computed based on the ratings of tracks in the album. * @return Returns the album rating of the album that this track belongs to (0 to 100). */ public long getAlbumRating () { return Dispatch.get(object, "AlbumRating").getLong(); } /** * Set the album rating of the album that this track belongs to (0 to 100). * If the album rating is set to 0, it will be computed based on the ratings * of tracks in the album. * @param albumRating The new album rating of the album that this track * belongs to (0 to 100). If rating is outside this range, it will be * pinned. */ public void setAlbumRating (long albumRating) { Dispatch.call(object, "AlbumRating", albumRating); } /** * Returns the album rating kind. If the album rating has never been set, or * has been set to 0, the kind is ITRatingKindComputed. Otherwise, the kind * is ITRatingKindUser. * @return Returns the album rating kind. */ public ITRatingKind getAlbumRatingKind () { return ITRatingKind.values()[Dispatch.get(object, "AlbumRatingKind").getInt()]; } /** * Returns the track rating kind. If the track rating has never been set, or * has been set to 0, the kind is ITRatingKindComputed. Otherwise, the kind * is ITRatingKindUser. * @return Returns the track rating kind. */ public ITRatingKind getRatingKind () { return ITRatingKind.values()[Dispatch.get(object, "RatingKind").getInt()]; } /** * Returns a collection of playlists that contain the song that this track * represents. * * This is the same collection of playlists that are shown in the "Show in * Playlist" contextual menu for a track, plus the specific playlist that * contains this track. * * A track represents a song in a single playlist, use * ITTrack.getPlaylist() to get the specific playlist that * contains this track. * @return Collection of ITPlaylist objects. */ public ITPlaylistCollection getPlaylists () { Dispatch playlists = Dispatch.get(object, "Playlists").toDispatch(); return new ITPlaylistCollection(playlists); } /** * Update the podcast feed for this track. This is equivalent to the user * choosing Update Podcast from the contextual menu for the podcast feed * that contains this track. */ public void updatePodcastFeed () { Dispatch.call(object, "UpdatePodcastFeed"); } /** * Start downloading the podcast episode that corresponds to this track. * This is equivalent to the user clicking the Get button next to this * track. */ public void downloadPodcastEpisode () { Dispatch.call(object, "DownloadPodcastEpisode"); } /** * Reveals the track in the main browser window. */ public void reveal() { Dispatch.call(object, "Reveal"); } }