package com.smartgwt.client.util; import com.smartgwt.client.types.ValueEnum; /** * Utils for manipulate with a Enum. */ public class EnumUtil { /** * Get a enum item by value. * * @param enums * - enum items * @param value * - enum value * @return enum item * * @see com.smartgwt.client.types.ValueEnum */ public static <TYPE extends ValueEnum> TYPE getEnum(TYPE[] enums, String value) { if (value == null) { return null; } for (TYPE anEnum : enums) { if (anEnum.getValue().equals(value)) { return anEnum; } } return null; } /** * Get a enum items by values. * <p> * The java 1.6 does not support a code " * {@code (TYPE[]) new Object[values.length];". Also, the GWT does not support a reflection api ( * {@link java.lang.reflect.Array#newInstance}). So you need to pass an * array argument to store the result. * * @param enums * - enum items * @param values * - enum values * @param result * - array to store the result * @return enum items */ public static <TYPE extends ValueEnum> TYPE[] getEnums(TYPE[] enums, String[] values, TYPE[] result) { if (values == null) { return result; } for (int i = 0; i < values.length; i++) { String value = values[i]; result[i] = null; for (TYPE anEnum : enums) { if (anEnum.getValue().equals(value)) { result[i] = anEnum; break; } } } return result; } /** * Get a enum items by values. * <p> * This method is not compatible with the java 1.6. * * @param enums * - enum items * @param values * - enum values * @return enum items * @deprecated use {{@link #getEnums(ValueEnum[], String[], ValueEnum[])} * method * @see EnumUtil#getEnums(ValueEnum[], String[], ValueEnum[]) */ public static <TYPE extends ValueEnum> ValueEnum[] getEnums(TYPE[] enums, String[] values) { if (values == null) { return null; } ValueEnum result[] = new ValueEnum[values.length]; for (int i = 0; i < values.length; i++) { String value = values[i]; result[i] = null; for (TYPE anEnum : enums) { if (anEnum.getValue().equals(value)) { result[i] = (ValueEnum) anEnum; break; } } } return result; } }