package com.distantfuture.videos.database;
import android.os.Bundle;
import java.util.ArrayList;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
public class YouTubeData {
// is this faster? no idea
private static final String mNotNull = "";
// raw access for speed
public long mID;
public String mRequest;
public String mTitle;
public String mDescription;
public String mThumbnail;
public long mPublishedDate;
// used for videos
public String mVideo;
public String mDuration;
// used only for subscriptions and categories and channel info
public String mChannel;
// used for playlists
public String mPlaylist;
public long mItemCount; // number of videos in a playlist
// use convenience methods
private String mHidden;
// ----------------------------------------------------
// public methods
public static List<YouTubeData> sortByDate(List<YouTubeData> videoIDs) {
Collections.sort(videoIDs, new Comparator<YouTubeData>() {
public int compare(YouTubeData lhs, YouTubeData rhs) {
return (int) (lhs.mPublishedDate - rhs.mPublishedDate);
}
});
return videoIDs;
}
public static List<YouTubeData> sortByTitle(List<YouTubeData> videoIDs) {
Collections.sort(videoIDs, new Comparator<YouTubeData>() {
public int compare(YouTubeData lhs, YouTubeData rhs) {
return lhs.mTitle.compareTo(rhs.mTitle);
}
});
return videoIDs;
}
// ----------------------------------------------------
// static helper functions
// video, channel or playlist ids
public static List<String> contentIdsList(List<YouTubeData> videoData) {
List<String> result = new ArrayList<String>(videoData.size());
for (YouTubeData data : videoData) {
if (data.mVideo != null)
result.add(data.mVideo);
else if (data.mPlaylist != null)
result.add(data.mPlaylist);
else if (data.mChannel != null)
result.add(data.mChannel);
}
return result;
}
public static Bundle toBundle(YouTubeData data) {
Bundle result = new Bundle();
result.putString("title", data.mTitle);
result.putString("description", data.mDescription);
result.putString("channel", data.mChannel);
result.putString("thumbnail", data.mThumbnail);
result.putString("hidden", data.mHidden);
result.putString("request", data.mRequest);
result.putString("video", data.mVideo);
result.putString("duration", data.mDuration);
result.putString("playlist", data.mPlaylist);
result.putLong("itemCount", data.mItemCount);
result.putLong("id", data.mID);
result.putLong("publishedDate", data.mPublishedDate);
return result;
}
public static YouTubeData fromBundle(Bundle bundle) {
YouTubeData result = new YouTubeData();
result.mTitle = bundle.getString("title");
result.mDescription = bundle.getString("description");
result.mChannel = bundle.getString("channel");
result.mThumbnail = bundle.getString("thumbnail");
result.mHidden = bundle.getString("hidden");
result.mRequest = bundle.getString("request");
result.mVideo = bundle.getString("video");
result.mDuration = bundle.getString("duration");
result.mPlaylist = bundle.getString("playlist");
result.mItemCount = bundle.getLong("itemCount");
result.mID = bundle.getLong("id");
result.mPublishedDate = bundle.getLong("publishedDate");
return result;
}
// hidden string is either '' or null,
public boolean isHidden() {
return mHidden != null;
}
public void setHidden(boolean hidden) {
mHidden = hidden ? mNotNull : null;
}
}