package org.ovirt.mobile.movirt.ui.dashboard.maps;
import org.ovirt.mobile.movirt.model.Host;
import java.util.Arrays;
import java.util.Collections;
import java.util.EnumMap;
import java.util.List;
import java.util.Map;
/**
* Created by suomiy on 5/18/16.
*/
public enum HostStatusMap {
// dashboard position depends on the order
WARNING(Host.Status.UNASSIGNED, Host.Status.MAINTENANCE, Host.Status.INSTALLING, Host.Status.REBOOT,
Host.Status.PREPARING_FOR_MAINTENANCE, Host.Status.PENDING_APPROVAL, Host.Status.CONNECTING,
Host.Status.INSTALLING_OS, Host.Status.KDUMPING),
UP(Host.Status.UP),
DOWN(Host.Status.DOWN, Host.Status.NON_RESPONSIVE, Host.Status.ERROR, Host.Status.INSTALL_FAILED,
Host.Status.NON_OPERATIONAL, Host.Status.INITIALIZING);
private final List<Host.Status> values;
private static Map<Host.Status, HostStatusMap> map = new EnumMap<>(Host.Status.class);
static {
for (HostStatusMap item : HostStatusMap.values()) {
for (Host.Status status : item.getValues()) {
map.put(status, item);
}
}
}
HostStatusMap(Host.Status... values) {
this.values = Collections.unmodifiableList(Arrays.asList(values));
}
public List<Host.Status> getValues() {
return values;
}
public static DashboardPosition getDashboardPosition(Host.Status status) {
HostStatusMap result = map.get(status);
return result == null ? DashboardPosition.UNKNOWN : DashboardPosition.fromValue(result.ordinal());
}
}