001 /* 002 * Jpkg - Java library and tools for operating system package creation. 003 * 004 * Copyright (c) 2007-2008 Three Rings Design, Inc. 005 * All rights reserved. 006 * 007 * Redistribution and use in source and binary forms, with or without 008 * modification, are permitted provided that the following conditions 009 * are met: 010 * 1. Redistributions of source code must retain the above copyright 011 * notice, this list of conditions and the following disclaimer. 012 * 2. Redistributions in binary form must reproduce the above copyright 013 * notice, this list of conditions and the following disclaimer in the 014 * documentation and/or other materials provided with the distribution. 015 * 3. Neither the name of the copyright owner nor the names of contributors 016 * may be used to endorse or promote products derived from this software 017 * without specific prior written permission. 018 * 019 * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" 020 * AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE 021 * IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE 022 * ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE 023 * LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR 024 * CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF 025 * SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS 026 * INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN 027 * CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) 028 * ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 029 * POSSIBILITY OF SUCH DAMAGE. 030 */ 031 package com.threerings.antidote; 032 033 import java.util.Locale; 034 035 /** 036 * A static helper utility for dealing with enums. 037 */ 038 public class EnumHelper 039 { 040 /** The {@link Locale} all strings representing enums are assumed to be in. */ 041 public static final Locale LOCALE = Locale.US; 042 043 /** 044 * Attempts to find the corresponding enum field from the given string. Case will 045 * be ignored. Any "-" in the enumString will be turned into a "_" when mapping to the enum 046 * constant. Returns the enum field if found, null otherwise. 047 */ 048 public static <T extends Enum<T>> T parseEnum (String enumString, Class<T> enumClass) 049 { 050 final String upperCase = enumString.toUpperCase(EnumHelper.LOCALE); 051 final String upperCaseReplace = upperCase.replaceAll("-", "_"); 052 for (final T enumType : enumClass.getEnumConstants()) { 053 if (enumType.name().equals(upperCaseReplace)) { 054 return enumType; 055 } 056 } 057 058 return null; 059 } 060 }