package com.atomjack.vcfp.model;
import android.os.Parcel;
import android.os.Parcelable;
import com.atomjack.shared.model.Timeline;
import org.simpleframework.xml.Attribute;
import org.simpleframework.xml.ElementList;
import org.simpleframework.xml.Root;
import java.util.ArrayList;
import java.util.List;
import java.util.Random;
@Root(strict=false)
public class MediaContainer implements Parcelable {
@Attribute(required=false)
public String machineIdentifier;
@Attribute(required=false)
public String friendlyName;
@Attribute(required=false)
public String title1;
@Attribute(required=false)
public String grandparentTitle;
@ElementList(required=false, inline=true, name="Server")
public List<PlexClient> clients = new ArrayList<PlexClient>();
@ElementList(required=false, inline=true, entry="Directory")
public List<PlexDirectory> directories = new ArrayList<PlexDirectory>();
@ElementList(required=false, inline=true, entry="Video")
public ArrayList<PlexVideo> videos = new ArrayList<PlexVideo>();
@ElementList(required=false, inline=true, entry="Track")
public ArrayList<PlexTrack> tracks = new ArrayList<PlexTrack>();
@ElementList(required=false, inline=true, entry="Device")
public List<Device> devices = new ArrayList<Device>();
@Attribute(required=false)
public String token;
@Attribute(required=false)
public String location;
@Attribute(required=false)
public String commandID;
@ElementList(required=false, inline=true, entry="Timeline")
public List<Timeline> timelines;
@Attribute(required=false)
public String art;
@Attribute(required=false)
public String playQueueID;
public MediaContainer() {
}
public Timeline getTimeline(String type) {
if(timelines != null) {
for (Timeline t : timelines) {
if (t.type.equals(type))
return t;
}
}
return null;
}
public Timeline getActiveTimeline() {
for(Timeline t : timelines) {
if(t.state != null && !t.state.equals("stopped"))
return t;
}
return null;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(machineIdentifier);
parcel.writeString(friendlyName);
parcel.writeString(title1);
parcel.writeString(grandparentTitle);
parcel.writeString(token);
parcel.writeString(location);
parcel.writeString(commandID);
parcel.writeString(art);
parcel.writeString(playQueueID);
parcel.writeTypedList(clients);
parcel.writeTypedList(directories);
parcel.writeTypedList(videos);
parcel.writeTypedList(tracks);
parcel.writeTypedList(devices);
}
public MediaContainer(Parcel in) {
machineIdentifier = in.readString();
friendlyName = in.readString();
title1 = in.readString();
grandparentTitle = in.readString();
token = in.readString();
location = in.readString();
commandID = in.readString();
art = in.readString();
playQueueID = in.readString();
in.readTypedList(clients, PlexClient.CREATOR);
in.readTypedList(directories, PlexDirectory.CREATOR);
in.readTypedList(videos, PlexVideo.CREATOR);
in.readTypedList(tracks, PlexTrack.CREATOR);
in.readTypedList(devices, Device.CREATOR);
}
@Override
public int describeContents() {
return 0;
}
public static final Parcelable.Creator<MediaContainer> CREATOR = new Parcelable.Creator<MediaContainer>() {
public MediaContainer createFromParcel(Parcel in) {
return new MediaContainer(in);
}
public MediaContainer[] newArray(int size) {
return new MediaContainer[size];
}
};
public PlexDirectory getRandomDirectory() {
return directories.size() == 0 ? null : directories.get(new Random().nextInt(directories.size()));
}
public PlexTrack getRandomTrack() {
return tracks.get(new Random().nextInt(tracks.size()));
}
public PlexVideo getRandomVideo() {
return videos.get(new Random().nextInt(videos.size()));
}
}