1
0
mirror of https://github.com/twiglet/cs2j.git synced 2025-01-18 13:15:17 +01:00

sync from RS: Add better enum parsing

This commit is contained in:
Kevin Glynn 2012-04-10 14:45:01 +02:00
parent 13c808d373
commit 2c5e4afa3b
2 changed files with 44 additions and 2 deletions

View File

@ -49,8 +49,10 @@
<Return>System.String</Return> <Return>System.String</Return>
</Method> </Method>
<Method> <Method>
<Imports /> <Imports>
<Java>Enum.valueOf((Class*[? extends Enum]*)${enumType:15}, ${value})</Java> <Import>CS2JNet.System.EnumSupport</Import>
</Imports>
<Java>EnumSupport.Parse((Class*[? extends Enum]*)${enumType:15}, ${value})</Java>
<Params> <Params>
<Param> <Param>
<Type>System.Type</Type> <Type>System.Type</Type>
@ -64,6 +66,28 @@
<Name>Parse</Name> <Name>Parse</Name>
<Return>System.Object</Return> <Return>System.Object</Return>
</Method> </Method>
<Method>
<Imports>
<Import>CS2JNet.System.EnumSupport</Import>
</Imports>
<Java>EnumSupport.Parse((Class*[? extends Enum]*)${enumType:15}, ${value}, ${ignoreCase})</Java>
<Params>
<Param>
<Type>System.Type</Type>
<Name>enumType</Name>
</Param>
<Param>
<Type>System.String</Type>
<Name>value</Name>
</Param>
<Param>
<Type>System.Boolean</Type>
<Name>ignoreCase</Name>
</Param>
</Params>
<Name>Parse</Name>
<Return>System.Object</Return>
</Method>
</Methods> </Methods>
<Properties /> <Properties />
<Events /> <Events />

View File

@ -40,5 +40,23 @@ public class EnumSupport {
return e.name(); return e.name();
} }
}
public static Object Parse(Class<? extends Enum> enumClass, String name) throws IllegalArgumentException {
return Parse(enumClass, name, false);
}
public static Object Parse(Class<? extends Enum> enumClass, String name, boolean ignoreCase) throws IllegalArgumentException {
if(!ignoreCase){
return Enum.valueOf(enumClass, name);
}
Enum[] vals = enumClass.getEnumConstants();
for(Enum val : vals){
if(val.toString().equalsIgnoreCase(name)){
return val;
}
}
throw new IllegalArgumentException(name + " is not a valid " + enumClass.getName());
} }
} }