package com.robonobo.core.metadata;
import java.util.Collection;
import java.util.Date;
import com.robonobo.core.api.model.*;
import com.robonobo.core.service.AbstractService;
public abstract class AbstractMetadataService extends AbstractService {
/** 'Serial' means that all the objects in one request will be done before moving onto the next, 'Parallel' means
* that one object from each request will be done in turn */
public enum RequestFetchOrder {
Serial, Parallel
}
protected RequestFetchOrder fetchOrder = RequestFetchOrder.Serial;
public void setFetchOrder(RequestFetchOrder fetchOrder) {
this.fetchOrder = fetchOrder;
}
@Override
public String getProvides() {
return "core.metadata";
}
public abstract void setCredentials(String username, String password);
public abstract void fetchStreams(Collection<String> sids, StreamCallback callback);
/** @param callback
* on success, the passed stream may be null */
public abstract void putStream(Stream s, StreamCallback callback);
/** @param callback
* on error, the user id will not be meaningful */
public abstract void fetchUserForLogin(String email, String password, UserCallback callback);
public abstract void fetchUser(long userId, UserCallback callback);
public abstract void fetchUsers(Collection<Long> userIds, UserCallback callback);
public abstract void fetchUserConfig(long userId, UserConfigCallback callback);
/** @param callback
* on success, the passed userconfig may be null */
public abstract void updateUserConfig(UserConfig uc, UserConfigCallback callback);
public abstract void fetchPlaylist(long playlistId, PlaylistCallback callback);
public abstract void fetchPlaylists(Collection<Long> playlistIds, PlaylistCallback callback);
public abstract void updatePlaylist(Playlist p, PlaylistCallback callback);
/** @param callback
* on success, the passed playlist may be null */
public abstract void postPlaylistUpdateToService(String service, long playlistId, String msg, PlaylistCallback callback);
/** Will remove the logged-in user from the list of playlist owners, or delete the playlist if they are the only
* owner
*
* @param callback
* on success, the passed playlist will be null */
public abstract void deletePlaylist(Playlist p, PlaylistCallback callback);
public abstract void sharePlaylist(Playlist p, Collection<Long> shareFriendIds, Collection<String> friendEmails, PlaylistCallback callback);
public abstract void addFriends(Collection<String> friendEmails, GeneralCallback callback);
public abstract void fetchLibrary(long userId, Date lastUpdated, LibraryCallback callback);
/** @param callback
* on success, the passed library may be null */
public abstract void addToLibrary(long userId, Library addedLib, LibraryCallback callback);
/** @param callback
* on success, the passed library may be null */
public abstract void deleteFromLibrary(long userId, Library delLib, LibraryCallback callback);
public abstract void search(String query, int firstResult, SearchCallback callback);
public abstract void deleteComment(long commentId, CommentCallback callback);
public abstract void getAllComments(String itemType, long itemId, Date since, AllCommentsCallback callback);
public abstract void newComment(Comment c, CommentCallback callback);
}