package org.limewire.core.api.search.browse;
import java.util.Arrays;
import java.util.List;
import org.limewire.friend.api.Friend;
import org.limewire.util.StringUtils;
public class BrowseStatus {
public enum BrowseState {
/** The browse completed successfully. */
LOADED(true),
/** The browse failed. */
FAILED(false),
/** Some of the browses failed (but some succeeded) -- used in multi-browse searches. */
PARTIAL_FAIL(true),
/** Some updates are available, but it is not completed. */
UPDATED(true),
/** Not all browses have completed, but none have failed yet. */
LOADING(true),
/** Useful in multi-browse: some browses have updates, but others have failed. */
UPDATED_PARTIAL_FAIL(true),
/** Useful for friend browses: the friend is currently offline. */
OFFLINE(false),
/** Useful for multi-friend browses: some friends are online, but sharing nothing. */
NO_FRIENDS_SHARING(false) ;
private boolean ok;
BrowseState(boolean ok){
this.ok = ok;
}
/**
* @return true if any files have loaded or if there is a chance of files loading (including UPDATED), false if
* the browse has failed or there are no files to load
*/
public boolean isOK(){
return ok;
}
}
private final BrowseState state;
private final List<Friend> failed;
private final BrowseSearch search;
public BrowseStatus(BrowseSearch search, BrowseState state, Friend... failedFriends){
this.search = search;
this.state = state;
this.failed = Arrays.asList(failedFriends);
}
public BrowseState getState(){
return state;
}
public List<Friend> getFailedFriends(){
return failed;
}
public BrowseSearch getBrowseSearch() {
return search;
}
@Override
public String toString() {
return StringUtils.toString(this);
}
}