mirror of
https://github.com/essentials/Essentials.git
synced 2025-08-12 01:25:26 +02:00
clean EnumConverter
This commit is contained in:
@@ -4,12 +4,14 @@ import java.util.EnumMap;
|
|||||||
import java.util.HashMap;
|
import java.util.HashMap;
|
||||||
import java.util.Locale;
|
import java.util.Locale;
|
||||||
import java.util.Map;
|
import java.util.Map;
|
||||||
|
import java.util.regex.Pattern;
|
||||||
import org.apache.commons.lang.Validate;
|
import org.apache.commons.lang.Validate;
|
||||||
|
|
||||||
|
|
||||||
public class EnumConverter<E extends Enum<E>> implements ArgumentsParser<E>, Serializer<E>
|
public class EnumConverter<E extends Enum<E>> implements ArgumentsParser<E>, Serializer<E>
|
||||||
{
|
{
|
||||||
private static final Map<Class, EnumConverter> converterMap = new HashMap<Class, EnumConverter>();
|
private static final Map<Class, EnumConverter> converterMap = new HashMap<Class, EnumConverter>();
|
||||||
|
private static final Pattern REPLACE = Pattern.compile("[_-]");
|
||||||
private final Map<String, E> enumMap = new HashMap<String, E>();
|
private final Map<String, E> enumMap = new HashMap<String, E>();
|
||||||
private final Map<E, String> serializedMap;
|
private final Map<E, String> serializedMap;
|
||||||
|
|
||||||
@@ -18,8 +20,8 @@ public class EnumConverter<E extends Enum<E>> implements ArgumentsParser<E>, Ser
|
|||||||
serializedMap = new EnumMap<E, String>(enumClass);
|
serializedMap = new EnumMap<E, String>(enumClass);
|
||||||
for (E t : enumClass.getEnumConstants())
|
for (E t : enumClass.getEnumConstants())
|
||||||
{
|
{
|
||||||
enumMap.put(t.name().replaceAll("[_-]", "").toLowerCase(Locale.ENGLISH), t);
|
enumMap.put(cleanString(t.name()), t);
|
||||||
serializedMap.put(t, t.name().replace("_", "-").toLowerCase(Locale.ENGLISH));
|
serializedMap.put(t, prettifyString(t.name()));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -41,7 +43,8 @@ public class EnumConverter<E extends Enum<E>> implements ArgumentsParser<E>, Ser
|
|||||||
public ParserResult<E> parse(final String... args)
|
public ParserResult<E> parse(final String... args)
|
||||||
{
|
{
|
||||||
Validate.notEmpty(args);
|
Validate.notEmpty(args);
|
||||||
final E e = enumMap.get(args[0].replaceAll("[_-]", "").toLowerCase(Locale.ENGLISH));
|
Validate.notEmpty(args[0]);
|
||||||
|
final E e = enumMap.get(cleanString(args[0]));
|
||||||
if (e == null)
|
if (e == null)
|
||||||
{
|
{
|
||||||
throw new IllegalArgumentException();
|
throw new IllegalArgumentException();
|
||||||
@@ -54,4 +57,12 @@ public class EnumConverter<E extends Enum<E>> implements ArgumentsParser<E>, Ser
|
|||||||
{
|
{
|
||||||
return serializedMap.get(input);
|
return serializedMap.get(input);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private String cleanString(final String input) {
|
||||||
|
return REPLACE.matcher(input).replaceAll("").toLowerCase(Locale.ENGLISH);
|
||||||
|
}
|
||||||
|
|
||||||
|
private String prettifyString(final String input) {
|
||||||
|
return input.replace("_", "-").toLowerCase(Locale.ENGLISH);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user