package org.ovirt.mobile.movirt.ui.dashboard.maps; import org.ovirt.mobile.movirt.model.StorageDomain; 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 StorageStatusMap { // dashboard position depends on the order WARNING(StorageDomain.Status.UNATTACHED, StorageDomain.Status.INACTIVE, StorageDomain.Status.MAINTENANCE, StorageDomain.Status.PREPARING_FOR_MAINTENANCE, StorageDomain.Status.MIXED, StorageDomain.Status.DETACHING, StorageDomain.Status.ACTIVATING), UP(StorageDomain.Status.ACTIVE), DOWN(StorageDomain.Status.UNKNOWN, StorageDomain.Status.LOCKED); private final List<StorageDomain.Status> values; private static Map<StorageDomain.Status, StorageStatusMap> map = new EnumMap<>(StorageDomain.Status.class); static { for (StorageStatusMap item : StorageStatusMap.values()) { for (StorageDomain.Status status : item.getValues()) { map.put(status, item); } } } StorageStatusMap(StorageDomain.Status... values) { this.values = Collections.unmodifiableList(Arrays.asList(values)); } public List<StorageDomain.Status> getValues() { return values; } public static DashboardPosition getDashboardPosition(StorageDomain.Status status) { StorageStatusMap result = map.get(status); return result == null ? DashboardPosition.UNKNOWN : DashboardPosition.fromValue(result.ordinal()); } }