package org.ovirt.engine.core.compat; import java.util.ArrayList; import java.util.Arrays; import java.util.List; import org.ovirt.engine.core.compat.CompatException; public class EnumCompat { /** * Returns the Enum instances as an Arraylist */ public static <T extends Enum> ArrayList<T> GetValues(Class<T> clazz) { ArrayList<String> returnValues = new ArrayList<String>(); if (!clazz.isEnum()) { throw new CompatException("Class is not an Enum: " + clazz.getName()); } return new ArrayList(Arrays.asList(clazz.getEnumConstants())); } /** * Returns the Enum names as an Arraylist */ public static <T extends Enum> String[] GetNames(Class<T> clazz) { ArrayList<String> returnValues = new ArrayList<String>(); if (!clazz.isEnum()) { throw new CompatException("Class is not an Enum: " + clazz.getName()); } for (Enum e : clazz.getEnumConstants()) { returnValues.add(e.name()); } return returnValues.toArray(new String[0]); } /** * Returns the name of an enum based on its ordinal value */ public static String GetName(Class enumerationType, int val) { String enumName = null; if (!enumerationType.isEnum()) { throw new CompatException("Class is not an Enum: " + enumerationType.getName()); } try { for (Object obj : enumerationType.getEnumConstants()) { Enum enumObject = (Enum) obj; if (enumObject.ordinal() == val) { enumName = enumObject.name(); break; } } } catch (Exception ex) { throw new RuntimeException(ex); } return enumName; } /** * Returns the ordinal values of the enum */ public static <T extends Enum> int[] GetIntValues(Class<T> enumerationType) { List<T> enums = GetValues(enumerationType); int size = enums.size(); int[] returnValue = new int[size]; for (int x = 0; x < size; x++) { if (!(enums.get(x) instanceof Enum)) throw new CompatException("Class is not an Enum: " + enums.get(x)); returnValue[x] = ((Enum) enums.get(x)).ordinal(); } return returnValue; } /** * Checks whether the enum name is defined */ public static <T extends Enum> boolean IsDefined(Class<T> clazz, String name) { return Arrays.asList(EnumCompat.GetNames(clazz)).contains(name); } }