/*
* Copyright (c) 2005 Aetrion LLC.
*/
package com.flickr4java.flickr.contacts;
import java.io.Serializable;
import static com.flickr4java.flickr.contacts.OnlineStatus.OnlineStatusType.AWAY_TYPE;
import static com.flickr4java.flickr.contacts.OnlineStatus.OnlineStatusType.OFFLINE_TYPE;
import static com.flickr4java.flickr.contacts.OnlineStatus.OnlineStatusType.ONLINE_TYPE;
import static com.flickr4java.flickr.contacts.OnlineStatus.OnlineStatusType.UNKNOWN_TYPE;
/**
* Class representing the various types of online statuses.
*
* @author Anthony Eden
*/
public enum OnlineStatus implements Serializable {
OFFLINE(OFFLINE_TYPE),
AWAY(AWAY_TYPE),
ONLINE(ONLINE_TYPE),
UNKNOWN(UNKNOWN_TYPE);
private static final long serialVersionUID = 12L;
private final int type;
private OnlineStatus(int type) {
this.type = type;
}
/**
* Get the int value for the online status. This method is useful in switch statements.
*
* @return The int value for the online status
*/
public int getType() {
return type;
}
/**
* Get an OnlineStatus object for a given int value.
*
* @param type The int value
* @return The OnlineStatus object
*/
public static OnlineStatus fromType(int type) {
switch (type) {
case OFFLINE_TYPE:
return OFFLINE;
case AWAY_TYPE:
return AWAY;
case ONLINE_TYPE:
return ONLINE;
case UNKNOWN_TYPE:
return UNKNOWN;
default:
throw new IllegalArgumentException("Unsupported online type: " + type);
}
}
/**
* Get the OnlineStatus value for a given int represented as a String
*
* @param type The int represented as a String
* @return The OnlineStatus object
*/
public static OnlineStatus fromType(String type) {
if (type == null || "".equals(type)) {
return UNKNOWN;
} else {
return fromType(Integer.parseInt(type));
}
}
static class OnlineStatusType {
static final int OFFLINE_TYPE = 0;
static final int AWAY_TYPE = 1;
static final int ONLINE_TYPE = 2;
static final int UNKNOWN_TYPE = 100;
}
}