package org.ovirt.mobile.movirt.ui.dashboard.maps;
import org.ovirt.mobile.movirt.model.Vm;
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 VmStatusMap {
// dashboard position depends on the order
WARNING(Vm.Status.POWERING_UP, Vm.Status.PAUSED, Vm.Status.MIGRATING, Vm.Status.UNKNOWN,
Vm.Status.WAIT_FOR_LAUNCH, Vm.Status.SUSPENDED, Vm.Status.POWERING_DOWN, Vm.Status.UNASSIGNED),
UP(Vm.Status.UP, Vm.Status.SAVING_STATE, Vm.Status.RESTORING_STATE),
DOWN(Vm.Status.DOWN, Vm.Status.NOT_RESPONDING, Vm.Status.REBOOT_IN_PROGRESS,
Vm.Status.IMAGE_LOCKED);
private final List<Vm.Status> values;
private static Map<Vm.Status, VmStatusMap> map = new EnumMap<>(Vm.Status.class);
static {
for (VmStatusMap item : VmStatusMap.values()) {
for (Vm.Status status : item.getValues()) {
map.put(status, item);
}
}
}
VmStatusMap(Vm.Status... values) {
this.values = Collections.unmodifiableList(Arrays.asList(values));
}
public List<Vm.Status> getValues() {
return values;
}
public static DashboardPosition getDashboardPosition(Vm.Status status) {
VmStatusMap result = map.get(status);
return result == null ? DashboardPosition.UNKNOWN : DashboardPosition.fromValue(result.ordinal());
}
}