/* * file: EnumHelper.java * author: Jon Iles * copyright: (c) Packwood Software 2010 * date: 31/03/2010 */ /* * This library is free software; you can redistribute it and/or modify it * under the terms of the GNU Lesser General Public License as published by the * Free Software Foundation; either version 2.1 of the License, or (at your * option) any later version. * * This library is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY * or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public * License for more details. * * You should have received a copy of the GNU Lesser General Public License * along with this library; if not, write to the Free Software Foundation, Inc., * 59 Temple Place, Suite 330, Boston, MA 02111-1307, USA. */ package net.sf.mpxj.common; import java.lang.reflect.Array; import java.util.EnumSet; import net.sf.mpxj.MpxjEnum; /** * Utility method for working with enumerations. */ public final class EnumHelper { /** * Creates a lookup array based on the "value" associated with an MpxjEnum. * * @param <E> target enumeration * @param c enumeration class * @return lookup array */ public static final <E extends Enum<E>> E[] createTypeArray(Class<E> c) { return createTypeArray(c, 0); } /** * Creates a lookup array based on the "value" associated with an MpxjEnum. * * @param <E> target enumeration * @param c enumeration class * @param arraySizeOffset offset to apply to the array size * @return lookup array */ @SuppressWarnings( { "unchecked" }) public static final <E extends Enum<E>> E[] createTypeArray(Class<E> c, int arraySizeOffset) { EnumSet<E> set = EnumSet.allOf(c); E[] array = (E[]) Array.newInstance(c, set.size() + arraySizeOffset); for (E e : set) { int index = ((MpxjEnum) e).getValue(); if (index >= 0) { array[index] = e; } } return array; } }