/******************************************************************************* * Copyright (c) 2010 Robert "Unlogic" Olofsson (unlogic@unlogic.se). * All rights reserved. This program and the accompanying materials * are made available under the terms of the GNU Lesser Public License v3 * which accompanies this distribution, and is available at * http://www.gnu.org/licenses/lgpl-3.0-standalone.html ******************************************************************************/ package se.unlogic.standardutils.enums; import java.lang.reflect.Field; import java.util.ArrayList; public class EnumUtils { public static <Type extends Enum<Type>> boolean isEnum(Class<Type> e, String s) { try { Enum.valueOf(e, s); return true; } catch (IllegalArgumentException ex) { return false; } catch (NullPointerException ex) { return false; } } public static <Type extends Enum<Type>> Type toEnum(Class<Type> e, String s) { try { return Type.valueOf(e, s); } catch (IllegalArgumentException ex) { return null; } catch (NullPointerException ex) { return null; } } public static <Type extends Enum<Type>> ArrayList<Type> toEnum(Class<Type> e, String[] values) { ArrayList<Type> enumValues = new ArrayList<Type>(); for (String value : values) { Type enumValue = toEnum(e, value); if (enumValue != null) { enumValues.add(enumValue); } } if (enumValues.isEmpty()) { return null; } else { return enumValues; } } public static <Type extends Enum<Type>> Type toEnum(Type[] es, int ordinal) { for (Type typeValue : es) { if (typeValue.ordinal() == ordinal) { return typeValue; } } return null; } public static Enum<?> getInstanceFromField(Field field) { Object[] enumValues = field.getType().getEnumConstants(); return (Enum<?>) enumValues[0]; } public static Enum<?>[] getValuesFromField(Field field) { Object[] enumValues = field.getType().getEnumConstants(); return (Enum[]) enumValues; } }