package com.robonobo.midas.client;
import java.util.Collection;
import java.util.Stack;
import com.robonobo.core.api.model.Playlist;
import com.robonobo.core.api.proto.CoreApi.PlaylistMsg;
import com.robonobo.core.metadata.PlaylistCallback;
import com.robonobo.midas.client.Params.Operation;
public class GetPlaylistRequest implements Request {
MidasClientConfig cfg;
Stack<Long> plIds = new Stack<Long>();
PlaylistCallback handler;
public GetPlaylistRequest(MidasClientConfig cfg, Collection<Long> plIds, PlaylistCallback handler) {
this.cfg = cfg;
this.plIds.addAll(plIds);
this.handler = handler;
}
public GetPlaylistRequest(MidasClientConfig cfg, long plId, PlaylistCallback handler) {
this.cfg = cfg;
this.plIds.add(plId);
this.handler = handler;
}
@Override
public int remaining() {
return plIds.size();
}
@Override
public Params getNextParams() {
Long plId = plIds.pop();
return new Params(Operation.Get, null, PlaylistMsg.newBuilder(), cfg.getPlaylistUrl(plId), plId);
}
@Override
public void success(Object obj) {
PlaylistMsg msg = (PlaylistMsg) obj;
handler.success(new Playlist(msg));
}
@Override
public void error(Params p, Exception e) {
Long plId = (Long) p.obj;
handler.error(plId, e);
}
}